From 12625301f16e0105a34b157757cdc76d66c83729 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Oct 2025 14:49:05 +0000 Subject: [PATCH 1/2] Initial plan From 30cfc49831a57d2ca22b7772d687208c8825c2a9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 19 Oct 2025 15:01:22 +0000 Subject: [PATCH 2/2] Add Avalonia UI project with basic implementation Co-authored-by: Capnode <37275126+Capnode@users.noreply.github.com> --- AVALONIA_MIGRATION.md | 166 ++++++++++++++++++ Algoloop.Avalonia/Algoloop.Avalonia.csproj | 41 +++++ Algoloop.Avalonia/App.axaml | 14 ++ Algoloop.Avalonia/App.axaml.cs | 124 +++++++++++++ Algoloop.Avalonia/Model/AboutModel.cs | 9 + Algoloop.Avalonia/Model/MainService.cs | 29 +++ Algoloop.Avalonia/Program.cs | 31 ++++ Algoloop.Avalonia/Resources/Add.png | Bin 0 -> 3179 bytes Algoloop.Avalonia/Resources/AddList.png | Bin 0 -> 179 bytes Algoloop.Avalonia/Resources/AddText.png | Bin 0 -> 271 bytes Algoloop.Avalonia/Resources/Algoloop.png | Bin 0 -> 26487 bytes Algoloop.Avalonia/Resources/Algoloop1080.png | Bin 0 -> 23863 bytes Algoloop.Avalonia/Resources/AlgoloopColor.png | Bin 0 -> 19162 bytes Algoloop.Avalonia/Resources/AlgoloopIcon.ico | Bin 0 -> 121576 bytes .../Resources/AlgoloopSplash.png | Bin 0 -> 14523 bytes Algoloop.Avalonia/Resources/Checklist.png | Bin 0 -> 297 bytes Algoloop.Avalonia/Resources/Clone.png | Bin 0 -> 739 bytes Algoloop.Avalonia/Resources/Delete.png | Bin 0 -> 662 bytes Algoloop.Avalonia/Resources/Down.png | Bin 0 -> 3284 bytes Algoloop.Avalonia/Resources/Download1.png | Bin 0 -> 580 bytes Algoloop.Avalonia/Resources/Download2.png | Bin 0 -> 219 bytes Algoloop.Avalonia/Resources/Download3.png | Bin 0 -> 240 bytes Algoloop.Avalonia/Resources/Exit.png | Bin 0 -> 173 bytes Algoloop.Avalonia/Resources/Export.png | Bin 0 -> 550 bytes Algoloop.Avalonia/Resources/Help.png | Bin 0 -> 294 bytes Algoloop.Avalonia/Resources/Import.png | Bin 0 -> 577 bytes Algoloop.Avalonia/Resources/Info.png | Bin 0 -> 350 bytes Algoloop.Avalonia/Resources/MoveDown.png | Bin 0 -> 372 bytes Algoloop.Avalonia/Resources/MoveUp.png | Bin 0 -> 376 bytes Algoloop.Avalonia/Resources/New.png | Bin 0 -> 574 bytes Algoloop.Avalonia/Resources/Palette.png | Bin 0 -> 689 bytes Algoloop.Avalonia/Resources/Refresh.png | Bin 0 -> 937 bytes Algoloop.Avalonia/Resources/Run.png | Bin 0 -> 373 bytes Algoloop.Avalonia/Resources/Save.png | Bin 0 -> 286 bytes Algoloop.Avalonia/Resources/SortTextDown.png | Bin 0 -> 263 bytes Algoloop.Avalonia/Resources/Stop.png | Bin 0 -> 410 bytes Algoloop.Avalonia/Resources/Tools.png | Bin 0 -> 410 bytes Algoloop.Avalonia/Resources/Up.png | Bin 0 -> 284 bytes .../ViewModels/LogItemHandler.cs | 45 +++++ Algoloop.Avalonia/ViewModels/MainViewModel.cs | 94 ++++++++++ Algoloop.Avalonia/ViewModels/ViewModelBase.cs | 23 +++ .../ViewModels/ViewModelLocator.cs | 33 ++++ Algoloop.Avalonia/Views/MainWindow.axaml | 92 ++++++++++ Algoloop.Avalonia/Views/MainWindow.axaml.cs | 96 ++++++++++ Algoloop.Avalonia/app.manifest | 77 ++++++++ Algoloop.sln | 22 +++ 46 files changed, 896 insertions(+) create mode 100644 AVALONIA_MIGRATION.md create mode 100644 Algoloop.Avalonia/Algoloop.Avalonia.csproj create mode 100644 Algoloop.Avalonia/App.axaml create mode 100644 Algoloop.Avalonia/App.axaml.cs create mode 100644 Algoloop.Avalonia/Model/AboutModel.cs create mode 100644 Algoloop.Avalonia/Model/MainService.cs create mode 100644 Algoloop.Avalonia/Program.cs create mode 100644 Algoloop.Avalonia/Resources/Add.png create mode 100644 Algoloop.Avalonia/Resources/AddList.png create mode 100644 Algoloop.Avalonia/Resources/AddText.png create mode 100644 Algoloop.Avalonia/Resources/Algoloop.png create mode 100644 Algoloop.Avalonia/Resources/Algoloop1080.png create mode 100644 Algoloop.Avalonia/Resources/AlgoloopColor.png create mode 100644 Algoloop.Avalonia/Resources/AlgoloopIcon.ico create mode 100644 Algoloop.Avalonia/Resources/AlgoloopSplash.png create mode 100644 Algoloop.Avalonia/Resources/Checklist.png create mode 100644 Algoloop.Avalonia/Resources/Clone.png create mode 100644 Algoloop.Avalonia/Resources/Delete.png create mode 100644 Algoloop.Avalonia/Resources/Down.png create mode 100644 Algoloop.Avalonia/Resources/Download1.png create mode 100644 Algoloop.Avalonia/Resources/Download2.png create mode 100644 Algoloop.Avalonia/Resources/Download3.png create mode 100644 Algoloop.Avalonia/Resources/Exit.png create mode 100644 Algoloop.Avalonia/Resources/Export.png create mode 100644 Algoloop.Avalonia/Resources/Help.png create mode 100644 Algoloop.Avalonia/Resources/Import.png create mode 100644 Algoloop.Avalonia/Resources/Info.png create mode 100644 Algoloop.Avalonia/Resources/MoveDown.png create mode 100644 Algoloop.Avalonia/Resources/MoveUp.png create mode 100644 Algoloop.Avalonia/Resources/New.png create mode 100644 Algoloop.Avalonia/Resources/Palette.png create mode 100644 Algoloop.Avalonia/Resources/Refresh.png create mode 100644 Algoloop.Avalonia/Resources/Run.png create mode 100644 Algoloop.Avalonia/Resources/Save.png create mode 100644 Algoloop.Avalonia/Resources/SortTextDown.png create mode 100644 Algoloop.Avalonia/Resources/Stop.png create mode 100644 Algoloop.Avalonia/Resources/Tools.png create mode 100644 Algoloop.Avalonia/Resources/Up.png create mode 100644 Algoloop.Avalonia/ViewModels/LogItemHandler.cs create mode 100644 Algoloop.Avalonia/ViewModels/MainViewModel.cs create mode 100644 Algoloop.Avalonia/ViewModels/ViewModelBase.cs create mode 100644 Algoloop.Avalonia/ViewModels/ViewModelLocator.cs create mode 100644 Algoloop.Avalonia/Views/MainWindow.axaml create mode 100644 Algoloop.Avalonia/Views/MainWindow.axaml.cs create mode 100644 Algoloop.Avalonia/app.manifest diff --git a/AVALONIA_MIGRATION.md b/AVALONIA_MIGRATION.md new file mode 100644 index 0000000000..afdaa6bd31 --- /dev/null +++ b/AVALONIA_MIGRATION.md @@ -0,0 +1,166 @@ +# Avalonia UI Migration Documentation + +## Overview + +This document describes the WPF to Avalonia UI migration for the Algoloop application. The migration creates a cross-platform UI using Avalonia UI 11.2.2 targeting .NET 8.0. + +## Project Structure + +### New Project: Algoloop.Avalonia + +Located in: `Algoloop.Avalonia/` + +**Key Files:** +- `Program.cs` - Application entry point +- `App.axaml` / `App.axaml.cs` - Application configuration with Fluent theme +- `Views/MainWindow.axaml` / `Views/MainWindow.axaml.cs` - Main application window +- `ViewModels/` - Stub ViewModels for initial implementation +- `Model/` - Business logic models +- `Resources/` - UI resources (icons, images) + +## How to Run + +### Prerequisites +- .NET 8.0 SDK or later +- For Windows: No additional requirements +- For Linux: X11 display server +- For macOS: XQuartz (X11 for macOS) + +### Build and Run + +```bash +# Navigate to repository root +cd /path/to/Algoloop + +# Restore dependencies +dotnet restore Algoloop.Avalonia/Algoloop.Avalonia.csproj + +# Build the project +dotnet build Algoloop.Avalonia/Algoloop.Avalonia.csproj + +# Run the application +dotnet run --project Algoloop.Avalonia/Algoloop.Avalonia.csproj +``` + +### Running from Visual Studio +1. Open `Algoloop.sln` in Visual Studio 2022 or later +2. Set `Algoloop.Avalonia` as the startup project +3. Press F5 to run + +## Current Implementation Status + +### ✅ Completed +- [x] Created Algoloop.Avalonia project targeting .NET 8.0 +- [x] Added Avalonia NuGet packages (11.2.2) +- [x] Implemented App.axaml with Fluent theme +- [x] Created MainWindow with basic UI layout +- [x] Added Program.cs entry point +- [x] Integrated ViewModelLocator and dependency injection +- [x] Configured logging infrastructure +- [x] Added resources (icons, images) +- [x] Application builds successfully +- [x] Application starts (requires display server) + +### ⚠️ Known Limitations + +1. **ViewModels are Stubs**: Current ViewModels are minimal implementations. Full business logic from WPF ViewModels needs to be migrated. + +2. **View Implementations**: Tab content views (Markets, Strategies, Research, Logs) show placeholder text. These need to be implemented with proper Avalonia controls. + +3. **WPF-Specific Dependencies**: The following WPF-specific features need Avalonia equivalents: + - DevExpress ThemedWindow → Replaced with standard Avalonia Window + - WebView2 (for Research tab) → Needs cross-platform alternative + - Extended WPF Toolkit controls → Need Avalonia replacements + - OxyPlot.Wpf → Should use OxyPlot.Avalonia + - StockSharp charting → Needs evaluation for Avalonia compatibility + +4. **Missing Features**: + - Settings dialog + - About dialog + - Theme switching + - Detailed tab implementations + - Data binding to real business logic + - Chart implementations + +5. **Platform-Specific Considerations**: + - Window placement/state persistence uses WPF APIs - needs Avalonia solution + - Some keyboard shortcuts may behave differently + - File dialogs use platform-native implementations + +## Migration Notes + +### Replaced Components + +| WPF Component | Avalonia Replacement | Status | +|---------------|---------------------|--------| +| dx:ThemedWindow | Window | ✅ Complete | +| System.Windows.Controls.Menu | Avalonia.Controls.Menu | ✅ Complete | +| System.Windows.Controls.TabControl | Avalonia.Controls.TabControl | ✅ Complete | +| StatusBar | Border + TextBlock | ✅ Complete | +| WebView2 | Placeholder TextBlock | ⚠️ Needs replacement | + +### Code Changes Made + +1. **Removed WPF Dependencies**: + - Changed from `UseWPF` to Avalonia SDK + - Removed Windows-specific targeting + - Updated to .NET 8.0 + +2. **XAML Migration**: + - Changed namespace from `http://schemas.microsoft.com/winfx/2006/xaml/presentation` to `https://github.com/avaloniaui` + - Updated property names (e.g., `DockPanel.Dock` works the same) + - Disabled compiled bindings for dynamic resource access + +3. **Code-Behind Changes**: + - Changed `System.Windows.Window` to `Avalonia.Controls.Window` + - Updated event handler signatures + - Cross-platform URL opening logic + +## Next Steps + +To complete the migration: + +1. **Implement Full ViewModels**: + - Port business logic from WPF ViewModels + - Remove WPF-specific dependencies (Window, DataGridColumn, etc.) + - Implement proper commands and data binding + +2. **Implement View Content**: + - Create MarketsView.axaml + - Create StrategiesView.axaml + - Create LogView.axaml + - Replace WebView2 in Research tab + +3. **Add Dialogs**: + - Settings dialog + - About dialog + - Other modal dialogs + +4. **Charting**: + - Integrate OxyPlot.Avalonia + - Port chart implementations + +5. **Testing**: + - Test on Windows, Linux, and macOS + - Verify data binding and commands + - Performance testing + +## References + +- [Avalonia UI Documentation](https://docs.avaloniaui.net/) +- [Avalonia Samples](https://github.com/AvaloniaUI/Avalonia.Samples) +- [WPF to Avalonia Migration Guide](https://docs.avaloniaui.net/docs/guides/platforms/wpf-migration) +- [Avalonia Community](https://github.com/AvaloniaUI/Avalonia/discussions) + +## Support + +For issues related to the Avalonia migration, please: +1. Check existing GitHub issues +2. Review Avalonia documentation +3. Create a new issue with details about the problem + +--- + +**Last Updated**: October 2025 +**Avalonia Version**: 11.2.2 +**Target Framework**: .NET 8.0 diff --git a/Algoloop.Avalonia/Algoloop.Avalonia.csproj b/Algoloop.Avalonia/Algoloop.Avalonia.csproj new file mode 100644 index 0000000000..a64a1cad61 --- /dev/null +++ b/Algoloop.Avalonia/Algoloop.Avalonia.csproj @@ -0,0 +1,41 @@ + + + WinExe + net8.0 + x64 + x64 + enable + true + app.manifest + Resources\AlgoloopIcon.ico + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Algoloop.Avalonia/App.axaml b/Algoloop.Avalonia/App.axaml new file mode 100644 index 0000000000..33fadb4a50 --- /dev/null +++ b/Algoloop.Avalonia/App.axaml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/Algoloop.Avalonia/App.axaml.cs b/Algoloop.Avalonia/App.axaml.cs new file mode 100644 index 0000000000..2f6dc94f73 --- /dev/null +++ b/Algoloop.Avalonia/App.axaml.cs @@ -0,0 +1,124 @@ +/* + * Copyright 2018 Capnode AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using Algoloop.Avalonia.Views; +using Algoloop.Wpf.Model; +using Algoloop.Wpf.ViewModels; +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; +using QuantConnect.Configuration; +using QuantConnect.Logging; +using System; +using System.Globalization; +using System.IO; +using System.Reflection; +using System.Threading.Tasks; + +namespace Algoloop.Avalonia +{ + public partial class App : Application + { + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + + // Set working directory to exe directory + string unc = Assembly.GetExecutingAssembly().Location; + string folder = Path.GetDirectoryName(unc) ?? string.Empty; + Directory.SetCurrentDirectory(folder); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + // Set Log handler + string logfile = Path.Combine(MainService.GetProgramDataFolder(), AboutModel.Product + ".log"); + File.Delete(logfile); + Log.DebuggingEnabled = Config.GetBool("debug-mode", false); + Log.DebuggingLevel = Config.GetInt("debug-level", 1); + Log.LogHandler = new LogItemHandler(logfile); + + // Exception Handling Wiring + AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; + TaskScheduler.UnobservedTaskException += UnobservedTaskExceptionHandler; + + desktop.MainWindow = new MainWindow(); + + desktop.ShutdownRequested += OnShutdownRequested; + } + + base.OnFrameworkInitializationCompleted(); + } + + private void OnShutdownRequested(object? sender, ShutdownRequestedEventArgs e) + { + ViewModelLocator.ResearchViewModel?.StopJupyter(); + ViewModelLocator.MainViewModel?.SaveConfig(); + Log.Trace($"Exit \"{AboutModel.Product}\""); + } + + public static void LogError(Exception ex, string? message = null) + { + if (string.IsNullOrEmpty(message)) + { + Log.Error($"{ex.GetType()}: {ex.Message}", true); + } + else + { + Log.Error($"{message} {ex.GetType()}: {ex.Message}", true); + } + + if (ex.InnerException != null) + { + LogError(ex.InnerException, message); + } + + if (ex is ReflectionTypeLoadException rex) + { + foreach (Exception exception in rex.LoaderExceptions ?? Array.Empty()) + { + LogError(exception, message); + } + } + } + + private void UnobservedTaskExceptionHandler(object? sender, UnobservedTaskExceptionEventArgs e) + { + e?.SetObserved(); // Prevents the Program from terminating. + + if (e.Exception != null && e.Exception is Exception tuex) + { + LogError(tuex, nameof(UnobservedTaskExceptionHandler)); + } + else if (sender is Exception ex) + { + LogError(ex, nameof(UnobservedTaskExceptionHandler)); + } + } + + private void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) + { + if (e.ExceptionObject != null && e.ExceptionObject is Exception uex) + { + LogError(uex, nameof(UnhandledExceptionHandler)); + } + else if (sender is Exception ex) + { + Log.Error(ex, nameof(UnhandledExceptionHandler)); + } + } + } +} diff --git a/Algoloop.Avalonia/Model/AboutModel.cs b/Algoloop.Avalonia/Model/AboutModel.cs new file mode 100644 index 0000000000..1a345d5608 --- /dev/null +++ b/Algoloop.Avalonia/Model/AboutModel.cs @@ -0,0 +1,9 @@ +namespace Algoloop.Wpf.Model +{ + public static class AboutModel + { + public static string Product => "Algoloop"; + public static string Title => "Algoloop"; + public static string Version => "1.0.0-avalonia"; + } +} diff --git a/Algoloop.Avalonia/Model/MainService.cs b/Algoloop.Avalonia/Model/MainService.cs new file mode 100644 index 0000000000..af768d2832 --- /dev/null +++ b/Algoloop.Avalonia/Model/MainService.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Reflection; + +namespace Algoloop.Wpf.Model +{ + public static class MainService + { + public static string GetProgramFolder() + { + string unc = Assembly.GetExecutingAssembly().Location; + return Path.GetDirectoryName(unc) ?? string.Empty; + } + + public static string GetProgramDataFolder() + { + string programDataFolder = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + AboutModel.Product); + + if (!Directory.Exists(programDataFolder)) + { + Directory.CreateDirectory(programDataFolder); + } + + return programDataFolder; + } + } +} diff --git a/Algoloop.Avalonia/Program.cs b/Algoloop.Avalonia/Program.cs new file mode 100644 index 0000000000..88e8713621 --- /dev/null +++ b/Algoloop.Avalonia/Program.cs @@ -0,0 +1,31 @@ +/* + * Copyright 2018 Capnode AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using Avalonia; +using System; + +namespace Algoloop.Avalonia +{ + internal sealed class Program + { + [STAThread] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .LogToTrace(); + } +} diff --git a/Algoloop.Avalonia/Resources/Add.png b/Algoloop.Avalonia/Resources/Add.png new file mode 100644 index 0000000000000000000000000000000000000000..1b21836776313d254da7310a852178e11833c3e8 GIT binary patch literal 3179 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 RR_6c!002ovPDHLkV1g^T>Ae5| literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/AddList.png b/Algoloop.Avalonia/Resources/AddList.png new file mode 100644 index 0000000000000000000000000000000000000000..4cfb8987e5a38e920f4618676fec6b4167aed631 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%zcg z#WBR9H#tEfKc`YiGySmPdhGU&xQXyH%j?wU;M+~XG3*vCU~2UQqU1%rfsPFqUQs_o@eT`=g7 zq_Jk{<00nw3hfFv82vY>Te!dkM>xkL-f>Xc!Y$5lwPjY>%N`F0FBelZc&aru!*AOEZ{ZjLS%qw0%6|wNzn*j}T8I_61(>hG8=3!X>WL=Rdaf VQ_iNL+$;b9002ovPDHLkV1gMMb#?#% literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Algoloop.png b/Algoloop.Avalonia/Resources/Algoloop.png new file mode 100644 index 0000000000000000000000000000000000000000..5941adae3b2483b97856ab043353ed060c08d8d5 GIT binary patch literal 26487 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 literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/AlgoloopIcon.ico b/Algoloop.Avalonia/Resources/AlgoloopIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c1ca3ca5465af9b79ffa4ab3ba6bdbe5ae202712 GIT binary patch literal 121576 zcmeEP2Ut_d7QO+bsDL6MNbiWEA{MZKqFAt3>}6GKD`Iab0aWaYij~+4cEq->4SN^Y zfN}Rm=NP?1UL)b_!#4!oD&jrSw-UbHg5O}a>NfIAT?e0rZ&vi3jT4sJ`enq2Vk~GI>5!h1UQ`VpWvi?0aI!O z{A~E?2-ig%G5z{e9MI1M?+@U82Jjhx^v>{A0E0f>4M&{M@B)#KL|ifd{(@W(t%!dg z;ol?v-|&zr{$so!h5QWg{-h`^<*^i=;A)DeSbmx!F8OBg%|*T`U~oa4VE7F9{t=nZz*W-a>EEPpC^M9arQj z4W%VLV-4R3p7amvkY1ji5k@HZ7c#)YiDxOuoi3i`;md+X8t|-q7Mz3fU(HY^WK110 zWDA;g2fgOu84G_3{t`UohQAZ5TX%kY0jU(AUw)&O`^R#pm;+r2z37X{c=I68?3GvLB<|p-5XAPgck0ODyriZq5-Q z4y4a`)JC&9Nkj|&QRGvJV32mei(t@0n%xp*ry*`jYFEHJd+3qwNZ$`}3-Y}ovo#!M z#&OJ7-c(0k1K?lfj=UJnGmwGRcRC`TSQli1hZAiU#A{IBuONr~8N>k}_{($Q z=T9_2U!+NsCIp)U-ro~_dyaT+@cFW|58lE7J^_G%^Z@9@27OKNna6KH?|giG!26U|`2P-`@;rw;_29+HbDox~ZZg)3&X&SAw4H1} zg5p01Or13@3g}x-TPr&MWI2*q%cWOJ zBcH`cBa{~&KOOOXj5j}lyd0C2tiX3DpY()St`-|@dB)hzKOr{_)d|2@9x%j+(}A|v z%vannqi@PO&`_d${$iuePZ{gTb8@qx_6fAs1RW#A>c$6*FDLnpj@VArhApv7EKVCY?SHmb@LjF?E125U~hqCQvA6669 zfq#X#^WPvm$SHIe>OgKiG==WKchs#U8dEvpKlM??z6#zs;F}JfR4=|-|Ewa>X5AN% zKJf>?UI@!h%|sp(trwlqps|6ZgKSW}E{C|A5SRMT&!qf6C_55ztAqA{^v^C)o>ZqM znn3@UulS42l4xqY=`re0VpF7fAc~iT{O4LMy`nAF<9W&#>bz=*E7n&+`4-E$@Ohu; zAXoqLk{M_2E{60J;3S=ND+fki%1y{xE5PIdUr*9QeylYvgI3YWM0+06Nc00l^-Nek z;UXLZ@lx`(KRkXos|V0$GFy4G0(f*hr)*(bjAQsT4uvkv8Ndz>VKw+ z`k%?V`g^~iPa>=vxoH#GcPN)+h3e>OVZ`S8@fqQ9Jz<}>iwj&iN29#sz6nx{Nj z0gL4cBHdN!@kct!9t+vhXYmH^$~f?bbdGA{uQlxWs|wmgwDYpGg|RkOgLAA31!q6q-Ek!81iC}XL-t-%Am5SOe&k~ z6gA-c!ROd1>o1lKR!?O$CkzLFK^~Me|t8c#Q z);EzsWe7|941E*ocblSqv}5az&<1-Kb?7xb_2H<^qxO;X7PS?BBi=>CkA^(=M_NaW z_cf><;rV%1TJO4S8yVPW?f%WCh`-HkND_ z+Pyg(T$7S~0DDP~a6~^aNe}g!L+PX)(b9JAQH&jKXaPU6w+%(Q6G%_>Tn0_}cMzwE?tTI6a`J71 z(&bRt65~+7LNa3wno9T2MP>16j4=Uam{$_^3uR>`^BwhxsXvJNit%8wKk~T%9EcWD zc<}GydsFHs01laX$$ANx2!12vyC;91)OX~^B2IN@?lz3~ugS_np?5T9uDIbL$tTU< z%tl$_{?Y53Ha$h_2*%?`$``Od4R8JL=W`SCC3MBewj!gj4`bijj8Qt{h^NdUf}Iy&}Wux zpDgEn(rm;JLp|vTdrBGN1L#HeOrl9=nKoz9;geJ|N9yCP>lX3*IdR zU$m)i(wH6fv?ar(+6ak0u;Wpm zo{RjY>NNidXv~gTq!9ppN!L3f%{?i&9^t(QeaCyIp8p`!xd&uBXpeUpQgP+NDLWqM zzdDgyZQL?7nqLq*(2C@M#<|C&(q)3@UCFNEICGykI@MQJ?h&7CXL(=%?9*v%h`wb` ze47QQ7{~BEG_N-nyve7(k>)S7+4DiG1#W1Ogg7N;)!gB;`scfu$Pc+JtwZ@AJRi; z8_R+gtC2R3u0?(q(KfL2T6Ox4mQ1G5f1(+9OEOKmP?A2dEhaaUgkLl_H%1E2{}87I z-Z6dH8FSgiTELcv`bM^Q2|J?@f0Xkl_+Uo-tul6*>(mD_5(WtAo&uZk29iTh4!7);F2kgnm@y!bQfT`DKq};5KminBuK9kmlL?WM6ay`~* zAzo9+sXEmq;oM4!-2OvPeYwSg=9d}kg{RA)Y_hLpOTv#bt^ha8t)jmhxXH;)YwdGgVR ztX~njs6poea$%MK|LgzxVKf#X*@c(ge}=sfGLWx)T6e; z;m+Z^SRBRWTVXxOBm`h{?Tj>ebv*PA_!Wmd{UDnK`Bvy_)Wle*6wSdSACducJa+>o zsc~Z-m?hL0`=8rKHQD7wnyU$Wwv-6X6d24Pu@M z7{}>*34XHo(KtH_`AW_eO2RDpKL>u&52AI>`N!{A8w}lEf#TS6cQE<~SQ`P^ha~e- z=|9?@Q)u_fST8!wvR5R_WIH39+}HBVfu9nK>ai8*c3mnh*-sXL=Gv4$JAPkvyAR$K zWY7It+4P;-wPg-7;xufqo(%cXcts6x1mc?_dFO#2eUq=+uh7TWvc$O2X3-hKIoRT8&SIrc*(25qu-a$_9KrLdEh4=5Pebi3a}rhzy2~<3Wlj1ZCZb%F&Fa2<`N(@gdd6z$CE|5Cr0)$F zuAz)PZ8w#PZ#Ti`IwTX+kAWxML~|pN@U8F-HecCoE7G&F1o|pEe^DE9tP5G7u}ePC z31-R@fu{K%ctuQQwiAZA>v_0(l0r0#XV8GfN*3L)cP?~#yU7AmJOPU9!I*K(?G;bmYFWSEKc%tTr(?61mF7qHK4jvyQ1Pyxd}IRb8o0P#42cr2u% zGSjSt&kX&%&rGSXFrGLanZ_or|y(a$rewvd$qf-xPfse?#WAP$tbGK2!p4te@c1 z9>VRQ*-WG#g0!$Nh&{g#n9hxO{w5R9})^`y%+^<%GEeSvG>AAPUuWj0I?a z64}ON*mLs90PUNN2TtSR>!D3Bw2Zo@Zn7?w8Hzrhv}@FD2*cc?Ip$lM7)zLeMp&c4 zCwkmKd6MfqQRAh4F5G~FbHvBuP&S%fcC=r&P$;+sL;82@Rh{< zZ{R)xIO_s`)`nOVw3p0-_SYKhdQY^lMp?@MOF{h$l7nsr+yABhr(`w?|ED?OZjO4? z&J9CZ@^ulbdy*SK<~YSM_7~L)?Bz}V4YB~ci9DY0(?F~G_|8bKK~#hQRVMM+J)B7I z4IM-_Nl9Mk{0D6gpnvXwI80^i`y^L&@;b(2_&iRP$!j&R_D2JGX;cp0s8MC|8V#2z z>)HQRC$83T3W>otybIo-QF+>CjjH(XOwWnYh_gY%1z}3-JZ-BQvl;VXA=`35r+woz zw+|XXN2cDF2OsEj1~N&yG$*Yhf2a*XUmLdFe0xYGao;D>)7Zm&g27rc#&+T9vXFsZ z(Df@oyFDm(cit!a4)61PlM#>7B~!du_|1T4BIcy6%Wr+gG#?boqCk8V`DO*t06dxp zU8vA{3Cft}s@CC&@~0qQIel6FIpAnVb1ax6W4-IRWhmp;G|0k7q|2dGQT+!UPJ#wD z1Yfge%?MN$e~h64Ymy&${X|Y#uR((rCRl6GFnBwguAm>pMV(K^x*vATCJT>r(8h!I zW?GBZjIirR7GH2d+5+lh;c0?-@!_=BRE$620s8^dAGR&fU@-8PJrBX-A4WaU2iygr zPI*xONgcSakV8wXQ|1pg!uc8$SL}!8zGH9!NA%YmLlqtvP6URVj8lcT9*1rnT`b?8H>F-)YLaFY{ z(R=*epqUoZ=1C_jP<8YY#(2v=G*+yG{E}tTfX9CiK8-{lN!@PFVOiOz{Eq53;IxCB z-^*V%o%57vPW^gGNAdt)0cmKyUs`TKNB#g>t4H#!h;x}4%alsMnP1BiXn!-E86lk~ zjoDvA4tmqX1@$3{%F*5n^u=kd&Z7L~@;87sdCt#P;4Q&(cLlmF?k~eQ&%HL=^Ta@3M#W-QlU{Sb{$OQGD+5_z0PQhAFoZE z5qo;v1D7gWgxvTf(oB9catF)uDyFjZje9Oxp3iDDH(*6Zi_a~5! z!x}y6_$;do(EbA2x5~8V)2DS8Y4E;zxZ0>i9N@W5CTukRMZc*qj`r}OPSP44 z$fGR1j5S58la5f^Njz%W#HTRDDV^4Q)g4X1wO*j8v{`VHZ1%fl zl*7s$^_{SX#IT?~s&u|Z5ypBAvfG@@4;LSOrldxs9}DZ6H}s@=F*?i926>*yUlv>U zzM$SN#(oEE8(n5>blC+RP=WR!6qhrLPA2`gPlh~x2JY?fzR;i$?ilNoLYq7R zJeFyvK%KYLtP7+w zk7U}1@ID-go2!OnLy2J`~%_mOvQof7}YISasJs7vr>b^C}z1>!6Dkv-#=&fJSm z_JZ7^FTswls9q`HVJF5sH0a6SK1>59?-3C#8g01mNRg{q+ z6L*}?fOcSt!}Qovwi0JVNa88)KX^s_GD8{p`z&JGe&q?CY{8yK>^Zr@o<&sWci3*e zV*h}g$pb0Rd$I@PoKfoM9hHrHD(!h)Y`x%A8SKN$lU9)c;H18!AM%!EtI98DvS~r{ z<$y7nol8PqU$=k3KKwO@u`GjqXU3qF+&zDQeLHNW<RG?K919O8_58CNP$+MC-)8 zJNK1=-Pd11cBsA@K>p?0Srwo`9{i!Fn6iIh|676fZ|wIY`?qM{h$N)oCu2MNFvj_} zCqs|OlS_(oZg_7FY?#31dNp@uVr-$)kVmzGsf+z(jX81 zgbU!NJl#P%x$_^uue7utu$=|n4O(u;e7ZLUZ8hD^Iso8pMeHD-sCy^jAR-0-WG5qOW-M4RuTN? ze}dffqCJj{8#iV}uQE4=?EPe8r11;cJBhA}mX!~G%9QjWJk5W~>#y7gov5F|SS-HC z!U36}bs}_j&PyfAR}{{icqnI#(Uzw<_*3DiPc&z(0sLu=N={q_{>#LlaKV}39OO3* zdB~wB&b*hH|EB&3&Tqgv=R2DfC|4O6bK(M?RE!Vmkj#tuPr3-a;=m6;xo?#$TPFT2 zP0`PROwk<@C*|it_7eKJe#61x z96RV)a)66G2fi14zP;jjmqR-_|K;LO_^|grtyX0H%N?wLNo6WejbUu&9%CHB_o!Pg zzG#efV^;8%h4t8jZw7mq7S6n2T!J^UxKkU9u{6#V;L{pPdAQSlL7I1v*$(5qT>PmJ z*hHAF&J{?$6j=Y1)WCkuVcO5Y!uPFyh|W|$Aq%u0YczC}e0{^?Uq#zMwwo<7X~5&B z;JX>TTyROZK(EpM z;R7Dgyi3mbQW_U!!nCJ??&(0gOl!@D0=Fa~joX6-)1HcQ2rC2%$|GFpocI-Zek!PZe9Kw?3VBd@{VUZ!j2~(5p()CxyUI>~wQQ^h z1l}Eo0V}eziXGB1}U#E4jn8#9Z{qq`j{qs1`-UISz zXtC_Ny2;v9cDyBBw%yVM#&zLE8iP=MvxKKLT?^r9J%-GAGrZ5$@jN~sJZ;^_lA(4; zI{P9CqfNx#)~lL;ZJ^x#kt9sQ|5RuGMf~f)1?%7W5lBxum2|hr=d6EUh3f5;;@Rm#ioN1g$eNWO!)DETMoszH@Dn89i#)Ic{4i4SxCkbA${U@D(F+XIX z823NXJ(#?d0F-SYyl3Y7;4VpIl0A6bGsK?fLHpm%Lmu80kxW2;;4CCw%3k1&{cp)e z`f<3=M0D4WBpl!SKiNQhTDGP!xoH1mN;qIY4o_oA#q}ADWzatZ&bxuLaR1|qlDq#= z7TwKZtD!aF=mWrBl4OVZ1)R;ABDw!{J$OkxCBF{%uE6&Y{O^bQ)By5rhPE2}Us*ek ztRjBMcVhu{bFZpQe`AJ&aWl^7I#+67X@=?SWb{Mg^D_X=9v2||$rL`aaW(=u_J9FA zxpYv2fG(WDK?DLp7GW*?jH_V;f;0+y3k30uRT@R)au9`%B7o=8JvCN{Lr=uXpl`?* zha6;b;u*#Z_t&U%(P?8sGPLN)^-j~5e8yX)Ss|V`evvy4jnI$x&Hxk{c+!ap8T#Ci zEYb57pvtu3;H=EI7 zpIJDwA%u`%I4m6O6L8Vf3fbVv!rcH*eZX%?Pr{4g2=T;|@Wy+V4(1FeivfNU8IF)n z^t1w`YB&l5P;#}@g>=v0%f}SC{d=c|W%(omqiuo!K@mat+IwyilSzzU2 z&N&hI_v@SpBFZoKivqtW@QVV!DDaB{zbNoCPyl05oJ*X}!8!yw(~s5>SYW*+_HQQB znvynTKZf18J8Y?w5S~jOgZ9rE^RBV2m9BUeeuoSMfa^<8E5>K(>9dXVO`)m^b5-?N(&hqyK#2 zH{o}(Q9MApB#h(foL(BwkAXb2gk8|dYU!0S{`R$)Ugl0Ei4^}Auz(L_o27fd4PhIu z2R@-5=5Vd%VY+3T%y>$SLkf3qj8p}!BA*b80rJJws;J4Ec)uoA7EDSAr$ zf92>hZ42$W)`DKg{pokO;5V(em7MD?&Uu-ym6ZiqNP~Xb1bEw{Phn_q=$B4VR$@(~ zQ*c)`d+tLyw6|?Q)19ba&x)~5e~r%yeCKBZ?n{t`Ntp9?z`h`kB6o5qORJwLKDC|D z?U-vzF+@G5Irwwndr7V93djK4=Ft2-?nAsY9qVkI>=&NlSkhXbUoM9N#CO_%jrG5@ z#cposU&qyLk>aykN!}<&N*~D-AC03^oc`V z`P%yOlEP0_;h-@m-A_FlI2+QMN|OKoH;4U0?0w-FJ6VDjv<^((I#*TcT+-9g8lO`b zzxrZrxrY60#rMbk=(0lRA6PFwk8^!*c0iq{J#G?qm~S>tE1B|uJrx+!M&L{(6T@w< zu)pf)kIr7X@Grraa@$|hK1dcDhpp!SjNh{H%?3TrKn{FC6ZN05J-~Tj%pC9^ zZC*X#N@tN2N1dlKNYB2;6MgU`8jtP5{~ZN+#5soVsYr))ZR|M?uoV}FoZ=k()py3i z>!Lil_2@_YKxg~nE_*t+8fV(dIWMfp=nH!w)|8{Ht?0w$MAGEX$0u@E%ZI@gL;B~!~r~~U~aDgbc`{|(-UQ{X?s7k%G?mlBUNH>;?h!#R83c;8h%rWMf(f*a>Nl?N}DgGNO=CqsP) z^q(=F9tAtAi|vAwT6Au0aX7P;*rOJefcsFA>Hfzqc&@=S4LBBQn}#_in$K#Xx1Y{h zyjC2j6-gPO1KW><{92%ougc!-g6h+A&^j7>vc0e`Shvy|;r+Zt0=Np9xK3Gz^M4Mi z0~Xr1HyN^U8Tc2a?J6BQtu@xNVqeY?6(B6$B*c4>$G%xQyQRo<<1@62i%=iv+|^R> z#f#WiN^8}59D7Cr)&?@Fb-_LZ$CHh;oz@7T| z1=VB4zF~X}T1FG!kzbLu>EDVs6V4P;> z?*05$c&L&u;SO7t0s3FGCtET8%8y5LsmIWV@WI>w?ITeIr0}2Pr`?6a=hn<5A6p}Wnbgq>z?e}in-oHf90=7$9o1+E%=!}}e^z&)1lziPiYbO;2I~9>%mwSf{`Rx6Jr6!OV~^23LFc?AdO{bRR$T`8bjC{*&IhA4 z6M4!gj({oF>9A)@F1uz8S-hkw9>5_TzMtv(G<6!w|3A1FKvI9p6WpVB#R~OizpAuD zx=iTZVaA)DaPYraNk_c5T6#$byj!a>{Ja#LiF~aw**0ngOf3+8Tz}5qA1{6u82JbI z=+@AOJ%bGVHv|1-oz1Oa+rWQ>_QaF!xMIydgUn_j4-~eiL-xtzy?1G?cOM?pBj#F_9%pd5FQPi zU=YU0fp|w@#G!9F@7Of-9`Qz^y+K-0oT#g#DIIhvr5%NRK%*&7*z`uS`H8}iRjk>$ zIYL+lr4@R_3q&8dmCb@v?o}qQ(`Rl9n1N;FqLlN2>a56{;~A$C9nrp`4jw{ZzyR>% z_I9V#G0!H;0HaaU2^3)Giy zGvA_EKSh3>#5z^L_X;w70OzE%trsw@lv~hzh1eh=11jnPeir0;!dsLkc`lejg)13} z&O(Lm$9ZeX>r~-A(okQoo7yD-Q)BcZnWg(RY{(d|zQ#1{9i)x=yA(R6XzZwk<*|b4 zNe)mShxoMf*Qh>no=hAiUlRX8Px3UMbU-D#Vows=r^MNWl;5{-X2_e?timqS9`#V! z^GNCLkGJTr3`Jj0O4SakFyJdUkntmHAd@M`1k#)qO+Yc2))WXuPrzXKQN~q@#%cmbkCa zF?=`9?@yxn^&gJ+Vwhp?*IhZ%Pqd-+a*h!PwU8cjDPkHb{DhuO8g7WYW2%uX z6@f$ln<>BRKdSpvReRk(bz@mb+sG2D}FhW^Y!lv||h>XgMp+4!K< z-_V&Os*GMzs%p?8#?8%5VcaDn(mB^SLzB+)UZX4wkeN%cQ{jA!g4VV z-`0hnpQpPC!T;LeC*9|uIQ`Lg!n*a2kVR!lpC`V_y8E;zy9>%zYE2``y$;#2hMg}@ ze#!*=YPm3a2L)J5dZZR;p!!{C(a8^Bubc^3xUeUMil6jf7{1Pho)mo(Kl8>#9l-a5 zoV3DlPF`WC??bVFxmE-Jz*0kS%w{utBc{2%p)%;oj7v7%nnS~I?#b;irT9;>!sEx1 ztq!=$%=>FENp{e0r?r+b%9YLk0=+$)?v=Ek{m0jeDe!yaLDLxKBV=ISac{t*!kC!7 zd-|pece@pH0!P83v~TGPL`KDrREKa^1kRXN_WmjCCyGwO-WSFDUXmb!_t5<}T_8u; z^P;%!0iUj+4{xH1-j^(2{J(y;!OSGoDcA%^pV3+4it9mP+%M>dY5rc(Vc$Z3e~0Rhuc z#rywc0a|C^WM-%uBa{JNigInCNCs#w!DGNg9j8grtPYS>PDy=7b8e`MRnZT4tdtC3 z%^~^$`pWX(4);0R&-s(?)lqIGkNFVVL#doih{sPu`){f2oB(7E@^+&N=&W2_YQ)7694rCw{bwQ~l&&Vz~USYoQ z_|Z6fLCqF>a};%?E6{g0LO?W|kCNWM0tg(}Z zA8BY!wn(B4fG6bdjxsQd<3fKNw3~Cp(gN)s*@jBGbD4FFFRW8p8^D3}Ot3!vGV|?Eb<2-MS zZ!N)xQq{*SR;u2Mfq)I0&f%nW{dD(d!R?F0cgW!wy1V{+xthbKGp#&psG~jq9rfUi zGO)98v91{Oo8vMux~xOkuJ47$cQ2RhL>T*5gg#Mboe%b*B>TaCSNI*nW0|@GrfS1h zK1ns(0RJQAOGXV*XVmHpn*3dH`Cf%ndjVey{8wC$^7xO@U&K6Z(cAo#rGw3!KbUIc zR_bFuZ#n9<(rZW1emtkSytZ}gs@EDaL)qeg`1qh1)_L)L@Kkv19r_CA(dOur&A22u z8h<)-x0_&`w2{^A677^CVaUK!*oXY7Ptg?j-Tps0;y?6%f9OwT>JF{ZDMe{Zg6nRr zN%sLU4m0-B+7T6P14(ym=EwVx479FZrzD_NEHDrc;X~jR@B2k3Esp|pMK#}B6o|IB z)?v!Wv3m=h&@QR8&l-K&>vppbyK7=SdLQGWfU0EY(ah7Gq4S&2_AAAI$O`&fC8O?3 zQn-h2D@F(RuV6gmgEs1(GBPcW3;hvqH~Wt&bhe;hLl4R9f4cwP9eXlNh5&0u|H2t1 zir0U{Es^{u2G#Ex$l7#ZJE!qUnv!_2IuK)`-7ZtNm{eSOjal;3aXl9yvi*QgrBGL5 z6{Zu9pN+ouZ|F1SW>mud)$ci!l>zh%>0G`S3gebr2ePqtWLed5%XQJGC}G$Y9XPbs z)O77#P0;6v!ZgA5!MDW`MFlwLOg+v*T~*v7rQyu?}lR8N)p zzbxU0;6GXR^|wBu{$M@GtJ3E&!ZtXh>`?(jd(?hLr>g!(yV|m(>wn@`)hX*4x3SC0 z!oIN%vaay>Rv4H61#?^d%f)^9Y59-2B-(dPXH_cR{{tN{S3Cl3YKg8AnBS$dlZ|PP z2e4)+%YWDcZrVrecPvRZj-n>Gcjw*=b06cs6*p!pNuLrs{v#T>jaor;nyr*$( zmXf#$u(sqD=F%Jb+v;!{bQ@IEWG^xKHF33LOmL3a&tm@}!ny=+V6fI(8*ADE(dH|E zmJBcDJ@#P==K`8EDKWhIR)C;xsAB(J5e$HE2l}@HOQn2Wrfy6j;RpmoFF+xay|A2vzAIL_Qh@F;(F3icF% z_v;>hoe{>JIFGF?Ms0YFI5P{xLv} zz&T944n5T{)-#3fUaJD{u@@+bk8>%j5$_wf?_O-2r}h@}ryR7mMzAeag`KG#;O|B%FL?V8{uW@$%#-f=hP|~M^iCjnl7MyV&jCN3bxd_rKGAG0@TjuqZKR7VZBk<~86h6L>i1aDf);J zfft?e?dn!t&8-;E1ORQx&SnCh>=5x>$@vIn=P!iu(XKy%ybT8bIdmttEJtG=c-sG| zT>rTk_kTVH;5Kvqq%-0SVb`4vTB>5(dyBLo1F*NSPXBSTNbybH!5)QsfDUM258ndF zY_ae?PdPZJ3_25YptARCkR8t@bel^1zad*jXiL8d-6S)0AGMg>^M$=0!&It2Shs>R zDuz{=7+r?$Ei6t)bETk>C*W4aE>$G*0zR#;GI5=T{mer$QHQ+Hd9Nk%{0EmQo0zKO zdD>)`2Q5{x?+7qf*im`%di~;F&(+6Hn=#t-1pHV2Jk30HxR81SyuA+{U_)n%$#TMd zVC?xX%APm0#yavm&Tduh%sE-GNWN=Yzb>P81A9Fq&vyh4O3&khhS}&VEVG||*v4SX zBS!WO6p|$t?SI%5S-l1Miz-Tfs*o40f2js96G6Lq$LahhI)hrd^Pkq>{HN7-oZ)5W zTbP$_BW5$ThJ>ooI1T;Svnt>$z<4Vj=SiADehLGM%4w?vZ)8fH!C7uAZ$+pAe-WlB zkpG1_{|$ZG5V`}|yW2pO=_H*nKpShf_P)nipvP)rd~zFfP`a-VnY@CvU%oWP@9bD! zx`<*619ptT`82*(dJST6@t=sn+9p=qQ0e?f^vg_&YVL%qrq1e2*NMDxXqPstLIbkz zU_PiG6E9$fHf&LByp~lE#@0BG@s=gpFXhhHDP)^3MYjU$Kg)mE0RX2a;M^va_G^7m z+(&gA=f7s44LK}}1PZ^y$(M}TqLVm}Y76EUZ)`xl`Jf~$0>J+a@;IDq#I(ohdpkN` zOMgGx2J{3j%HN|@G;;7&{u7;q=Re<3?fmDJH?6_5LXo>xKrr>uI5bWNt(4aJBr9lZ zmj&oD8eJ^PsdqOwP;YB*tkJtd8MXEfW*WVX_0-xrnrieZr=`~3(M+R{VHvfy&So0D z%4?~0!1ta;x@zs6%ryLs%cym-tEBFa^qm|kX>_zK&;D+1{q&QZpFc!VbI zT^s`%{iAgGqIv?@Z$kz)q3zg$=Vq}lFuY1CzH~S@A2wgg3m#*ib6u)T*-*ZdZx2qR z{@em(-+tCXTA!o_+k8vtwY#d~r(!yV_+L468)LBJ4cRNkDqRlFAH#i5?qpAH*l$#U zw2=PTs6#iVMPuyOiMlctwmntGd0%UzzRh>o+R^r%#C$|;IzPEd>kiVWw<_C;@&ZslcDuHDxK+7 zjC7RAFX)&*Do@*LYK!y6zvgO;i(=2(#`=4@@8>XJFOG46!u+?we1KkTmWua3(LEG5 z`_uhT)RrjXY+={OIll&|M|;0F9}7|b7qnZU9jaNXD|*H(_7~E;iz)66q_b<3KifEe z9hWJaBAgWFKk-bc1Cs2JRuvs^A9Ee-{cn|Ueqlkbe*OA%{tRQe_<|4mMv9+vtQ_tI z(WS_~!A5lzXZKfd3fox_%6Y!g*bwtWrP1G6T?pAz1P3Mgk2ztwlS;+=AJMkOLB0)0 z#tU-w>eXXRHvWzE2e|*R1oBiFn1J(5=a3jsDsRqZII4*R>{tx1bj;IpWvsx zPmoQT7gojg%HIEqyD)M8>k+x+@bK`!9g(-F{?i^!tcNJJ{*WSdMyWX9;Z>Y1Yv3?* zzg&DJKfu<4`_Rv*K?l(J&a@6hsq&PJuQdNF0X~#LI)LmJ@0Bbs=l(bOP-jPH- z&wtlRJjQLz(lVgOE~U%(wlq_QA78M4U}m#=wbk7QbMxRQD}cR;Olj;bMqi26eig@f zM``{O+?F^a1Ui831zD#eZ-n>1UllObN6wc;3Z`8xCr0N4-TQTv&h$-Hu^eT1Rn&1m zp$;EHy|**i`iyCVJBMNSqPQUCrnZWR-{XXO{o#x zON8~hGD+jp^LOF7Jqu1Y$Gi=#Ln@9jQK97k{L6sNljl5bvtjS@45vZY-(=z^ehIu- zor-4zc$MghbgICuGXLGe_cNtq|D(A9Iww$Rdprv-?lQyO4PLtY1dP0OXpK4qFgy^- zKH{Jw?7u;fyImwZ@b^lX$N1*XWsGlEV=YnB>f=}I(p*EBn8|XUpu_j#J;{s8{3mqS zJ0ccepmUkghOhe`}nw~ar0E}1L#@!~8tbIku+mMnk7679EP zyIQq1hH^NZAv9n475ANaUugcD!k$Ot0r1ZnGH^*{8Ni*6NZ$|hOzMz_uTbsh_-sG> z5K|WC5~6S81-hxM^Fg=2K{MsnXXUmPg{uF=2{Z7^jP3_sd9w-ZmMYKBfClIj-VVfC zcpch*^fNme-<$CG>R5Nz3A|IiuZO+qXn%XcuGRu_a7+36$KDNE1u|GDa-&>2Gn9jT zhCl{Xx7YD#|3LCe*gnl^4+-V_vpLigy01YOIF3WVsW4-_EYNCpWp0c{S*#;~9;P)q zr<9Qa@aq(v*^Tv3g(fqtXNO%+3otAK3`(D`A^~?c>cko70xzpYXVq|zV4-0v2^r8m z?o6_Pfjz(h^&e-Ft8i~&uHL3KjO#3xUeTvDwp3534nrPn;px0{1?)zA+TT7zFHXR? z;x5#paL_|EF4O}oD}kR%>ojuZfd3SG6M_L_1*0ubaW_}(q5$!`&+d5?U~pbf!!=B)iCAGGF z{50ST3*t9TUuE)IhIz!Ep+@UFxu}cjML`GX{0q<{RZQ01WeU2r)_wR)26x-y4#x8q z;PC*+-(sX)13wz`DjtAIi{$59IpUAVLk9RKiUN009?#HrE&@I40EbfW-wFkl@+F)r zZhD0Jo@kA}{V>q}I^GqD&60SJwac!^pQ#-n-%cV8IKc$ZfyaDH@zonDi`KoMUuurF zY8}FodZ@5E;W>C84H|o)f1pcc6(?@eG^RN_@Vpdke;7+8a{)^VT>-;Jz(V(=7fF3*@nhRgemrni>W0YBBeFee+{cG%pPSQs?)$yeM)f$wGy8cbpX?=#y-v~Tx zNWYjC^O*`oEd=Pd;J)^q>Y!PF(5y)ML%DS%U%&DV%D9EHw!jC2SM5N@+IX75?qXCq zbh|q4x25(lzXy*oAE}1Dp{0?BDcUbP$dfPh7o8ot0($)d($SvnLXL0q!JI4GJpLQN zJr{e^^-VCQ`&pdBj5ua9kO40|Q8(j3!y?v|GHFU>dmK49I!XwXLARDQ28zYV13u^N|5nL@I{I9 zWn}U-RGzRp53PRIfFbjJ4Hhok0 zz%M#;lxzj1L6;r~Uxfcu!uhDI%w$8h??J}Hu;0^?gY~a;-`+2mO97Gt+AE5Fw;}r7 zI3I(54mA7k2bTkk9r$-q=flyzb3~n|IiXynfBnlx0n_LdCKPW$t8%a()A{{7ArsGj zEIGh>7GBCljCCi0_x3oekYly*Og>zHy(pLhF1WJ`>p3QArWa-ZVATBa!6llTti7j+`xz@@4hZ(;l)>Oj1o*TE z|H;0Tjwh{8rZEN0LuTO{%^T&~b=m*yye+MtqwjCwAK*XPjgKJxddS@vv_mb?Cvmcl zyims9xeC+6*80aM;7^7Dc!o3VAK>n%Q|jPX1@O@Vb_N&p#r*KC4P>Jo!v0wQHVAyh zIgI?-nCl6^c&roRwxKvk=Y_Bp!e&@Yql3Fq*)O00>3EmivqtW@QVV!DDaB{ zKMMr}MdH%vtlnIg4eIFU1_k(>Cjtc-tDFc~Y*;HNoWX{3bBq^;y~PoP!JHC=$r(nR zL8jc&+eM7o`!RNNI(62q`IG z!z>H{3=Rlq5KLSl2XeykB9e0HySD%UYEg6n!f6x+jo5HJg+qvPLe|Esv*D~PWK1qi zOZZ(#IiwSXg_J`&E6|7{GL$Rpgkdp2L|%F=21p!E69Fg=ivdEIEm;hZI4lN892Nt_ zqC^FVWKC|EE21EgfLy#(So(WTenNOqUI?2`1fMiKLeUduOuxB8Da2pQ04kWiOXD9e zVxagtgpi`arBT7c;z>+GB*K{pTd`rGq?4HGvtc1PX~M9#n79bs=_n9FD&j9hc{nI8S6NaPUFio#-ji0r(%R>W~(hG}@Fd9!52 zTS~_WKH`aZlmU_pMVG)r7}15579WtU5E;B@|KSz;mcm3vp|fIxEZppi5Mek?^qG}R zyb_W}TpU|68$*Z&B8cK!36rxJ&?|3oSV(VicH#_jl8Z9PNzUTJ;v~+1kP#74_$n>W zXK^%Dp0nGxZLV9oQfZW++pu3eHAoLJ^i=cuKMM=jJ-V9&Lz}Dv)2~28I0!hT}MODndq(4 zTl8gUSr=a9;=2!Ko!k5RcmHWCe7m-s9Is)_0%fdwAZu zfO76_HO}>~P7ahlkGdI=5GIa_H4Cdt}?Su}QXZcWoc-Pjwjd z@KHK_E- zx#>);fr9h1op;728Ei-*V3@cyi>* zNTy}l<1D{1V`p_Yt)_Fd%I2)mLDSV^d9mg1l>FU$0<9z&=d9)expvke21An+yU$Q8IIlBGOu=jeWInfo8 zGphNWz4pS`#(3YpLya;@tr7Wv2xtX zOXfHH|;(1^cVHme_t-MnbGA&lzEmD)9$oM);LYI6{RjkbhodwaLkntE@M41G+y3( zU;0>=9TjRNnZ~buy`_=iiZ+{$S~>jD$uOz?FpZbDCK)z+W6@_++ov=GDp^)c#Aet{43x{DU{&XcJO-%&NbK zuf4bDkY8ip@E`^>ja}LKW@OFbds?i{+SKS{qhsT0UN;;(yUFBMgHD}yU93Ooe4qF3 z+{nq#4GnKi(aN~e`|e*SCbj%+dY9v_XLdHwu^nIY_qLq={cMCqQI26-n;?{FUH=R%NmS&h7dtX!A(!{Cs!=w(qMyxvMR)6&T z7Ka-=y1Hxfj?HD>U*hx{b+J*f;GW-$p39OV434(ee(f`?=4%s^tTHnqZT&LNp6vMf z=7>sN{I{g`T6f5ARi}~WB!nhT>(A=l9JJTwxM1V-t@w?ix9CZ&da2VLF?p?RmfQQj7JC4nI#yxaC@==b)&aW%oI+ zNvU9-a3L391r z4-JT%uhGae;(*uY2AxbVzICZ(cWcAZjWs*oDi@$OE|GJz{w}*$Q%5+A54n|Hb4h%F z+K`=x+8$_HD&E9tQuF{LEtfYgSKfBo(7?A(_pyCH{k>~aL}@$EjCFyf141g5Ido@O zR8!B3cAcE(y({gu0^wqWU zGOzOAxj9u{_4Te(`P3H|hasB|wXHbEfBlg*YV{vJ9odw-;TgPOhnsOKJVsrTvstjz!I z;a#=&pPffWsrm56kZ_lCUO49S^d~y${;kv&Uhlc}ZRnUxj|-gc4y(H~JMP`>xBGQI zy>F!#b;5h~@_Mf0#;d!a%1vk5OnLI~;Q7xhEKQc)oo}%J(5z=3dW-#Z_Kb0_wXpSs z6~6ze*{sl7*Qcw;_D*{JK7YR0&wTz1$43@EK?m-AiqPu`7OeOl)h=ZDi=1DmvGDtZQIA?ulNr$`1#Q4jlAPMYlS2 zp9eiDf9(CgRmPp;Wc}N=f?@sE7uyWzb<-iVclj58T3sISwIDegG)APxnM;RmzY__FubPu*<$?_l6zovfZfh;C^YZPqyo@B>Jr@ z(_!-Sv86jRo_c#SpI!RmHs75Blr$o57&IVs=nX$-!lJLe&U$5Y2!!C zf^jA>rdcEHE@+;(bfLqH$it=W_C4@9wzBP>A)WW?TBC+6>Qc#N$G~+hJ~mu@K~u9+ zdY7ok?Wcyl9dPsbh_~5iw>`R4e@xasw}}aVtXZT{t#{)3m?=IhK4>nvFf(SJHuIp= zrI%h&#&ed|?>y6BdAsP5b*nrd|0rUFSC9T(UWa_y^LDXOExmqei#lY!KY2T|q5I_a zt!ItogbmO5>~X%wTEDf!-T(c^uji+3f9Ox!e5kFiX2OK>-C`Xo?`%FSxfWB`AgtE0 zarN{bZi-8FXc+vjyPcP1V(sOwJ>PV4?O_&vsL$mlR>S+$ogH`NitUlkh7(^TXIIoJ z9e?rA=Q%Ih^}TUCW<{?aldc(rpW(DVyM9m2*zwIf_V|1*%4+(GsP&VFk2Q~q+@-fC zqo&R86u^Mgo$IuuIMspIivF=S))_uHxbqu%XKmua>q<=8-9wj zbDFzuoS)hGh{^Z%wRq9-*n7{JH@9Bzt~SW3n|<7ol&jZYUHdfEZBw<3&-E*#*>Ifk z*ACxHua|3#-+Ql~#m0G~-f%ZKk15qS&2^;rhviKn(a!1fQ{yrgwfHz+ZP)E{gV*oW zu6w|*TKBfiyf|rl-KTY%pcVW4w0+FHGpl{;bXpfY@7^bdd+LHC^SY;fo#q`{hR;ha zGk#b#o4+3SnbG#ZtY_VP!ZsXiqVweMS25Rbl=|z=t+c)oNA9SZov^o6f+3~?yI|JRheZEvbd9vf` z*kNz}Txt7g$-5g5HC&FC=8eDOZvpMr(dI<=c0LWC*MC|4xFNr8_N>G04z_%qxaomw z=;*u47xkGjt?wgar`c*%UX6c!lL@T<^n+9M`1zeoCbiyl)F`Wg@t`QnYgG>}^qW8a zWnf72S3|wG&QI5o$E5G$rH;+`Q$JW885Ls|J-|}?l|!S8vlDJ!(>LhQ(RI<87LOeL zGK{(0zgwp9pb7dxUJ7 zekid=_9zpl8Iz12pFcV$W84A%n4_Os+KoTqMQ|mxx4O8a#=>_lr%u}hY_2{w<#|Wb ziyyX)?bv+ zT+6(Df5UfOgOgR`>Rx`7vVqwQ^e$m03Ewq`y$fuUZj7w)`dm)-tR z-3jKQEKduq+yx%Qr;r%@#j zuAg~!EltPJ{R{QqU#p>0wPnP#np@jtj=mfjdt~(GtHYO9?f%>Jw{^IakK` z{DYH+dZttx_Gp&v^nWb7clU2^n!yiU@n*vAyRTMcPO9(Dm@=OqE$^FEZAbF-VDu9@ zt4-9dy)QvWJIpz$pY^(CCUpZCFF}A&c68+EDVy4?;lytmr#02(%g%L|>iHV{9d~@m zzTvkYc}@M)FD1%l&Ba-@#tro!G56qu-hgrO|`0(>0EP?>;2X# zHMb9)H@v1zjnx{7TfCyq-%y_sc{(a^=wJ837JW=`9h&XmYnFdo?GKZ8G}v(8;-pU7 zG~HVsp`RL5xSqfX&R9F%qy4}`_pZCXJ{>f7^u}{NW3Ski8S}v?dF!U8ll_kLj(>lp zLdzjjYQLFKd;P+8y_QUy6cM&9z3Zczp>LXwIMP|r!Nl`H)YAp(XaAe9XYz0N7vFk( z=RwdGLA!q!c!t)Dv3nojq1v_q4TccRzCFv`ObTJULbMQtg-%Bj@(>8TVl}($Eh(1fB$}>O!Aiw1|H2f*=N*sPM>ViPRrosU}nOC=L=s?sI_eIsfO)_ zHq7K0&RXi7a-ike^lS5{#$5g2`Fm0g`}0AKO4rpN*|VnGl?}bjw5OOx8=MU6c>c`H z$yN(=J1qXx+H1OC-s|Zn!@rm{zZvkL!%~kck0u!{8yeVs#nx7v7G2AHAA0Rdi$*&# zho#x+#(drvIK_=Vi9_+?RZ<7sz}B=mUbua%b3vFxx8E9|wi%KPn~ zJwcO+ihSU=JhRc;)o&{Pudr`^i}Zc}o@~3#wr$(CHgC4E)#lpl&9?0}yEeNf+wPh7 z=lcgd{WeF(+;h)d*PPdRzBEj$Xs2mh2!vXwEUcVs{@oJZ7}c+4PUswq1qQB?;XjSS zTbUE1qoTmc%=;EYaR1fNEYp=U=TT{N_3v=QT>n$Ap1qka%!AyAot2tU^1^zxS@x}c zdChq1-2ZHScdfTNTj(_zUdgeaELdwHRYD4Z0*`Rc@2Ouln%hPvCMIU#Emoq>RDAWx zAEZ~(!lRw*+}7LWhC#(S9YmRFmBE1$5}iPHQtD}xJAZ&^>@idB{R%f;J6~(2AFbP=v1Qqf{>$GZ% zu6@(sYivE*t84gP%M=}It290M%x$eskz9;=z3OzAeYB*_Drg{7+^-1bU`%4-_+SVa zXocYqN4vqE_}=eavKjeow}o5&OW?ij8oHGJ6v6T25{*+0@U6;T7G77`K<;@T)0_;%5N{uP# zE;xWrDIZr*mF)e4V$S^Gt@zzer+cV2cHNFkA#))ynMZ*>e?ibCLC zdMIRf=mS#e1?Q1Dc4+ENM1f8(8unr=OT9T!a`Bj?aPOLcel<4=lg06hT;VPBK=ben zir{UyzKXB`2i+BqqDddefMQ-|70*}gYCWif@WM%20(Y;!l3j-t6~V|(eZEZtw|@t6 z_1Yj9&qi>vzI%#V7qUd(VpIBofqmiZBa9zj1KGDYq;tyBZKiOST&h>A?00iW(Ac8Aw84G)4jUjtm}ZozDQnHAa`wdpAg-VZ{VnR)xnt zUU#)m5m2N-2STf&DXvSvfn$323whAGl;Ht0ab90j%G`$u$*>Yf(L#ah@?}pTA=<3oeyKQw{GSoMX?n>i5CEJ+_|S8S<|h z82KP@J}lw98;UeOppDC78|nKi1n(#DyLt@~)DCZ^I<_|_>=!DM-8BTxG2n4V4iv#q z>?eTwTo98j4#h$}Uh|G+k;XZ3^fX-BOI}JRW%zJ5PbW$FFMF^!(geat!~XMl+zOh> zHjAtSp8g{cX{WMO@4HMIgz1Fwhq+jUZiZ-(l#iz#3X?UQijIY7n7*6?-qo?9%#QMy zxzw_w0Omu-IBeE)Vhbk;?@?W`u{1G$=7YsmiG{R!p&&C{GWU{3@0~a1!vOV+hgh0PFIJvP=Cw z3HE-GItJG({CKw-5UBPoAo-@2EB+(L2{}z3d+8uqU)ZpR|FX69D26W79|49ZBzM||2aV=pgkS_*Y-gRhwUI?@ca8zvp6Lz^N? zgWEN*koXNrMNfxD19e0&RH-71-bSV}jY}OG6avT&K^5ak)1-4jHbc)q1i+L3lr?D> zC=-D@ia|Sl3r9>~lLUsUsj(jlvT;TxR~GbXPX9Oz9T`g6{~Dnv6Uu-iqs)H8qyz0e z{0z{gpSS}l?b4fDWMxZ}<)FL}onDt6symE=m9gK0;)(5Zw<>K`*OQ$TYb#;sk1hZV zWFh0MspybhO=;sYtU(!oT0TR2cE-rI5?D34?ZTeH?MdSsJ$2(G8f9WRuk>NtQB8*q z4$AS)<_~dyT0hj?Vxb`?ksv@gNgpj80Jp#}C@XU(AD#wx4=*@Lt}GAnnhq8XAQGAe zo*xA+3JJ-SZvfd<0A86UZU!kt)=xefq0Xz2S5|;tL4mh}IL4+jtmt%ypHU8|D8nn( zfYQbcMFXJjq|%sI{*<8(*G*9w3q~bFIeYJo_8eTphGO_uNAs@qG$Ti_PG0SoscW9Y z`8oYF_09$0D7=D(_iZxOc{A>jE0SSH6kREo<*1-M?fv=uc?xjv2>_4~zd*B>xDN%J ztq<$_9x%aG%VLxO)q>zL(Jn4WCBGcU+h*kbzG*Ro*$yZ8oGT-N0#As8GQEZicLKi< z0i5{{@PNGYK*RSpM+d+q#;5Y!Hlz2~r@}NG8z7I0VrIhkk~A1O!MmGyc@a?uZ0O*+{ASUKVqZ$}`!h-CLLZkmVvH zjF9t_JB^a`hq0S#)6~Z(7NL9*YNJoF77jG5sI^P-(<-pGBygUi;I&h}BXiv7?xAlu z_S*xOyowpNX1c`FLlG5(Q{TArvgY&|<7Fb0S;}H$veQ@5CNBh0*mO=0oxNu}JxNBM zt>jYN--uY3I_j-;pJS6q`<4ajDiyrBs-<*YbAQl~>1e#%?6jlFUHda__}D%%Z$Fh) zuFIV!36PB-DMit#lT+4B)bWvNsW#?d?LGKh8WlDx8co7fIp)f z{#tAK(C_{aR)34}+llQnzLGWiSI5p*0usnanXLJ{sWkqU_aFYm^ZDy6-HPZMeyu&^ zT9*o#9bDypYjou~_e<0|ywWh&GT_w~|L&J=S{J5n-_w#||PzzNIJiYFDcZcH!N_ z9^LNp;W3*t{3Ewr)6Mnvl@uH%$u)nJOh}?*LXBKqb7n+)&E(aGEpngrqbf{H%plFy zk$C=ndVY?Y8rW8v54gD+=mJTzYUmc4@;Lc5UpH~BvI%lG3n!az3|MyOA3SK;;tdh! zy~%m;Td&8k5Z8D?gA0K??rbTpnP7H8=)rXHnD%J8C`idh)ofLoXS0m&%K>ry4bmn-HAC@|ja#nL15ebP2eqIEI;f#dc(1PGlOUAwIFRS_E zt_;+bYO3bI1zb;8w#EAI8=U0z7DuM%tBul*3&#T;A#(te%LF|t*hQIRH>znqi08d> zu4ili3W~}me#-ZswJ5m=4RTsXsrmte1|_l%XuS>o3-BT@zXV%pOs|edYK;sI(S?J5 zt%kyq6#Z@cqjT%hsG2)t44%}y>)@j=38keftIZoZtDk0aR0YxT-3&|bZ-<%qlw2RT zIz_OfY^+C$jr%$?YO*<#=*#<*-D5}SUva%OLkITq&uS}op9oo#9Q-ivk!?5N?}zo4 zEe)(?zT}V$uelycpDaoBH3}^V5v#}so^E$I576DK;DS-xk-&i4Dom@AR32cYK;3P9 zwWIL{&=C2(^@McZUCgj4MKzx%ObtOR5OsV3fy{#JJ)X8H7oYu^L<*2lm5(DP|31^V z%~K9ftL5ulrC_dylbMd4)RDy|<+$a%M2>(U;_d77cF|wo6`bfhrdPJH$!o|}Lzq7K z*LWpMufYXY@AvHFe?7a6;&Abib>m5D1p+gMo6TJd`|Mv7GHtq!(bjScxZLyKH=qjo zKKzQy9QwhAd3IxRKe60~(-yYkF~H(Df^V@x^K1a_59Ki%P$Y%Gi--MK3)xO&36mj1 zOuD#}9Ky#%tT*;^ss|TFcPFnf$q7&CE$$lWm)#*}q$7)T5I4I>QK5?xJFy6b!IWF) zvDsh7YMFqg>}7gHE9^Rq7bI&^cAq{Vf;y|Cj(ou9zZb7p9IymFlke?h#k8}jclo>b zgSXqx-g0PPDCM%sf8t0fLbtof%IDwckTdh|p;Yk)u1HHS^C&{;3(c6M+J_}cWytZ? z7;AO6wSJWBzhJ1~Ius8sPLOU!)4aOS*De*J9;DT(nppN7Shv1HXKlTUq*Ea+?$Fjn zitQJ7)JCWNGdqb?eX$fh#fP+r9HpCt(g~QfcXaVhLC)v~++!SKrbR5J8*C$`*)PRD zzqY5vPA#D7WNj+}X>WU>*RlE7k`DZ|JT>pHNsRg}B&3sYfB2U>>1Q5uq)P(X;%u!C zU_qneieU3zsr(vF@8`i#4(nU)8^p)k)ABk4*a#KvN|M!Dd71fTeRd)ee63h-z;UOC ze($=+p+IRV;mU-OZ1}j0oLsVRzOFeTL@^DFhn8;)mk4@}BC9F&w@vbGAl1p5_$17sap}oqdGTfe)F46sF)3Bm0I zZM|BDCb6=0dv1&CrcDa?9(>vmiue@TCU+_@qVC+vM9KBY#of~=Gr)WOs?Xa=QO-1* znB3kBm#?}?>nzI98*j;2OwjhA3vj-PTQT1W0AnQ&x_CO4z!H7m!+_g;gy>p0I5fs(xAmy4Zr?NekGGhm!>utsg>iavkvcEtBfT{(17zs`dznIuuJt_*A&nk5R_Gy&YrSIZ5;gSAG`Z zTb6S%--E?0!6~$Tp=_*-tnI>!PE|dU)*@iMdA)`suS60)N>@}IwaR4Odm8Ip9h98Y zJC2{2naaA=h3rNU-H?J_z|Nyv2N;o*VDGBrJIZNxej#XeJat1#{-at*77f>XaM1Jc z3{~tAr(cap8W*Qr%KFv2_5)Ahw#qpJ zCnrRi%lgi}9yndHD@&>NsM=}&W?*2Q#RRt9Y6H{+H__i)ZR!SK=b#pjW|pz%OK2`{ zc;O@ZbR5OCr8DW4zBr@YN>=Xl;6awJ$qEbkKQI3yW8}OQI80s{5OseH7-wX5my1^U zy8K+s%>TNG@$9wJTl2jgwF=xo3+x@2mA%jxa3OVR?7=T2mgZ(yovg`3-%c%Kx}gN5@U0QDQn)KoDb6+g+>y@J5IIz zuUq!-2(yuU*+VUTDp}WGcOU&Bk|59$SnuB9g{zxNu%-e^t^R#l+wtJ4^7xA1KJVEs zbiNP$%mS0b^tx+-n~rQGvR}4X+kuen+cclegLX|T5p_<4!1V{>>QF*uCj||EfiPV0 zN`9%sstue`O{q=G{(+Ry>N@YO_a?{b$$#aJZGHoE);L9Cg%>@M{#hxER|{2p=+jm% zqCBPeY|!p8NzffB8YDNvX33pJL5ImLa#b96g@4a$w7)6cuZCTZWac_KU-dq3`Kgbs zO_qHn^C&L7L;^b@qIL5G)ba#EIXdP#{Jg)5?bj}^Q$PnCQnU&^f#JPm4SYYh1nLHp z?TUR9gwX6ByXn+T2XlnCKv9YbiDAgK}s0|9dz1{3F&c0>WFl-1t`DFGY2{Ifg)d$_Trh9WVF0 zm>85?qR!qCt0Z|7t}M_w9ZWncfK)5e-YTxq4N%}l+} zUGiTE3TBGAE#)>vod*c|O{M8f3_WDyvBG6B2?7b{K=;B62t#YLz`t(fjV^OaQqit4 zhCvCedV#yiciq`#({=mV&RqvfDd=MTyygoYi|kM8jb zt!zru%*2aOVzB2orduOErDYOHX#k|je9f@x@FLho${ABJij!uEuGer25+X&o#_n7En`^Ru1Oes)c6LWUR z)V=&|t1GVHg*8voj13T~AFB=sRBe0vkuLem(pkwu+GvH|A%kf_u0_T>S@S-UDydvF znV`}!LJuJsvLp|jWM~EInwwtx{Ss`U{H# zh-m-J{7qzoRcJ@mT&vXp2WExp@9pia)9ur|Rl>rf40?$MIZ29vbf(uxB0-ato0dx$00>E|H}~Ag^6c(#-PUB! zJhev(K{%j*acY~4a@SQ2WRs!;r&P(?u*Ako3C&{~z~A8L!5h6$`jdXI5q(*X^@T?3 zSXJx=YOajhg_o1>ER%naPvQygeHf>l z6?c;TrB=kEcfNRAJrnC(xh3bZPi4y z9h7AUB#ok3YC;&H%4xxA6w-`(&vjo>dL1@=q|efGA4bJV&ioK~1~rLmImA9QfjxFN zkDpWZmn*0!0dE)F-BV^N@*Kj@8hET1<0#Ri3|#ZFIrM|SkOrGbb=xlYnU?7JFcINc zE5-A6n{r)w5Gp4f8K3D*KR(Fgd4hG{)37EUxS~NN?;ZCy`kxK1{MSTK7Y!<#)YeN? zc$vjCxK9q$6IQKu-3^l2caor)4xu$07G?uV^Dr&faN|CQxu?7P;E(sk{|YDX7?_4H zlt!DRu9i(-g)k~O863j^4-^j!`taVXD7s|;j@66Dcy6KoFuxHRjq;M5z>yPg_g)ln z>xh4Y+bXjK>v78Pw!GA-$|LYSCj!Ta4<$xjrNXN@#P zxOOu^)|uUv(|DwB2RPfjUaZIKAxI%zq44y~|KG_4qoPt$@Oq|0WS=GvLA!W@!FaNN zmoPs@Bj`^Djffj$8uDfabi6spjK0Ol8g46rPo}ml57ExoZzV>0d#t?D!W!Ek`|6rp zxvu0=S3ceuepz0F7sZAtf#I} z4+W=8cKzKY*I0yG51?iR5p5)L1y9@eCP{Gqai7K!y6s{U{a2dDsqb=kg!;(qT+_a< zRu;Q>6Y^Qdoj`ua&eA&u($g+3W{f@x!lj(4|2A-a}BcOofA zJThQ8eg#PyZ*j&|je^g|aRsAM=QDeNZoP(MBd+yOFF{{yBfqJ{vOunKu`sk+o$O9X zs_?Z{CI1`n)E;6Jm&*>f%w%8-!ec>O*`J$&bi*}#ST(?Dn8(66&6l)^oH zVRv?&0UG}n)IL5eqm1&Q$H7(-%yKA$19#!c^AlQvfJAUUq|y4?Dy8gx|Eg zDdDJGK=-tyTyE@q(if4KZH9{l4fxYl|E1Ko8mR23s@e5-n-}>9k)eKrDaKinz zYoxelm7SY@@cAZ+lIcbeBCHh{4brRFF0huLy36h`HYGFDyRDi>6|(BQ64ZIe zY3VV+jBMqjSV1)v_KV4kays!G?k~-K3|tYo9n2l0ZkvOrHz(GX9qe3!zkPiFbKH!n zhy?}wE7Fd3f&mL6iGpNwBL?XWnc>cn6K)?vcdDRRc~lD6_^cLoBhnnY%(R`C9wE2v z!~#Uz1TIw7Cz@QePC5JsA#_+)C>jnUcmHUC)^9gT^#h!e3N>^GJnp2!^9ng!e7IWs zA)>=|)>IHWaOv{rZT8@bQZ4?5U#ZWXLU`0kkjx zl|+i`UUZ;IL zU&Wvjr4*^)$XDKdK1O{JWrPvlFEVp99Ss~7VD&mFQ{}xKE|y9*&U@a^!EE#6D3UaI zhz18f?Se;Lql3%lbs+>H0zfj)GaJIbU^4zk>|X?rqi&ugv6L!X*d%jGxt4$JY!SeA zAf1fhkm&r-bUIs`n@%5yFJqBz6e;kvuE6p-{04q*qlDG!d>qa+6yTDs1n*0_^Ftqck7hwpsf9KK^|6D9`Bn&+cM^^U^R?$x^=F9^S$0TA&~OY(g^->WIJVy8tPhvXhAZ z5vi^{HTlPg46~^e6X6dKeA=cViqu_!CIA{!65$yv#!=7qYK5jqU&z6 zLCKq`Kl|n1Cw(!UF9}w=bm*EJHYX|qyv$86w6pL9ANS6M?_k@}%GkjD!DT(lvD$&D zT6E;W5hpTQcqhwjWdh1!Sibmxm8?kD%mKG8=}uXGMqV27o^?p7rD zHd$m8m8RF$*F)l2Ui;Zm|1t*IWG+t1+TC}HbXrzqq8GJ~f_?ttAMj*PTe%szh(^)c zW6s*#UOx(NK}hjzzUY;aar+&ha)A|?-bs5>5#HnQ!D(QB(56zmMOFSZN%)1M^|?e5 zgKB_J11iF_9*wpwGN1hE{Dlx+#}|w%j{)B`e1{ZcFg)}4paGV_v48j|DlLu0h+vZq6zW&f-byGpY7E5_iSr1uQhfXlv8dL1&vhG=Q^eP1y`IG0PYEFqM3<48m0BnEiO_?ex^N~0icsStWPRLxc+~&0 z#dkLX&8Ek|++@o|(j}Q5XxzS&@O#AsKvva?U_o9JC4R|tpz*F_gmGWK7JdXB7CY)u zaH)u&Z0urT*YKeVB7i?36Y@=ztyHqw%sF6cW$?S?dFNTYV7_Wjtl!Bk6GuJjXB`~? ze1x3@U%8l5CBYfxer3=J?)`@8br4VM*-(IR#*xYu@&_n@$9a%B3e~l2{??+bT~#0~4m;Vu}h^Nf7Gcfbg$4f`MtM3t* z9C|Zzb*(e}hbFI$J*yNYr;pO?h$cy)%%&RhVgmNH_yshSc&ey^7PYXocWU+R1`fnW@%sLZf~P)afd!5`ai^ zc%}lG_LQ08jkYf3BCxQ;sqz#IP%8$RD;BDPa0f<`4Wa2UM_{Jv2M)DQP_!nlNQ!+} zIAYGztw9D^mywPLKxR&%7|+nHNXRb><@48oZ>=x_T+>Qi(@E52rC-Gh=Kp;%c3phQ zomu$upra2o%)d(WL#_%SCrojWm$6j!;juS2Sb4)wTLH@T1?D zeQ)=-cpvV!1)9mXND=S6kZ!*yxf(8cJJq#nr~t?JF2cSVl%zghH3c$bF*uaxDZ=Uc z#Y)&^v;q1D7jV#MDlXOr!yor6tcSyArVTXgyMj3RoWC4S<|%f}RcyW0ET_;s$e61w z8!zM2{vpsvL*ps*4_a3gAb-q`x-~}9Xet2K>nD_M@dR?pS`BA(mCH59SLqc0756iO zaB1O1UZL~`Th0V0PYE?-2;N9UI;!!-w@%b^ZL?KJG9kljA%C-jU{MgFeiYk(WlRz5 zX-#nQ(k9#V!y(D~31@0=LlDeF+q5pjn`)l_NIdTy8vwSQW0~zGM^M6hQa>Gp7yv+> zeiA-k@x>j?EG}3vWr}E+(6&LnQo^H-O}&WJ<*Cr_dMkYZ>rT37rZOguySBz>yNi1Q z^=O@!36Mm7Bj^thVz!?mMFzUJ{w~wMQ^U@~n-MDc-PdA%f`2Io&ZJGQX4U&D8_0L+ zdMBU{S)2SWB*g~mimBX8qXg5gdWimbZbK!`{L2@wHn0q}1`9Aj*O>vEnkb30R#$kM zf!FwZt3G>--}SI6cn}r$moZbKGq+BrD&Aw@8&f{Eh1=ErE#(Eep(li(Ea&nyzc5m7 zcS00n_@E+o5?g|reFYC|9CKFejIhQ9@`lzrRP#nxiC$#1Gut6$r2hgeyjgiD$tVRj$m*GtH|M$~8@+Nhqk)Gf zZN3JM_doPw?sb+a6S!U+7zY-3q-!Rq{aQehGXpo}oyQ(qpdRiZbN0SA(m9x%*FH<- zdkMw0Osn4(ecD~gkg3?jdM(BqS1m5OnJQCtbv5ENah5Ehi+x&`H--<;V^H}sHi(~? z3T1q_Cp*HeQ#S`1B*s(FEp|=2irmsZLAHB*MhGZ7`b>b#(tV(f=|K@m%AAKh#OTuaR&Wpdq% z#SZ5m3BOh~gAed~=Uj_wv9iU1AVAOJCZZuL83&94+6;TPH!$%2^k4LEeWrSFSP0&) zBy@-`F<1%FaHy5xlX4z4>;wjO7j7^P-4GTfWOgN?tL3hrp54^cJGZv>OKhdE;b}F8 z1esV_L^(T<7%%!o|l{fQANUZ-sm$CF=ltoI#&zx#;H6FzW});UJS*+ux^9 zSrh-}#0g$(3TYn?w>EZd4DV(SK+e^)WRc6u1rOGenE?03(>-L|G|_$=dZOf)oo@e}F8?EZ-7cityEhuMb+o&X+PNdEpZ=eoES21RZ$r< z6gwD*9WQk!p2Q)ihbM}PkzY}*!BO=F3>BC;2UYc6mLG_ zh4?h3gpcPrdQE1VN}JFT`r?sy#z&q^M_|UTM+dB!a`RSykpR*qJSKA41KM6QTDf;W zz6>hhD(y@OJMjz#a`7VtjauzwG z9xql(*m+*4E5wHk616Bq$72qIwMo*~1Kzs^Kcu~h1vo9^??jBO>o=>6q$0S$IFkDu zQgycHFHB+P3o4$v8|xnTn{^j3%O2@$Q)S$n47adsRkO|#-U~?!SzN4*^FLl}t_OK3ZNC?N^ujz_v-WQnXQOeIvqU2SIMK1W9eUayp*EOtcyhqpFZ6pp=Hm7v&T zpJk(3s@8=5dicaAi;_dWoJ7g;*{9A)E0XLK7)!VeO6CQ@9N-cOVw$>va;#Z^%%viA zycdi<_s|`a=u8BUOpM>v|G?CHMS5Gpkx_r5G;c}b&^RuzZM~3vSKHW2dsnYC9lE}H zZYK8Bzxg~ppan9~hPbw=Qdgud(()WR@pbJLi7E8d`)=%TVL>F33ofe;*keZ;D!`&pb0YV*v3gxP8GUCT;B{{I zceC)wxM&1+?k{!mw@N#kEfZFpBZ}YrfeOI!8@R0_4$=j1RErGqrY}(U0M)}rB*q1B zHZS6j?gn6w3%;NE#`g1^Sfi~HB#pikH~Lz(DHrDw(lsc`M!KiA<{l6;ueZDbd33C? zvbZZ6D8o93I$;jnxuY2*@&tsK7Ci|m--{&j!GUa)1}U1h!zUM0lH(RBXpy-<{`}C& zY>a`K9XnXCB*;TeO|tUr2rFy(d`JV+gBVXGI39Ay7-zEVd=ymLC)I(BD+d4KP>fdP z71aY4W;7aVqp*(NwZ-G7ndQ=y(qaDObNlUAU?(5p2!Ti-$Vih3t+7IDl6^i(*J23b zlc$&XSM5RWl{VIo>lg0IdT+~ddo(R?DmNYe3A&G_vNaB<9pDG?YfK1gW#j~)k0)Y5T!9q( zl05W=CVDVS-=Zi}Uyt9`HTcnDjnIZ?-5dpe0JtCO}i)t;Rs%hxj)CLT|Aww=Z zBvfDEQhpuFC-owZ3rk~NT%2J;9=2^9*8Qz))j@R=5TSTKnvY$At+hTmq82&0i^X7> zFqYW&6&F;rF(R?2Y7rXYpv%FEY|GB-7^_5r%*?v3IGKg535=`rS*@6S=7}Ea*1|9c zIQc}%7MWN^(nH2XYgiUzVLwC@uXjS_XL?@!d1i4h#e|=HE0C12mMz z;VUPXsil3=7`F-IWNXjo^um&0pIi3VTIW?R&=@1pE|)=KE+WF$(Qf#UbCXDSe9Eqa zMCp%Q1LwXVus%4rCjXu!1e0`ylKns!z~{`iwnlcghRxHZ;qkx9Wm)?g$LF~EtmLdWeM>apJxa1O0mZJQ3$yd$jb zfvxS9Q~15>Uk1-3O~Mc&9ZP&pLC#8+06%;YKcAY9_`?2nh>?8dy&ZLh3#jp)U}#MZ zWiZ#5P-ZS-IA0pBMQx{(!i;9exxDGRvk<8WxWY1*y8wxB&M#*TDK0Clb*Xmq{Nq#V zrxSZ@K&G7@TG6H+Vy&1brgqk4s%F8I;7H*8f~A_{@k-lk_mGq06{+|y>qPBYk-$H_ zr3h>HOd>X%(8s*bywXCXUSz!E>Wk&|foE_3pr^=Cm@fIzduw$SJp5Olc^gNG{;53* z(*RiD`U)&DZr#=TMG(~1jDyMfd#KO0l?c(k?PbZrsy)nxK*+VLXD(J>C9D=Lm;)S7 z>@$1k+)y1dG7yJt(j_&v*yPW#3%2WZgO&3=n=_K%J~pJozi&hbN3(LzhJ&ooZGK`p zqAA`Aa>;MJ3AYqE8oPi)u(od^-gVt>9DxY6UYvwVxxbe>685PX<)U+thh50pFc|%Vf!Vr?_rNL<%Kj5d>*t2RM2C<(CM?^5~ZCz586q zfBDA4xdzoLEd+TT&Xc#!MMEjjqniG-xk$4-qF6{6i|juy!>oz;{-0O&S&e@+5#tXP z>L)VT@EIq_G05t2EK+~bOQ}Rl10xIy0ICB8uuxofJ(9nYCJPf1YQy28_anwK|Hw znTd79tNzpxd@#+{;Oia;$+;XK^D-Sk^0Irx@yR-FI`$cSSXt+S?o$A0pH-vm7s;6( z_$KxJ0g71Ok*wFT@??OPU`3(At8H?Lbo|g)D(_vb+kKC~HXsGqyFAr#981rSO~Za< zt0r{!bM7PR4K%;yv7tL+uPOxJvih7s0O-iG09~NR1Yu~rD;^F=K{l;MG4%X6QXt{N z8D)Z?xUCUIhwuy_l}*YK8?u?kzv~k#c1DT?7qN0%A*5=4_$L3)69f9fW;F5OiTcS1 zx&<-nPeGBX&#>Sgg7lQ2YvaA2JZYg;D-#n7~h;~SfLFi(=gKpi`ht3z6I0{j|Sc_~OI z-&C45ThjsJKP|4=l>(gKjw#|5&L($YewLh0LEF)P3zC*PuYI<$dM`PU0pW8yH$Fe0 z0HJvay5`z#7Nq%k^DbV~x9d?dE*N=oor_aQIiSmx>fYPv-&uNU3r&7$&i21cO>HM5w`$4g#X0_xRTM4x6_du(;zmQi61DG zDw_;9kT_9{DE+k{L^!?%%hD^7>ZDqqI`x9o<>Shg3!I>BRXYEz;lIA zcO+TI2LRuZT7*=DNx=Y}0Zxzvt^hwd*aon&U*y-sAo>TkmCnsEUyyUMV8af3WeOaq z2n!cSdFI>&Z|K@K$w$k%*4;WK;g8{KKqGnt2CYt_Vnt}fuD9ylg z#kpy~jOVA`f9_tocnLo`dvx2>5n1rw6!bs8@^mXcQF6tWLGd$NXx~mZ7J!!mkS8j9 z^rAr3cvm}ARzNO9I%1xfV~$cVfaD)td2NiXcGIDC7|=N-;qd*)$?s7|zT3T0U4XA1 z1`yXJC(kZx@)g_glA0;`$UxbJ_tWVbbVxFmP6|0cmrV*9UJ}K3@I9lQXM$Q8lI}nu z-A)$wys04~l-6;Ghout+^YZLTSMM<1oGYRp6jPzNikbT*T5Av+6(r&<@S%f?3s z0@SHhYNQ9!T|s#eX&dlogdrUVRuBFq#7i~vO|YrkaJDc`*@DEBX6}}5jYKxUg$pWo ziQi{ac+~Ao#2+1HYxfotURJ49^K9R3oML{rb*L)2GmSXv|t%hwVp2PIvDj z3Q%&21A;84YWp&tj{}5o>G$&lAepA%>pFEKWRl z)V&x#n`8F%bM02YVQA4&$5q05JbX;o`{&dZ*t*IUDfY~l&IWKb&PM}2t1pOnQp>Xy z&}oIUg?c`D?)V-sKRFv&HI(qfbdx=4`u~A;8<7+80e|-%3RQ6Rx*=*uft8+axjuIC zDI|V22TKCs6$RUy;JvyBalHe2>G2D9z6~BwIl8ztKIMb@C=PbfLSMSJ;{FItL?1x_^pj433Y0!)4?7_qx z!?(JLw`qDOqZ_3$-)Ot+ptLIMD8r?Kb@}bMemr7nXW-EZ&*`@|CayRj-XcrRZX3TA zw^Ll})QUk%tOEl89V!DMH_wj-v=8NOE?JS}N63UO5zNLn@)!DuVy8tAfS_ff;}{#q zZBdVa>vIe2$SJ_Aj$@8(Bz#bL%z>*3R?scE#Zv8pnL!v)?J@q%^FMECd2ycWssMbw zOK<^abI=NL!MDDh!xsuxCGyRdszjpRCqOQxyTbNk*SY?23fF!QbM4wXDd;NJ?cDb= z{F9Os%XbC{`mR1L^s>^*=Ui7cKc*#17)c_)-GgcyC6kwl&Z0}{-5`gvu27NXyvMI% z{?+ar`X&=08CC^rw>un{Qhrl>+RSWM)vVF;(`2TfN-OEO5d&PKO`@TfhNIkdKMF0e zuUeC6jtR~#LegxEpl&f=vCEY$XngeNhoq@G^F<4H8lroCfcw?w)=#X6E+`u}o^5CE!p&WD}l*<4x#k|Fp-hmy)(gYdJ(5ZO0Z=LhxP{tc6Ojnelr9@C?!ENN^T2-=1ViL z%+^_daC1{wI|k+h_sxnEnvx+WB%YjeOh*5>I;nqkm%u1&t{D_D)HA`z_#;-Udr* zT!=4lR)Rh}P`wM%H8*o;r<4O0X(t=@{G+Jr2Z-G-Rg?CEVG$^yR;6n4t&<~6L=zmI zqM;Dag5rVVcLCFI&__?0Z*eWK_37E&w7bjfQa+gyO9a1=AfyzPAYDco7ob2zJ^&<6 zC)F*+8eZQD#6`LCp08NPJ>OhRs`7gHC;@2*Sd(w%VP|FYHXN`dL<8K}75V-uvp|xl1-&^vw;*tU?E5P?AQag2{jV_W7e; z;n4<`%n}C#p=7nlDLUM7Ck8tV6{sE67oIuQ29KBHGrO#VRtHC%~;j_dmPY#r1Gz zTwWG>H01bIeA@@N`%#V|irXyO-AJP_sdUJtgx@|1lgVRrt5k4ZO^dYE4YGFC@+Dz7 z+n!^eB{^{oA^JF{)w%s}xX2L7Z559;A|7 z8+?$DIce)SIYT7UO^Q0W+6fvv2uN9WQ>0bbl%%kVa!5%FyeE=gg2yMYT!l{3?_!U{ljPOkRor_so<$ zY>}%7|NZp>fou|(@1LTK_1L6bb&C#2VQPFT@cmLp)^Oc11xW;VU=U$cuF@g$;6wtj z`X)lPuk>-)I$VtkF?y}R`xp^=)-By8KKy;D@s2COR{>PVprFzJ&tE^(?H97kh`7)f TS`LjW&YcTMg(p?kn1p-kqUi}e) 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 Aj{pDw literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Checklist.png b/Algoloop.Avalonia/Resources/Checklist.png new file mode 100644 index 0000000000000000000000000000000000000000..abc0f6d316bac70a511a3687ecab4b696205ce9a GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}RDe&2E09i0OA8GR4GIeKg8^S( zUmqVIe}8|V0E7)>07c+jpdcE6NFfVuy5p`1G+nkN$S;_Il}%Dg-Ok?GB|f>RxU`{f z!rEO2PT#oy_}Q!1-_Dp$t^z7d^mK6yk(gS0{v=<60uRdtt#vwLA$OktufN=!q##vY z^HxQ6(RUF!27^$>9#ti!oU^=V#IID(ZYVz-cuc{hKeoZ=n0DIEZzjy28e^WmJer=u pc*S3(_TmnPu;Wh|Dn4HP%Tn9Jw#KZ0M*?UWgQu&X%Q~loCIAMlWhMXs literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Clone.png b/Algoloop.Avalonia/Resources/Clone.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d82fe4b1813d56ead554a693f193502a97be07 GIT binary patch literal 739 zcmV<90v!E`P)z@;o?%Qu_W%F@AY({UO#lFHl>h*A0{{T@B>(_~&j0{z zUjP8;Yybc}ivR!{SlyA?(EtDfSxH1eRCwBAY+C>DKLZT>hcN#`*>D=dU}y+YVq`!A z00G1TB5DKVfQn!W86a#J4Z{EaGqi1b#DEO|1P}{ML)Yqy3^rd&7-U$kGMxUO%y6GC zm4SuvJHww}KN)g;wZLky0e}EvfjLot;W2}-Gz){2yf(x2>uFG@a4|5ja58jnf5yPV z%F58R?!kX_Zvg}l3(Tp$G7}m8unIH0{Rwsy(cS_GAQlkk9}si%GBP}P{D$G-&3gkCQ=6R+<6BTV~n}d_12Sg#O=U5czSDfs^Sw(9(ZkH2?v` z0&|WS_jd+PZf=I3d~6K=zhZhzMd}5E9zzeq(=%5YE-@uB{QGABRP&DkAb^-arhxFr z%Xb(~9=XlXv+5E9vbWy9e#3BT?=c1z=Kl;#%)c0z*_aqO{(XRl1wa5n!{8so{#)-D zu5xfQ9C*db5Rc?7K_M=%w;2EZWH^6EfZ?@31p}L?3B%vNKwE(>2M8c0P*nT_GIsI` zF}&ntVfg*y3j?yZ__!Gv_<-IL0McSyZy8QKSi!LASOzo<{xbjs5DQ2l$beJ|Y2vl!e_8+t<{uTZsOx@a z{mJK|EOB)v`6Y3*723Q+)<-WVuiCE+wNK1ua(Z-a!)xT2Y0Tq%CY}_zb|${{IYIn9 z@0xJhLvoY7A<5?S9?}C*>g(v`lstVC-kc@?;OBYQ#OU>qB({N!fmJo2O2Kp;sObP> z$Q4U8@_olWuc}c}XZ<|ya*m9IBthUnTB_Frxz%F3jn0K={K2N zj#Gmni8FMp3;?-`s;~dvbI$>h`kkQ}Ae0)RYN+*+&NP5pwbpUhAeTAr&X{%Jg{9Zj zb$a6oT19_<@UyW60e~fr^E#|&R?Ytj*Q=nZ`iEl)dCYO1o7TaXW@Bf#sHr*t2*wj# zdmr~xZnA0?6T_1AVmnaMR2oaC+yo#uPM>{k?jlJjhu?aBm6Y45Qa(coLH#INg~rk; z_dF1t10q}Llv~j%dNZ?ER1OY{c?W>MpJ`3*&%}ppY-8YDbs3m!pY{lbsf~g2G(Kcw wucZF{CqQ2d5CG($McnQdZk7Zs;@9Tz9}zqAsE33LUH||907*qoM6N<$f~+zt(*OVf literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Down.png b/Algoloop.Avalonia/Resources/Down.png new file mode 100644 index 0000000000000000000000000000000000000000..81758987571f48a6c4b1d6053be980c2bcd8601f GIT binary patch literal 3284 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 literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Download3.png b/Algoloop.Avalonia/Resources/Download3.png new file mode 100644 index 0000000000000000000000000000000000000000..1c542b2b683eb6c43d2533493987d9d9fd5560f0 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;il_ zi(`mI@7YU^T#b$ltPk|hUOMKqanp~-EMBLg&OJ1^_U?e{oCAzI8n_d*yUyxd=$WXo zep#jQ`?J}zD)$^y=+kjhTo8NVs#n{5c9xI~l`VH=^A}D2Aj6avp?>7DY<}XD4?N80 zW~Apu9IX^SZv1Qgy#@0g@}FR3(YfHN|LMu}=T!vSJHB^2^MeM?br#Qjma4tu n{v~hnQ9JZr($9xK-}25h5!t-{$myLx*D`pz`njxgN@xNAB9CDP literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Exit.png b/Algoloop.Avalonia/Resources/Exit.png new file mode 100644 index 0000000000000000000000000000000000000000..e5041ed8a06adb215f68b15badf437d3bd644df8 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=3hSn7ND=P=dWA$S;_I z(=McR#l{8GtquW&Y&~5ZLpY+7HQJflf|3n9(lyc;n2S@|1elwZW-NSnAc!Sx!;~G? v4p(+eH&|fwAgJJI!P^&V&bqwm4VKId;%6l}H^2A!3$oPH)z4*}Q$iB}lyNLq literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Export.png b/Algoloop.Avalonia/Resources/Export.png new file mode 100644 index 0000000000000000000000000000000000000000..72a9ddb4a1949a5234affa55168e0b1f33a58370 GIT binary patch literal 550 zcmV+>0@?kEP)Ac?8ohy4@g8LnzIl=)5sZ2BSaA-5JABx7Lqa$NhK;Gf<-_SMG!%(1uXtd)ns44v1MQ@l>-NH-rv1XW8aaPzOkcEI6eDP8d{|O z|N0{$D^_G#i~Pt%zKee@^M{6I>G4B(bLNDcy82xH!Cn3!l|o1jUT7d(dkhU;mh`YV o|BBH^b1*wcLAf?IuK1n#3uI&tiqC|&&;S4c07*qoM6N<$f`aDpzyJUM literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Help.png b/Algoloop.Avalonia/Resources/Help.png new file mode 100644 index 0000000000000000000000000000000000000000..2238c8fdbb45ad5eaca26fa7279aab04f22f0ead GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ za0`PlBg3pY5U9AP@K~$ZPT|q^}S4lSli5>>Gjjb~s?+pIhD_t086u)gQkNLqrQo^RSDi+Rt{x;^Fn>-G1+14D9I1r;P)KgxE&NV33FeQChiZAyE_*QN-Y6wGdY&Mg0Lukee0>MM*6pEL>Es z5?jz{A<^RH{n3qO6pa%Fmd}FQ~-|$l746 z&`zDyzyYwcHHTB9R!!uLYRwTlK~)g}Q&6E1LURg0=awdf^>{ikz57eMiHO?M5$D8?sj7|(QSSYf!wT&^?=7^`7qRpW>`WSoXoyc? zXQSpR#3NXV0ejI(4O-lsiI=_j!@%;-|L^S1&a#XGXDIO=Q3h8e^uOp}h#96B;V5Dh z+$=PmlzEIVoTLQ7^+GdlYKD>6ZJ6#O7O@v6xu}UEh+d-VRYVj0@DxA_=sFTk(*(sCh9@jTM!+qdN7G~jio{2?1E`Hi(}-1Kr2qf`07*qoM6N<$f-wb^=Kufz literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/MoveDown.png b/Algoloop.Avalonia/Resources/MoveDown.png new file mode 100644 index 0000000000000000000000000000000000000000..ea66d5515d67e717e87b4240e80a17eb7be37ada GIT binary patch literal 372 zcmV-)0gL{LP)RhvFHwquafY+aYGmru>3^=&|07V8cGLQ(+4WK*_Jsi#P>fEvaB!&y%w#rC} zGCX|#4zB?qHBX+s{*U4UX$cVqb!8cbFW-MMy!-SWuK`j(wQ7pe3^(sSVR-uD4cGui zAmjh1FW(u2g!l=1{^grr4Ay7*VZaC!`2X+UUj}}D9=ry8{P>08>$e~9 zfJ6>NMxX@Hkbew3+#FanfBE`@;rowYcw>PPr~qsT7bh!<#JBIi8GioygOOHPu*ES@ zA=nTOHfFHEk6(Woe*gK0HKDQKN+>`L|AD4}IS{?rQz;9+)CSb}pHLD92rvKz0CDAW Sn89WM0000&KoErwrnjah27f5v zw)l79r4Q;W_!Pc`ml};1N)b^*30=WdAz@@UO4`!hhIo?6Zf0k`%$|&Kad`!e==U^K z1sl3%kJ%702WqLOY97^%C#T2F7>|BPt0q|mprLEw=x_v{f6IipQ&r(9h+2?k05NAD zp2slFznbJUFJ+F1;6J}EK;{8-VDDkb9Hbw!)>vs-$~OTShi?t!4?yl<7p`L=;h#!Z z6JE#~0SR8-B}4$owoDAH9Zb>;>oh3}SzA$sFp5b|P+w&9`<6WrZr3nn&( zaGudt4biEtfyzXwaS)-4mH`Gjs;Aifby9!f{ETTkuWx+)D&Ic%|M~)EMK=$A1Q-Bl WKyJT`8$SF10000S->P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-v`IukRCwBqkUePAQ53~bLxYP7)7@zgjh;Za8M!I!4FW-K@g&$XwgBXIAjnSOy1Ye;orP8 zZM8XYd6)a{Irp9`KuMfx!SQ*@f|?*4`vxaW_kaCJlKCxswX()YQeku?b50!qG6g|Na9t#r zO*XkLnC;YH>cLAg*&Nf4-(BssP?u$KdthSO|JO9U5VZEg_u(i|ntsOIn~xol0-%&6 zY0t<9?YJ;t7bSg?RJXEok~Za};jy@F2tnhQu1S(6Zk5kQ3oIRZ6_0pFu#oB=k;%A$ zb)I6SO0iNUlg-h!0HU#PoG)8%@=)+&7c}y)RF32j0?j{$UyUZkN|l30#{e`K_ZzBR z)R1(y_WJb6orkm<)&;eVSIfAbdTMo}vvv*H2h_G+E#uWTeggsL)=swxv2EPO0^avF zI3Jd$yZ$V!1RxWqccX8Cm4}P3?G+gO7x~7$r|Jjm3S_c5^^3m)0F?l(Czoo`{Qv*} M07*qoM6N<$g7O&pl>h($ literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Palette.png b/Algoloop.Avalonia/Resources/Palette.png new file mode 100644 index 0000000000000000000000000000000000000000..3d69f179d6742ec09ed2ef6db67add2ece58d783 GIT binary patch literal 689 zcmV;i0#5yjP)l%PVT8v*R^aW2&n)ZL*Zev#5iXwtaFmy@~(})Q#azzQQ;x31IiCRs0|BBDr`^ zkjJ9>Qvjfh$@=*06{LTt`BS@4#l-qY83Ek$`|Jg=29&o6B>F=k1FAIEE``tT0e~d~ z@Z7_gcoUchF#c~h%soh}^N;2N*b*;$xrgAM{o4iLJNq?96~ONNN(JS+ zogh=3*@=jkS0YVfVTW{%dRaSG#bhsMV1sBeh=IzB_Qr#~LiI~JrZH4wv4&ixTg6%k z6+k3X?CH?#(08j&S-B9YeEmo^h>TLE9^@d1v6w>c1Z$)&*kJKA-sRlk34`P2gbig> zZTRb_rFGU3?{L4AOc&tn*2&w}X8;IPQP4uNQaG_ptP@d5C(1lADl7hFK%QQCDJR}8de$i|XzWu|h3xtAN9xU5) zbPx#1ZP1_K>z@;j|==^1poj8Q%OWYR5(u^lgn=#RT#y8^N2mpIF2(;+&oCCCXrIo zDx#=KK`mlYfrNxY7X%5!Kfs0^&;=?8u_!B8updFd^BGQxW94%?Y6j`RY?fJv*~L{)U+&0&VT5#G3Tg$ZX8+l&Z~!Z^8N zf2s|385xeVmcPwj@n0fCeb`ZpYO#i`50JD+Dd%c*+grqJ%?HGMhw0Hd&d!_@4I<>~d7c)s-2V9|mR`8Pi}M!+potz1o1`<3 zI4ozGIyFwUTqY{@%5$%AdFEA4s43zkm>QU3e)=@eF3hp}cw6Xt*z}`En-0Uq7)cSQ z*>*W7K4tO3B90xW=2z(i73v&OrGQV1^XJbp|NJbP=w%9w_WsQ`)tSXJl!Fq-x6#Nq z@v=Sg8%KQe#VWc~Nfo$u<6~N(I^n2Ets*@_)9_4myOU&hJ#YX&*6)(K zlcFQmlZN54|B0b?BnICaLulxx?K5V|$?vSKGC@QS@nHKeW~OF&cljNz ze*Pi(d|iIrZQ}bK90pl_`E@zaC?4k7dh`dTW6&1Q=kk(`wM}MY3w*MCoq3iZ6J_=K zw`jg9EA9BQf_|9?a>YHii(7o3x?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hU`_H=O!skpV|(ptY}Ly==2|8w-E@H8G)5LDUC%v0v9D5&vfhtRv!JKSw4oJ@_4 z2Y!`3f2?~{;l!nV*@q^}T>kQN=}Aq?^nd4449`tITCuG*Zno{INV&W6=Q2D5ckG>Q zro2_$MA=oLHvLM~y8LrxO0Eu9ZgvPC-Lc0?)}_lqL_McRptn?HnfUS0B^)Imx8IRe z)KJt=f6mTu`t9!DstI>Bllr2Z&IbDLvE@9lhqt3Eqd&60>iqA`%xCQ7?Br)RT;P1h z`Sr+ktNcTY6Mr28 PdYi%1)z4*}Q$iB}e9e%5 literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Save.png b/Algoloop.Avalonia/Resources/Save.png new file mode 100644 index 0000000000000000000000000000000000000000..2ade0ad04baa455aca80f45515eee029fbd78a03 GIT binary patch literal 286 zcmV+(0pb3MP)Bzy;pzi>Zsi2Ypg4qG@uKkN}pVb9pbE86MCu_V64RI+|U zFXH!zk8mEjc2%GWt`$!`!xIihYsiyW37bgrSJ=Q>?gkfF@YCF#@DI36crO^w2^@zt zM%@z{p?ZT=Y}fGn*u=*mfjQhLK2{Fvm{&|8D**R69U!n=P5f&QW-*Pg+)075K2s*j kdGDe1$HTjd4>cUV0a?N-5nmxx82|tP07*qoM6N<$f`FWM1^@s6 literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/SortTextDown.png b/Algoloop.Avalonia/Resources/SortTextDown.png new file mode 100644 index 0000000000000000000000000000000000000000..8a5f5b5a1f9bbbef84a6ff8fc30c2aad52bc0639 GIT binary patch literal 263 zcmV+i0r>ujP)lB%ab+Dx982B437K>H!Czy0yi$NBZP2}o8Rt#b=nfxO+*cKKBiij9L z!@av8`xbWI^l~0fIlz`6ST~+|Ljy_KH3h+D*>?>L?Mw$fU8&n?V9|#w9V3-E*!QKc z@7rDsR6TiCvEap{>LfUl$!uuIWDX`lbY=wS-iw^X!L=JrXMQx|psuFw({Wx`wX_An zrIuxoc=Kv52Z;xvNUwO%sgar$YyZi3z3tbbB^S~hz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-5J^NqRCwCdletktK@dcrR1%)ZKtT`(nJ5?vObCDo zAOcds5heX=&)J>%i;ICILk2~A?Y!!qnqIWlxJFB^)ZYVEKh4A2+{_F$rB*|$Qfo!c zP*vu+xu@Os_9Vc}xW8M{7Hg)s!i5`(fhdeYd3<@_u-l$apr))>YlZ;FsS$Ex@H1jY z9QI_%=PT4|h^`s@%oG~EuZ*D)k}!21$@%;dwJITklZML;pBo`nT&V27I&!|4pyFi4 zN62D~-sqh$P7&uLlI1)=&F}&)8=Vte6h`L>!Bb17lyU)}%IFIH;gkN5IQEXd@5m{W zqDNKF1LnE8=hu%-DTS00F+^evq?izqUmt1l|Ht$_09nM~YeKRm(EtDd07*qoM6N<$ Eg22G13IG5A literal 0 HcmV?d00001 diff --git a/Algoloop.Avalonia/Resources/Tools.png b/Algoloop.Avalonia/Resources/Tools.png new file mode 100644 index 0000000000000000000000000000000000000000..233d3a123f0c3825da357472103b8b6a65031ca4 GIT binary patch literal 410 zcmV;L0cHM)P)ho9})K$yNUTcAESXUvK`FfCJ4Rj>?rTXgKR;2$cEbP0%XGHA zM0A2-Y$g03)M9f!dkIr`iidcOO?-^Be}g98O-oGU1^$Jbukor#SZdLrfekF<0&npQ zk8sxM_Fh?#79;MB?02p(+0I;%&G;$e#@&8xGrVr1$XvxYS+G*fyZ@DAv7m-ath<}a z7z^$vu?MFMe4@bKf~-?LBE5h&zPf)p=^UD(~5IyroxmVP@Iw+l@qoHVe}%B=cmUu863rEtC&cS}1O+ i$U^d+%j=RnmvbFa1qLjR@1ei|0000 SaveConfig(), () => !IsBusy); + ExitCommand = new RelayCommand(_ => DoExit(), _ => !IsBusy); + } + + public ICommand SaveCommand { get; } + public ICommand ExitCommand { get; } + public SettingsViewModel SettingsViewModel { get; } + public MarketsViewModel MarketsViewModel { get; } + public StrategiesViewModel StrategiesViewModel { get; } + public ResearchViewModel ResearchViewModel { get; } + public LogViewModel LogViewModel { get; } + + public static string Title => $"{AboutModel.Title} {AboutModel.Version}"; + + public bool IsBusy + { + get => _isBusy; + set => SetProperty(ref _isBusy, value); + } + + public string StatusMessage + { + get => _statusMessage; + set => SetProperty(ref _statusMessage, value); + } + + public void SaveConfig() + { + StatusMessage = "Configuration saved"; + } + + public void DoSettings(bool update) + { + StatusMessage = "Settings updated"; + } + + private void DoExit() + { + System.Environment.Exit(0); + } + } + + public class SettingsViewModel : ViewModelBase { } + + public class MarketsViewModel : ViewModelBase + { + public ObservableCollection Markets { get; } = new ObservableCollection(); + } + + public class StrategiesViewModel : ViewModelBase + { + public ObservableCollection Strategies { get; } = new ObservableCollection(); + } + + public class ResearchViewModel : ViewModelBase + { + public string Source => "about:blank"; + + public void StopJupyter() + { + // Stub implementation + } + } + + public class LogViewModel : ViewModelBase + { + public ObservableCollection Logs { get; } = new ObservableCollection(); + } +} diff --git a/Algoloop.Avalonia/ViewModels/ViewModelBase.cs b/Algoloop.Avalonia/ViewModels/ViewModelBase.cs new file mode 100644 index 0000000000..fa2757c2fb --- /dev/null +++ b/Algoloop.Avalonia/ViewModels/ViewModelBase.cs @@ -0,0 +1,23 @@ +using System.ComponentModel; +using System.Runtime.CompilerServices; + +namespace Algoloop.Wpf.ViewModels +{ + public class ViewModelBase : INotifyPropertyChanged + { + public event PropertyChangedEventHandler? PropertyChanged; + + protected void OnPropertyChanged([CallerMemberName] string? propertyName = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + protected bool SetProperty(ref T field, T value, [CallerMemberName] string? propertyName = null) + { + if (Equals(field, value)) return false; + field = value; + OnPropertyChanged(propertyName); + return true; + } + } +} diff --git a/Algoloop.Avalonia/ViewModels/ViewModelLocator.cs b/Algoloop.Avalonia/ViewModels/ViewModelLocator.cs new file mode 100644 index 0000000000..acd65b4f52 --- /dev/null +++ b/Algoloop.Avalonia/ViewModels/ViewModelLocator.cs @@ -0,0 +1,33 @@ +using CommunityToolkit.Mvvm.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; + +namespace Algoloop.Wpf.ViewModels +{ + public class ViewModelLocator + { + public ViewModelLocator() + { + var services = new ServiceCollection(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + Ioc.Default.ConfigureServices(services.BuildServiceProvider()); + } + + public static MainViewModel? MainViewModel => + Ioc.Default.GetService(); + public static MarketsViewModel? MarketsViewModel => + Ioc.Default.GetService(); + public static StrategiesViewModel? StrategiesViewModel => + Ioc.Default.GetService(); + public static ResearchViewModel? ResearchViewModel => + Ioc.Default.GetService(); + public static LogViewModel? LogViewModel => + Ioc.Default.GetService(); + public static SettingsViewModel? SettingsViewModel => + Ioc.Default.GetService(); + } +} diff --git a/Algoloop.Avalonia/Views/MainWindow.axaml b/Algoloop.Avalonia/Views/MainWindow.axaml new file mode 100644 index 0000000000..ac298c4e0f --- /dev/null +++ b/Algoloop.Avalonia/Views/MainWindow.axaml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Algoloop.Avalonia/Views/MainWindow.axaml.cs b/Algoloop.Avalonia/Views/MainWindow.axaml.cs new file mode 100644 index 0000000000..e916e21f92 --- /dev/null +++ b/Algoloop.Avalonia/Views/MainWindow.axaml.cs @@ -0,0 +1,96 @@ +/* + * Copyright 2018 Capnode AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using Algoloop.Wpf.Model; +using Algoloop.Wpf.ViewModels; +using Avalonia.Controls; +using Avalonia.Interactivity; +using QuantConnect.Configuration; +using System; +using System.Diagnostics; + +namespace Algoloop.Avalonia.Views +{ + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + + string exeFolder = MainService.GetProgramFolder(); + Config.Set("plugin-directory", exeFolder); + Config.Set("composer-dll-directory", exeFolder); + } + + private void OnFileSettings(object? sender, RoutedEventArgs e) + { + // Settings dialog - to be implemented + if (DataContext is MainViewModel model) + { + model.SaveConfig(); + // TODO: Show settings dialog + model.DoSettings(false); + } + } + + private void OnHelpAbout(object? sender, RoutedEventArgs e) + { + // About dialog - to be implemented + // TODO: Show about dialog + } + + private void OnHelpDocumentation(object? sender, RoutedEventArgs e) + { + OpenUrl("https://github.com/Capnode/Algoloop/wiki/Documentation"); + } + + private void OnHelpTechnicalSupport(object? sender, RoutedEventArgs e) + { + OpenUrl("https://github.com/Capnode/Algoloop/issues"); + } + + private void OnHelpPrivacyPolicy(object? sender, RoutedEventArgs e) + { + OpenUrl("https://github.com/Capnode/Algoloop/wiki/Privacy-policy"); + } + + private static void OpenUrl(string url) + { + try + { + if (OperatingSystem.IsWindows()) + { + url = url.Replace("&", "^&"); + var psi = new ProcessStartInfo("cmd", $"/c start {url}") + { + CreateNoWindow = true + }; + Process.Start(psi); + } + else if (OperatingSystem.IsLinux()) + { + Process.Start("xdg-open", url); + } + else if (OperatingSystem.IsMacOS()) + { + Process.Start("open", url); + } + } + catch (Exception ex) + { + Debug.WriteLine($"{ex.GetType()}: {ex.Message}"); + } + } + } +} diff --git a/Algoloop.Avalonia/app.manifest b/Algoloop.Avalonia/app.manifest new file mode 100644 index 0000000000..75b6673a43 --- /dev/null +++ b/Algoloop.Avalonia/app.manifest @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PerMonitorV2 + + true + + + + + + + diff --git a/Algoloop.sln b/Algoloop.sln index 7335e41604..f57f925c8a 100644 --- a/Algoloop.sln +++ b/Algoloop.sln @@ -63,6 +63,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Algoloop", "Algoloop\Algolo EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuantConnect.DownloaderDataProvider.Launcher", "DownloaderDataProvider\QuantConnect.DownloaderDataProvider.Launcher.csproj", "{387365D5-6937-4211-AA79-CBE46CCB3961}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Algoloop.Avalonia", "Algoloop.Avalonia\Algoloop.Avalonia.csproj", "{B5BCA428-DDD3-466D-89EC-911018CED27E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -667,6 +669,26 @@ Global {387365D5-6937-4211-AA79-CBE46CCB3961}.Release|x64.Build.0 = Release|Any CPU {387365D5-6937-4211-AA79-CBE46CCB3961}.Release|x86.ActiveCfg = Release|Any CPU {387365D5-6937-4211-AA79-CBE46CCB3961}.Release|x86.Build.0 = Release|Any CPU + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|Any CPU.ActiveCfg = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|Any CPU.Build.0 = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|ARM.ActiveCfg = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|ARM.Build.0 = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|arm64.ActiveCfg = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|arm64.Build.0 = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|x64.ActiveCfg = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|x64.Build.0 = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|x86.ActiveCfg = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Debug|x86.Build.0 = Debug|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|Any CPU.ActiveCfg = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|Any CPU.Build.0 = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|ARM.ActiveCfg = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|ARM.Build.0 = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|arm64.ActiveCfg = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|arm64.Build.0 = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|x64.ActiveCfg = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|x64.Build.0 = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|x86.ActiveCfg = Release|x64 + {B5BCA428-DDD3-466D-89EC-911018CED27E}.Release|x86.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE