From dd3a9961723e44af3e66ed950d99be4aa9c6dea7 Mon Sep 17 00:00:00 2001 From: Vincent Maas Date: Sat, 16 Mar 2024 13:22:27 +0100 Subject: [PATCH] use worker to start services and remove startup code from main form --- ColorControl/ColorControl.csproj | 16 +- ColorControl/MainForm.Designer.cs | 1 - ColorControl/MainForm.cs | 254 +-- ColorControl/MainForm.resx | 1833 +---------------- ColorControl/MainWorker.cs | 187 ++ ColorControl/Program.cs | 72 +- ColorControl/Properties/Resources.Designer.cs | 20 +- ColorControl/Properties/Resources.resx | 3 + ColorControl/{ => Resources}/pngbarn.ico | Bin ColorControl/Services/AMD/AmdPanel.cs | 41 +- ColorControl/Services/AMD/AmdService.cs | 2 + ColorControl/Services/Common/IServiceBase.cs | 6 + .../Services/Common/NotifyIconManager.cs | 233 +++ ColorControl/Services/Common/ServiceBase.cs | 83 +- .../Services/Common/ServiceManager.cs | 55 +- ColorControl/Services/Common/UpdateManager.cs | 163 ++ .../Services/GameLauncher/GamePanel.cs | 34 +- .../Services/GameLauncher/GameService.cs | 9 +- ColorControl/Services/LG/LgPanel.cs | 30 +- ColorControl/Services/LG/LgService.cs | 4 +- ColorControl/Services/NVIDIA/NvPanel.cs | 35 +- ColorControl/Services/NVIDIA/NvService.cs | 17 +- .../Services/Samsung/ISamsungService.cs | 1 - ColorControl/Services/Samsung/SamsungPanel.cs | 33 +- .../Services/Samsung/SamsungService.cs | 29 +- Shared/Common/GlobalContext.cs | 21 +- Shared/Common/ShortcutStruct.cs | 101 +- Shared/Contracts/Module.cs | 44 +- .../KeyboardShortcutDispatcher.cs | 370 ++++ .../WindowMessageDispatcher.cs | 86 + Shared/Forms/DarkModeUtils.cs | 57 +- Shared/Forms/MessageForms.cs | 11 +- 32 files changed, 1564 insertions(+), 2287 deletions(-) create mode 100644 ColorControl/MainWorker.cs rename ColorControl/{ => Resources}/pngbarn.ico (100%) create mode 100644 ColorControl/Services/Common/IServiceBase.cs create mode 100644 ColorControl/Services/Common/NotifyIconManager.cs create mode 100644 ColorControl/Services/Common/UpdateManager.cs create mode 100644 Shared/EventDispatcher/KeyboardShortcutDispatcher.cs create mode 100644 Shared/EventDispatcher/WindowMessageDispatcher.cs diff --git a/ColorControl/ColorControl.csproj b/ColorControl/ColorControl.csproj index d71a006..3153c1a 100644 --- a/ColorControl/ColorControl.csproj +++ b/ColorControl/ColorControl.csproj @@ -27,7 +27,7 @@ true false true - pngbarn.ico + Resources\pngbarn.ico 10.0.20348.0 2020-2024 Maassoft Maassoft @@ -65,6 +65,12 @@ UserControl + + + True + True + Resources.resx + Form @@ -81,13 +87,11 @@ + PreserveNewest - - - @@ -134,6 +138,10 @@ + + PublicResXFileCodeGenerator + Resources.Designer.cs + Designer diff --git a/ColorControl/MainForm.Designer.cs b/ColorControl/MainForm.Designer.cs index 0d0d10d..6df3652 100644 --- a/ColorControl/MainForm.Designer.cs +++ b/ColorControl/MainForm.Designer.cs @@ -96,7 +96,6 @@ ClientSize = new System.Drawing.Size(1150, 594); Controls.Add(btnUpdate); Controls.Add(tcMain); - Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); MinimumSize = new System.Drawing.Size(1140, 611); Name = "MainForm"; diff --git a/ColorControl/MainForm.cs b/ColorControl/MainForm.cs index 4a460d7..7d56c5b 100644 --- a/ColorControl/MainForm.cs +++ b/ColorControl/MainForm.cs @@ -1,4 +1,5 @@ using ColorControl.Forms; +using ColorControl.Properties; using ColorControl.Services.AMD; using ColorControl.Services.Common; using ColorControl.Services.GameLauncher; @@ -14,7 +15,6 @@ using ColorControl.Shared.Services; using Linearstar.Windows.RawInput; using Microsoft.Extensions.DependencyInjection; using NLog; -using novideo_srgb; using NWin32; using System; using System.Collections.Generic; @@ -46,7 +46,7 @@ namespace ColorControl private NvPanel _nvPanel; - public NotifyIcon _trayIcon; + public NotifyIconManager _notifyIconManager; private bool _initialized = false; private Config _config; private bool _setVisibleCalled = false; @@ -54,13 +54,6 @@ namespace ColorControl private LgPanel _lgPanel; private SamsungPanel _samsungPanel; - private ToolStripMenuItem _nvTrayMenu; - private ToolStripMenuItem _novideoTrayMenu; - private ToolStripMenuItem _amdTrayMenu; - private ToolStripMenuItem _lgTrayMenu; - private ToolStripMenuItem _samsungTrayMenu; - private ToolStripMenuItem _gameTrayMenu; - private StartUpParams StartUpParams { get; } public string _lgTabMessage { get; private set; } @@ -78,14 +71,22 @@ namespace ColorControl private Dictionary> _modules = new(); public MainForm(AppContextProvider appContextProvider, PowerEventDispatcher powerEventDispatcher, ServiceManager serviceManager, - IServiceProvider serviceProvider, WinApiAdminService winApiAdminService, WinApiService winApiService, ElevationService elevationService) + IServiceProvider serviceProvider, WinApiAdminService winApiAdminService, WinApiService winApiService, ElevationService elevationService, NotifyIconManager notifyIconManager) { InitializeComponent(); + Icon = Resources.AppIcon; + + var appContext = appContextProvider.GetAppContext(); + + if (appContext.MainHandle == 0) + { + appContext.MainHandle = Handle; + } KeyboardShortcutManager.MainHandle = Handle; - StartUpParams = appContextProvider.GetAppContext().StartUpParams; - appContextProvider.GetAppContext().SynchronizationContext = AsyncOperationManager.SynchronizationContext; + StartUpParams = appContext.StartUpParams; + appContext.SynchronizationContext = AsyncOperationManager.SynchronizationContext; _powerEventDispatcher = powerEventDispatcher; _serviceManager = serviceManager; @@ -93,17 +94,11 @@ namespace ColorControl _winApiAdminService = winApiAdminService; _winApiService = winApiService; _elevationService = elevationService; + _notifyIconManager = notifyIconManager; _dataDir = Program.DataDir; _config = Program.Config; - var currentVersionInfo = FileVersionInfo.GetVersionInfo(Application.ExecutablePath); - - Text = Application.ProductName + " " + Application.ProductVersion; - - if (_winApiService.IsAdministrator()) - { - Text += " (administrator)"; - } + Text = appContext.ApplicationTitleAdmin; LoadConfig(); @@ -113,37 +108,7 @@ namespace ColorControl MessageForms.MainForm = this; - _nvTrayMenu = new ToolStripMenuItem("NVIDIA presets"); - _novideoTrayMenu = new ToolStripMenuItem("Novideo sRGB"); - _amdTrayMenu = new ToolStripMenuItem("AMD presets"); - _lgTrayMenu = new ToolStripMenuItem("LG presets"); - _samsungTrayMenu = new ToolStripMenuItem("Samsung presets"); - _gameTrayMenu = new ToolStripMenuItem("Game Launcher"); - _trayIcon = new NotifyIcon() - { - Icon = Icon, - ContextMenuStrip = new ContextMenuStrip(), - Visible = _config.MinimizeToTray, - Text = Text - }; - - _trayIcon.ContextMenuStrip.Items.AddRange(new ToolStripItem[] { - _nvTrayMenu, - _novideoTrayMenu, - _amdTrayMenu, - _lgTrayMenu, - _samsungTrayMenu, - _gameTrayMenu, - new ToolStripSeparator(), - new ToolStripMenuItem("Open", null, OpenForm), - new ToolStripSeparator(), - new ToolStripMenuItem("Restart", null, Restart), - new ToolStripMenuItem("Exit", null, Exit) - }); - - _trayIcon.MouseDoubleClick += trayIcon_MouseDoubleClick; - _trayIcon.ContextMenuStrip.Opened += trayIconContextMenu_Popup; - _trayIcon.BalloonTipClicked += trayIconBalloonTip_Clicked; + _notifyIconManager.Build(); InitShortcut(SHORTCUTID_SCREENSAVER, _config.ScreenSaverShortcut, StartScreenSaver); @@ -155,7 +120,7 @@ namespace ColorControl _winApiAdminService.InstallChromeFix(true, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); } - _screenStateNotify = WinApi.RegisterPowerSettingNotification(Handle, ref Utils.GUID_CONSOLE_DISPLAY_STATE, 0); + _screenStateNotify = WinApi.RegisterPowerSettingNotification(appContext.MainHandle, ref Utils.GUID_CONSOLE_DISPLAY_STATE, 0); //Scale(new SizeF(1.25F, 1.25F)); @@ -225,8 +190,6 @@ namespace ColorControl } tcMain.SelectedIndex = 0; - - _serviceManager.NvService?.InstallEventHandlers(); } private UserControl InitNvService() @@ -242,7 +205,7 @@ namespace ColorControl var rpcService = _serviceProvider.GetRequiredService(); var winAdminService = _serviceProvider.GetRequiredService(); - _nvPanel = new NvPanel(_serviceManager.NvService, _trayIcon, Handle, appContextProvider, rpcService, winAdminService); + _nvPanel = new NvPanel(_serviceManager.NvService, _notifyIconManager.NotifyIcon, appContextProvider, rpcService, winAdminService); _nvPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; InitShortcut(NvPanel.SHORTCUTID_NVQA, _config.NvQuickAccessShortcut, _serviceManager.NvService.ToggleQuickAccessForm); @@ -262,10 +225,10 @@ namespace ColorControl { try { - var appContextProvider = _serviceProvider.GetRequiredService(); - _serviceManager.AmdService = new AmdService(appContextProvider); + _serviceManager.AmdService = _serviceProvider.GetRequiredService(); - _amdPanel = new AmdPanel(_serviceManager.AmdService, _trayIcon, Handle); + var appContextProvider = _serviceProvider.GetRequiredService(); + _amdPanel = new AmdPanel(_serviceManager.AmdService, _notifyIconManager.NotifyIcon, appContextProvider); _amdPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; InitShortcut(AmdPanel.SHORTCUTID_AMDQA, _config.AmdQuickAccessShortcut, _serviceManager.AmdService.ToggleQuickAccessForm); @@ -287,7 +250,8 @@ namespace ColorControl { _serviceManager.GameService = _serviceProvider.GetRequiredService(); - _gamePanel = new GamePanel(_serviceManager.GameService, _serviceManager.NvService, _serviceManager.AmdService, _serviceManager.LgService, _serviceManager.SamsungService, _trayIcon, Handle); + var appContextProvider = _serviceProvider.GetRequiredService(); + _gamePanel = new GamePanel(_serviceManager.GameService, _serviceManager.NvService, _serviceManager.AmdService, _serviceManager.LgService, _serviceManager.SamsungService, _notifyIconManager.NotifyIcon, appContextProvider); _gamePanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; InitShortcut(GamePanel.SHORTCUTID_GAMEQA, _config.GameQuickAccessShortcut, _serviceManager.GameService.ToggleQuickAccessForm); @@ -318,7 +282,8 @@ namespace ColorControl { _serviceManager.LgService = _serviceProvider.GetRequiredService(); - _lgPanel = new LgPanel(_serviceManager.LgService, _serviceManager.NvService, _serviceManager.AmdService, _trayIcon, Handle, _powerEventDispatcher); + var appContextProvider = _serviceProvider.GetRequiredService(); + _lgPanel = new LgPanel(_serviceManager.LgService, _serviceManager.NvService, _serviceManager.AmdService, _notifyIconManager.NotifyIcon, _powerEventDispatcher, appContextProvider); _lgPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; _lgPanel.Init(); @@ -342,9 +307,8 @@ namespace ColorControl { _serviceManager.SamsungService = _serviceProvider.GetRequiredService(); - //_serviceManager.SamsungService.Init(); - - _samsungPanel = new SamsungPanel(_serviceManager.SamsungService, _serviceManager.NvService, _serviceManager.AmdService, Handle, _powerEventDispatcher); + var appContextProvider = _serviceProvider.GetRequiredService(); + _samsungPanel = new SamsungPanel(_serviceManager.SamsungService, _serviceManager.NvService, _serviceManager.AmdService, _powerEventDispatcher, appContextProvider); _samsungPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; _samsungPanel.Init(); @@ -379,6 +343,13 @@ namespace ColorControl Program.Restart(); } + public void OpenForm() + { + Show(); + WindowState = FormWindowState.Normal; + Activate(); + } + private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e) { Show(); @@ -466,25 +437,25 @@ namespace ColorControl var preset = _serviceManager.NvService?.GetPresets().FirstOrDefault(x => x.id == id); if (preset != null) { - _nvPanel?.ApplyNvPreset(preset); + _serviceManager.NvService?.ApplyPresetUi(preset); } var amdPreset = _serviceManager.AmdService?.GetPresets().FirstOrDefault(x => x.id == id); if (amdPreset != null) { - _amdPanel?.ApplyAmdPreset(amdPreset); + _serviceManager.AmdService?.ApplyPresetUi(amdPreset); } var lgPreset = _serviceManager.LgService?.GetPresets().FirstOrDefault(x => x.id == id); if (lgPreset != null) { - _lgPanel?.ApplyLgPreset(lgPreset); + _serviceManager.LgService?.ApplyPresetUi(lgPreset); } var samsungPreset = _serviceManager.SamsungService?.GetPresets().FirstOrDefault(x => x.id == id); if (samsungPreset != null) { - _samsungPanel?.ApplyPreset(samsungPreset); + _serviceManager.SamsungService?.ApplyPresetUi(samsungPreset); } } } @@ -511,15 +482,6 @@ namespace ColorControl Logger.Debug("WM_BRINGTOFRONT message received, opening form"); OpenForm(this, EventArgs.Empty); } - else if (m.Msg == NativeConstants.WM_SYSCOMMAND) - { - //Logger.Debug($"WM_SYSCOMMAND: {m.WParam.ToInt32()}"); - - //if (m.WParam.ToInt32() == NativeConstants.SC_MONITORPOWER) - //{ - - //} - } else if (m.Msg == NativeConstants.WM_POWERBROADCAST) { //Logger.Debug($"WM_POWERBROADCAST: {m.WParam.ToInt32()}"); @@ -548,7 +510,7 @@ namespace ColorControl private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { // Hide tray icon, otherwise it will remain shown until user mouses over it - _trayIcon.Visible = false; + _notifyIconManager.HideIcon(); if (_screenStateNotify != IntPtr.Zero) { @@ -723,124 +685,6 @@ NOTE: installing the service may cause a User Account Control popup."); //control.BackColor = SystemColors.Window; } - private void UpdateTrayMenu(ToolStripMenuItem menu, IEnumerable presets, EventHandler eventHandler) - { - menu.DropDownItems.Clear(); - - foreach (var preset in presets.OrderBy(p => p.name)) - { - var name = preset.GetTextForMenuItem(); - var keys = Keys.None; - - if (!string.IsNullOrEmpty(preset.shortcut)) - { - name += " " + preset.shortcut; - //keys = Utils.ShortcutToKeys(preset.shortcut); - } - - var item = new ToolStripMenuItem(name, null, null, keys); - item.Tag = preset; - item.Click += eventHandler; - item.ForeColor = FormUtils.MenuItemForeColor; - menu.DropDownItems.Add(item); - } - } - - private async void TrayMenuItemNv_Click(object sender, EventArgs e) - { - var item = sender as ToolStripMenuItem; - var preset = (NvPreset)item.Tag; - - await _nvPanel?.ApplyNvPreset(preset); - } - - private async void TrayMenuItemAmd_Click(object sender, EventArgs e) - { - var item = sender as ToolStripMenuItem; - var preset = (AmdPreset)item.Tag; - - await _amdPanel?.ApplyAmdPreset(preset); - } - - private async void TrayMenuItemGame_Click(object sender, EventArgs e) - { - var item = sender as ToolStripMenuItem; - var preset = (GamePreset)item.Tag; - - await _gamePanel?.ApplyGamePreset(preset); - } - - private void trayIconContextMenu_Popup(object sender, EventArgs e) - { - _nvTrayMenu.Visible = _serviceManager.NvService != null; - if (_nvTrayMenu.Visible) - { - var presets = _serviceManager.NvService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate || x.applyResolution || x.applyDriverSettings || x.applyOther || x.applyOverclocking || x.ApplyColorEnhancements || x.applyHdmiSettings); - - UpdateTrayMenu(_nvTrayMenu, presets, TrayMenuItemNv_Click); - } - - _novideoTrayMenu.Visible = _serviceManager.NvService != null && MainWindow.IsInitialized(); - if (_novideoTrayMenu.Visible) - { - MainWindow.UpdateContextMenu(_novideoTrayMenu); - } - - _amdTrayMenu.Visible = _serviceManager.AmdService != null; - if (_amdTrayMenu.Visible) - { - var presets = _serviceManager.AmdService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate); - - UpdateTrayMenu(_amdTrayMenu, presets, TrayMenuItemAmd_Click); - } - - _lgTrayMenu.Visible = _serviceManager.LgService != null; - if (_lgTrayMenu.Visible) - { - var presets = _serviceManager.LgService.GetPresets().Where(x => !string.IsNullOrEmpty(x.appId) || x.steps.Any()); - - _lgTrayMenu.DropDownItems.Clear(); - - UpdateTrayMenu(_lgTrayMenu, presets, TrayMenuItemLg_Click); - } - - _samsungTrayMenu.Visible = _serviceManager.SamsungService != null; - if (_samsungTrayMenu.Visible) - { - var presets = _serviceManager.SamsungService.GetPresets().Where(x => x.Steps.Any()); - - _samsungTrayMenu.DropDownItems.Clear(); - - UpdateTrayMenu(_samsungTrayMenu, presets, TrayMenuItemSamsung_Click); - } - - _gameTrayMenu.Visible = _serviceManager.GameService != null; - if (_gameTrayMenu.Visible) - { - var presets = _serviceManager.GameService.GetPresets(); - - _gameTrayMenu.DropDownItems.Clear(); - - UpdateTrayMenu(_gameTrayMenu, presets, TrayMenuItemGame_Click); - } - } - - private async void TrayMenuItemLg_Click(object sender, EventArgs e) - { - var item = sender as ToolStripMenuItem; - var preset = (LgPreset)item.Tag; - - await _lgPanel?.ApplyLgPreset(preset); - } - - private async void TrayMenuItemSamsung_Click(object sender, EventArgs e) - { - var item = sender as ToolStripMenuItem; - var preset = (SamsungPreset)item.Tag; - - await _samsungPanel?.ApplyPreset(preset); - } - private void MainForm_Activated(object sender, EventArgs e) { if (tcMain.SelectedTab?.Controls.Count > 0 && tcMain.SelectedTab.Controls[0] is IModulePanel panel) @@ -861,10 +705,10 @@ NOTE: installing the service may cause a User Account Control popup."); { await _amdPanel.AfterInitialized(); } - if (_trayIcon.Visible) - { - await CheckForUpdates(); - } + //if (_trayIcon.Visible) + //{ + // await CheckForUpdates(); + //} } private async Task CheckForUpdates() @@ -943,9 +787,9 @@ NOTE: installing the service may cause a User Account Control popup."); btnUpdate.Visible = true; - if (_trayIcon.Visible) + if (_notifyIconManager.NotifyIcon.Visible) { - _trayIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click on the Update-button to update", ToolTipIcon.Info); + _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click on the Update-button to update", ToolTipIcon.Info); } else { @@ -955,9 +799,9 @@ NOTE: installing the service may cause a User Account Control popup."); return; } - if (_trayIcon.Visible) + if (_notifyIconManager.NotifyIcon.Visible) { - _trayIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click to open the GitHub page", ToolTipIcon.Info); + _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click to open the GitHub page", ToolTipIcon.Info); } else { @@ -1039,7 +883,7 @@ NOTE: installing the service may cause a User Account Control popup."); DarkModeUtils.InitWpfTheme(); - DarkModeUtils.SetContextMenuForeColor(_trayIcon.ContextMenuStrip, FormUtils.CurrentForeColor); + DarkModeUtils.SetContextMenuForeColor(_notifyIconManager.NotifyIcon.ContextMenuStrip, FormUtils.CurrentForeColor); InitSelectedTab(); } @@ -1059,7 +903,7 @@ NOTE: installing the service may cause a User Account Control popup."); internal void CloseForRestart() { Hide(); - _trayIcon.Visible = false; + _notifyIconManager.NotifyIcon.Visible = false; } protected override bool ProcessCmdKey(ref Message msg, Keys keyData) diff --git a/ColorControl/MainForm.resx b/ColorControl/MainForm.resx index 74bd8a9..274336b 100644 --- a/ColorControl/MainForm.resx +++ b/ColorControl/MainForm.resx @@ -1,17 +1,17 @@  - @@ -117,1787 +117,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 147, 17 - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACnFZK0hxWStIyp5PpcqeT6XlsljR5bJY0eSxV9Lk - sVfSxppNqcaaTalkTiVSZE4lUgAAABIAAAASAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoA - AAAKcVkrSHFZK0jKnk+lyp5PpeWyWNHlsljR5LFX0uSxV9LGmk2pxppNqWROJVJkTiVSAAAAEgAAABIA - AAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAFAAAABb+UTIO/lEyD/MNj/vzDY/78w2P//MNj//zDY//8w2P//MNj//zDY//8 - w2P//MNj//zDY//8w2P//MNj//zDY//7w2P++8Nj/quGRZGrhkWRAAAADQAAAA0AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFv5RMg7+UTIP8 - w2P+/MNj/vzDY//8w2P//MNj//zDY//8w2P//MNj//zDY//8w2P//MNj//zDY//8w2P//MNj//vDY/77 - w2P+q4ZFkauGRZEAAAANAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAsAAAAL8bpi6fG6Yun5wGX/+cBl//nAZf/5wGX/+cFl//nBZf/5wWX/+cFl//nBZf/5 - wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5wWX/+cBl//nAZf/5wGX/+cBl/+23YOztt2DsAAAAHQAAAB0A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAvxumLp8bpi6fnAZf/5 - wGX/+cBl//nAZf/5wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5 - wGX/+cBl//nAZf/5wGX/7bdg7O23YOwAAAAdAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAABgAAAAbzu2Ty87tk8ve+Zv/3vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/975m//e+Zv/2 - vmb/9r5m//e+Zv/3vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/975m//e+Zv/2vmb/9r5m//C5Y/Tw - uWP0AAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABvO7ZPLzu2Ty975m//e+Zv/2 - vmb/9r5m//e+Zv/3vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/975m//e+Zv/2vmb/9r5m//e+Zv/3 - vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/8Llj9PC5Y/QAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAOOuYLzjrmC89Ltn//S7Z//0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0 - u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0 - u2f/9Ltn/9KiWcjSolnIAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA465gvOOuYLz0u2f/9Ltn//S7aP/0 - u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0 - u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7Z//0u2f/0qJZyNKiWcgAAAADAAAAAwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAEAAAABAAAABAAAAAQAAAAFAAAABQAAAAMAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAA - AAAAdVU1GHVVNRjxuGj/8bho//G5aP/xuWj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x - uGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x - uGj/8bho//G4aP/xuGj/8bho/zIoFDMyKBQzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIA - AAAFAAAABQAAAAUAAAAFAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAABAAAAAUA - AAAFAAAAAwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAB1VTUYdVU1GPG4aP/xuGj/8blo//G5aP/x - uGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x - uGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/MigUMzIoFDMA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAUAAAAFAAAABQAAAAUAAAACAAAAAgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4A - AAAOfU1Xan1NV2q2cX/WtnF/1sN6i/fDeov3xXuO+8V7jvvAeo3xwHqN8aZqe76manu+QSkzS0EpM0sA - AAAKAAAACuCqY7TgqmO07rVp/+61af/utWn/7rVp/+61af/utWn/7rZp/+62af/utmn/7rZp/+62af/u - tmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rVp/+61af/u - tWn/7rVp/+61af/utWn/7rVp/+61af/OnFvCzpxbwgAAAAIAAAACJi0aKCYtGih1nFGjdZxRo4i6X+uI - ul/ricBj+onAY/qGwGL5hsBi+Xy1XeN8tV3jWINCjliDQo4HBwckBwcHJAAAAAIAAAACAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA59TVdqfU1XarZxf9a2cX/Ww3qL98N6i/fF - e477xXuO+8B6jfHAeo3xpmp7vqZqe75BKTNLQSkzSwAAAAoAAAAK4KpjtOCqY7TutWn/7rVp/+61af/u - tWn/7rVp/+61af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/u - tmn/7rZp/+62af/utmn/7rZp/+62af/utWn/7rVp/+61af/utWn/7rVp/+61af/utWn/7rVp/86cW8LO - nFvCAAAAAgAAAAImLRooJi0aKHWcUaN1nFGjiLpf64i6X+uJwGP6icBj+obAYvmGwGL5fLVd43y1XeNY - g0KOWINCjgcHByQHBwckAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADmF1ngZhdZ4HH - eon/x3qJ/8d7i//He4v/x3yN/8d8jf/HfY//x32P/8d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/G - gJj/wX2W9sF9lvbnqmb956pm/e2yav/tsmr/7bJq/+2yav/ts2r/7bNq/+2yav/tsmr/7bJq/+2yav/t - smr/7bJq/+2zav/ts2r/7bJq/+2yav/tsmr/7bJq/+2yav/tsmr/7bNq/+2zav/tsmr/7bJq/+2yav/t - smr/7bJq/+2yav/ts2r/7bNq/+2yav/tsmr/6rFp/eqxaf2RtmDgkbZg4JfBZv+XwWb/lMFl/5TBZf+R - wWX/kcFl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/gsJi/4LCYv9ooFG8aKBRvAAAABUA - AAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAwAAAAOYXWeBmF1ngcd6if/Heon/x3uL/8d7i//HfI3/x3yN/8d9j//H - fY//x36S/8d+kv/HfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/BfZb2wX2W9ueqZv3nqmb97bJq/+2yav/t - smr/7bJq/+2zav/ts2r/7bJq/+2yav/tsmr/7bJq/+2yav/tsmr/7bNq/+2zav/tsmr/7bJq/+2yav/t - smr/7bJq/+2yav/ts2r/7bNq/+2yav/tsmr/7bJq/+2yav/tsmr/7bJq/+2zav/ts2r/7bJq/+2yav/q - sWn96rFp/ZG2YOCRtmDgl8Fm/5fBZv+UwWX/lMFl/5HBZf+RwWX/jsJl/47CZf+LwmT/i8Jk/4jCZP+I - wmT/hcFj/4XBY/+CwmL/gsJi/2igUbxooFG8AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAW9c4DYvXOA2Md6if/H - eon/x3uL/8d7i//HfI3/x3yN/8d9j//HfY//x36S/8d+kv/HfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/G - gZr/xoGa/8aBnP/GgZz/tVhB/7VYQf/Ykl3/2JJd/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q - r2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q - r2v/6q9r/+qva//qr2v/6q9r/+qva//gqmP/4Kpj/5GEKv+RhCr/nMFm/5zBZv+awWb/msFm/5fBZv+X - wWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/gsJi/4LCYv98 - vmD4fL5g+AcHByUHBwclAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAFAAAABb1zgNi9c4DYx3qJ/8d6if/He4v/x3uL/8d8jf/HfI3/x32P/8d9j//H - fpL/x36S/8d+lP/HfpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP+1WEH/tVhB/9iSXf/Y - kl3/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q - r2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+CqY//g - qmP/kYQq/5GEKv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+L - wmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+CwmL/gsJi/3y+YPh8vmD4BwcHJQcHByUAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAb1zgNS9c4DUx3qJ/8d6if/H - e4v/x3uL/8d8jf/HfI3/x32Q/8d9kP/HfpL/x36S/8d/lP/Hf5T/x3+W/8d/lv/GgJj/xoCY/8aBmv/G - gZr/xoGc/8aBnP/Ggp3/xoKd/7NXQv+zV0L/sldD/7JXQ//UjV3/1I1d/+esbP/nrGz/56xs/+esbP/n - rGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/n - rGz/56xs/+esbP/nrGz/56xs/92nZP/dp2T/lYEq/5WBKv+SgSr/koEq/5/BZv+fwWb/nMFm/5zBZv+a - wWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+F - wWP/gsJj/4LCY/98wGH5fMBh+QAAABcAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAEAAAABvXOA1L1zgNTHeon/x3qJ/8d7i//He4v/x3yN/8d8jf/HfZD/x32Q/8d+kv/H - fpL/x3+U/8d/lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/s1dC/7NXQv+y - V0P/sldD/9SNXf/UjV3/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/n - rGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/3adk/92nZP+V - gSr/lYEq/5KBKv+SgSr/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+UwWX/lMFl/5HCZf+R - wmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+CwmP/gsJj/3zAYfl8wGH5AAAAFwAAABcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo2FtaaNhbWnHeon/x3qJ/8d7i//H - e4v/x3yN/8d8jf/HfZD/x32Q/8d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/G - gZz/xoGc/8aCnf/Ggp3/xYKf/8WCn/+xVUT/sVVE/7BWRP+wVkT/sFZF/7BWRf/Ril7/0Ype/+SobP/k - qGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/k - qGz/5Khs/+SobP/kqGz/26Nk/9ujZP+Yfir/mH4q/5V+Kv+Vfir/k34r/5N+K/+iwGb/osBm/5/BZv+f - wWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+I - wmT/iMJk/4XBY/+FwWP/gsJi/4LCYv9uqVXKbqlVygAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAACjYW1po2Ftacd6if/Heon/x3uL/8d7i//HfI3/x3yN/8d9kP/HfZD/x36S/8d+kv/H - fpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/7FVRP+x - VUT/sFZE/7BWRP+wVkX/sFZF/9GKXv/Ril7/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/k - qGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/bo2T/26Nk/5h+Kv+Y - fir/lX4q/5V+Kv+Tfiv/k34r/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+U - wWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+CwmL/gsJi/26pVcpu - qVXKAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAA8d6iP7Heoj+x3uL/8d7i//H - fI3/x3yN/8d9kP/HfZD/x36S/8d+kv/HfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/G - gZz/xoKd/8aCnf/Fgp//xYKf/8WCof/FgqH/rlRE/65URP+tU0X/rVNF/61URv+tVEb/rVRH/61UR//O - iF//zohf/+Glbf/hpW3/4aVs/+GlbP/hpWz/4aVs/+GlbP/hpWz/4aVs/+GlbP/hpWz/4aVs/+Glbf/h - pW3/4aVt/+Glbf/Zn2T/2Z9k/5p6Kv+aeir/mHoq/5h6Kv+Veyr/lXsq/5N8Kv+TfCr/pcBm/6XAZv+i - wGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fCZv+Xwmb/lMFl/5TBZf+RwmX/kcJl/47CZf+O - wmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/gsJi/4LCYv8SHhIrEh4SKwAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAMAAAADx3qI/sd6iP7He4v/x3uL/8d8jf/HfI3/x32Q/8d9kP/HfpL/x36S/8d+lP/H - fpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof+u - VET/rlRE/61TRf+tU0X/rVRG/61URv+tVEf/rVRH/86IX//OiF//4aVt/+Glbf/hpWz/4aVs/+GlbP/h - pWz/4aVs/+GlbP/hpWz/4aVs/+GlbP/hpWz/4aVt/+Glbf/hpW3/4aVt/9mfZP/Zn2T/mnoq/5p6Kv+Y - eir/mHoq/5V7Kv+Veyr/k3wq/5N8Kv+lwGb/pcBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+a - wWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+C - wmL/gsJi/xIeEisSHhIrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl19oO5dfaDvHe4v/x3uL/8d8jf/H - fI3/x32Q/8d9kP/HfpL/x36S/8d+lP/HfpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/G - gp3/xoKd/8WCn//Fgp//xYKh/8WCof/Fg6L/xYOi/6tSRv+rUkb/q1JG/6tSRv+qUkf/qlJH/6pSR/+q - Ukf/qVJI/6lSSP/LhF//y4Rf/96hbP/eoWz/3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/3qFs/96hbP/e - oWz/3qFs/9abZP/Wm2T/nHcr/5x3K/+bdyv/m3cr/5h4K/+YeCv/lngq/5Z4Kv+TeCr/k3gq/6e/Zv+n - v2b/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fCZv+Xwmb/lMFl/5TBZf+R - wmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/aZ1QrGmdUKwAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAACXX2g7l19oO8d7i//He4v/x3yN/8d8jf/HfZD/x32Q/8d+kv/HfpL/x36U/8d+lP/H - f5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//FgqH/xYKh/8WDov/F - g6L/q1JG/6tSRv+rUkb/q1JG/6pSR/+qUkf/qlJH/6pSR/+pUkj/qVJI/8uEX//LhF//3qFs/96hbP/e - oWz/3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/1ptk/9abZP+cdyv/nHcr/5t3K/+b - dyv/mHgr/5h4K/+WeCr/lngq/5N4Kv+TeCr/p79m/6e/Zv+lwGb/pcBm/6LAZv+iwGb/n8Fm/5/BZv+c - wWb/nMFm/5rBZv+awWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+I - wmT/hcFj/4XBY/9pnVCsaZ1QrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALx1hLC8dYSwx3yN/8d8jf/H - fY//x32P/8d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/G - gp3/xYKf/8WCn//FgqH/xYKh/8SCov/EgqL/xIKk/8SCpP+pUEb/qVBG/6hQR/+oUEf/p1FI/6dRSP+n - UUn/p1FJ/6ZRSf+mUUn/plFK/6ZRSv/IgWD/yIFg/9udbf/bnW3/251s/9udbP/bnWz/251s/9udbP/b - nWz/1Jhk/9SYZP+ecyr/nnMq/5x0Kv+cdCr/mnQq/5p0Kv+YdCr/mHQq/5Z1K/+WdSv/lHYr/5R2K/+p - v2b/qb9m/6fAZv+nwGb/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fCZv+X - wmb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4K9YfWCvWH1AAAAAwAAAAMA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAvHWEsLx1hLDHfI3/x3yN/8d9j//HfY//x36S/8d+kv/HfpT/x36U/8d/lv/H - f5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/8WCof/FgqH/xIKi/8SCov/E - gqT/xIKk/6lQRv+pUEb/qFBH/6hQR/+nUUj/p1FI/6dRSf+nUUn/plFJ/6ZRSf+mUUr/plFK/8iBYP/I - gWD/251t/9udbf/bnWz/251s/9udbP/bnWz/251s/9udbP/UmGT/1Jhk/55zKv+ecyr/nHQq/5x0Kv+a - dCr/mnQq/5h0Kv+YdCr/lnUr/5Z1K/+Udiv/lHYr/6m/Zv+pv2b/p8Bm/6fAZv+lwGb/pcBm/6LAZv+i - wGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+L - wmT/i8Jk/4jCZP+IwmT/gr1h9YK9YfUAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDeovkw3qL5Md9j//H - fY//x36S/8d+kv/Hf5T/x3+U/8d/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/F - gp//xYKf/8WCof/FgqH/xIKi/8SCov/EgqT/xIKk/8ODpv/Dg6b/pk5H/6ZOR/+lT0j/pU9I/6VPSf+l - T0n/pE9J/6RPSf+kT0r/pE9K/6NPSv+jT0r/o09L/6NPS//FfmH/xX5h/9iZbP/YmWz/2Jlt/9iZbf/R - lGT/0ZRk/6BwK/+gcCv/nnAr/55wK/+ccCv/nHAr/5pxK/+acSv/mHEr/5hxK/+Wcir/lnIq/5RyK/+U - civ/rL5m/6y+Zv+pv2b/qb9m/6e/Zv+nv2b/pMBm/6TAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+a - wWb/msFm/5fCZv+Xwmb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwWP/iMFj/wAAAAcA - AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAMN6i+TDeovkx32P/8d9j//HfpL/x36S/8d/lP/Hf5T/x3+W/8d/lv/G - gJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof/EgqL/xIKi/8SCpP/E - gqT/w4Om/8ODpv+mTkf/pk5H/6VPSP+lT0j/pU9J/6VPSf+kT0n/pE9J/6RPSv+kT0r/o09K/6NPSv+j - T0v/o09L/8V+Yf/FfmH/2Jls/9iZbP/YmW3/2Jlt/9GUZP/RlGT/oHAr/6BwK/+ecCv/nnAr/5xwK/+c - cCv/mnEr/5pxK/+YcSv/mHEr/5ZyKv+Wcir/lHIr/5RyK/+svmb/rL5m/6m/Zv+pv2b/p79m/6e/Zv+k - wGb/pMBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+R - wmX/jsJl/47CZf+LwmT/i8Jk/4jBY/+IwWP/AAAABwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxXuO68V7juvH - fpL/x36S/8d+lP/HfpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//F - gp//xYKh/8WCof/EgqL/xIKi/8SCpP/EgqT/w4Ol/8ODpf/Dgqf/w4Kn/6JMSP+iTEj/ok1J/6JNSf+h - TUn/oU1J/6FNSv+hTUr/oExK/6BMSv+gTUv/oE1L/59MS/+fTEv/n01M/59NTP/GgWP/xoFj/9KSaP/S - kmj/omwr/6JsK/+fbCr/n2wq/51tKv+dbSr/m20q/5ttKv+abiv/mm4r/5duK/+Xbiv/lW4r/5VuK/+T - byv/k28r/669Zf+uvWX/rL5l/6y+Zf+pvmb/qb5m/6e/Zv+nv2b/pMBm/6TAZv+iwGb/osBm/5/BZv+f - wWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP8A - AAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFe47rxXuO68d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/G - gJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//FgqH/xYKh/8SCov/EgqL/xIKk/8SCpP/D - g6X/w4Ol/8OCp//Dgqf/okxI/6JMSP+iTUn/ok1J/6FNSf+hTUn/oU1K/6FNSv+gTEr/oExK/6BNS/+g - TUv/n0xL/59MS/+fTUz/n01M/8aBY//GgWP/0pJo/9KSaP+ibCv/omwr/59sKv+fbCr/nW0q/51tKv+b - bSr/m20q/5puK/+abiv/l24r/5duK/+Vbiv/lW4r/5NvK/+Tbyv/rr1l/669Zf+svmX/rL5l/6m+Zv+p - vmb/p79m/6e/Zv+kwGb/pMBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+U - wWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/wAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMN7j9DD - e4/Qx36U/8d+lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//F - gqH/xYKh/8SCov/EgqL/xIKk/8SCpP/Dg6X/w4Ol/8ODp//Dg6f/woOo/8KDqP+gS0n/oEtJ/59LSf+f - S0n/nktK/55LSv+dSkr/nUpK/51KS/+dSkv/nEpL/5xKS/+cSkz/nEpM/5tKTP+bSkz/m0pN/5tKTf+k - aCz/pGgs/6BoKv+gaCr/n2gq/59oKv+caSr/nGkq/5tqKv+bair/mGoq/5hqKv+Xayr/l2sq/5VsK/+V - bCv/k2wr/5NsK/+wvWX/sL1l/669Zf+uvWX/q75l/6u+Zf+pvmb/qb5m/6e/Zv+nv2b/pMBm/6TAZv+i - wGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwWX/kcFl/43BZPyN - wWT8AAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw3uP0MN7j9DHfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/G - gZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/8WCof/FgqH/xIKi/8SCov/EgqT/xIKk/8ODpf/D - g6X/w4On/8ODp//Cg6j/woOo/6BLSf+gS0n/n0tJ/59LSf+eS0r/nktK/51KSv+dSkr/nUpL/51KS/+c - Skv/nEpL/5xKTP+cSkz/m0pM/5tKTP+bSk3/m0pN/6RoLP+kaCz/oGgq/6BoKv+faCr/n2gq/5xpKv+c - aSr/m2oq/5tqKv+Yair/mGoq/5drKv+Xayr/lWwr/5VsK/+TbCv/k2wr/7C9Zf+wvWX/rr1l/669Zf+r - vmX/q75l/6m+Zv+pvmb/p79m/6e/Zv+kwGb/pMBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+a - wWb/l8Fm/5fBZv+UwWX/lMFl/5HBZf+RwWX/jcFk/I3BZPwAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6 - d4tyuneLcsd/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/8WCof/F - gqH/xIKi/8SCov/EgqT/xIKk/8ODpf/Dg6X/woOn/8KDp//Cg6j/woOo/8GCqf/Bgqn/nUlK/51JSv+c - SEr/nEhK/5tISv+bSEr/mkhL/5pIS/+aSEv/mkhL/5lIS/+ZSEv/mEhM/5hITP+YSE3/mEhN/4xBPP+M - QTz/gkEh/4JBIf+gZCn/oGQp/55lKf+eZSn/m2Uq/5tlKv+aZir/mmYq/5hmKv+YZir/lmcq/5ZnKv+U - aCv/lGgr/5NpK/+TaSv/srxk/7K8ZP+wvWX/sL1l/669Zf+uvWX/q75l/6u+Zf+pvmb/qb5m/6e/Zv+n - v2b/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+J - t2DZibdg2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALp3i3K6d4tyx3+W/8d/lv/GgJj/xoCY/8aBmv/G - gZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof/EgqL/xIKi/8SCpP/EgqT/w4Ol/8ODpf/C - g6f/woOn/8KDqP/Cg6j/wYKp/8GCqf+dSUr/nUlK/5xISv+cSEr/m0hK/5tISv+aSEv/mkhL/5pIS/+a - SEv/mUhL/5lIS/+YSEz/mEhM/5hITf+YSE3/jEE8/4xBPP+CQSH/gkEh/6BkKf+gZCn/nmUp/55lKf+b - ZSr/m2Uq/5pmKv+aZir/mGYq/5hmKv+WZyr/lmcq/5RoK/+UaCv/k2kr/5NpK/+yvGT/srxk/7C9Zf+w - vWX/rr1l/669Zf+rvmX/q75l/6m+Zv+pvmb/p79m/6e/Zv+lwGb/pcBm/6LAZv+iwGb/n8Fm/5/BZv+c - wWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+UwWX/lMFl/4m3YNmJt2DZAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAcVVVCXFVVQnGgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof/E - gqL/xIKi/8SCpP/EgqT/w4Ol/8ODpf/Cg6f/woOn/8KDqP/Cg6j/wYKq/8GCqv/Agqr/wIKq/5lGSv+Z - Rkr/mEZL/5hGS/+YRkv/mEZL/5dGS/+XRkv/lkZL/5ZGS/+VRkz/lUZM/5VFTP+VRUz/lEVN/5RFTf95 - Mx//eTMf/3YyHv92Mh7/nmAp/55gKf+cYSn/nGEp/5phKf+aYSn/mGIp/5hiKf+XYyr/l2Mq/5VkKv+V - ZCr/lGQq/5RkKv+SZSv/kmUr/7S7ZP+0u2T/srxk/7K8ZP+wvWX/sL1l/669Zf+uvWX/q75l/6u+Zf+p - v2b/qb9m/6e/Zv+nv2b/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fBZv+X - wWb/ZIBEUmSARFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxVVUJcVVVCcaAmP/GgJj/xoGa/8aBmv/G - gZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//FgqH/xYKh/8SCov/EgqL/xIKk/8SCpP/Dg6X/w4Ol/8KDp//C - g6f/woOo/8KDqP/Bgqr/wYKq/8CCqv/Agqr/mUZK/5lGSv+YRkv/mEZL/5hGS/+YRkv/l0ZL/5dGS/+W - Rkv/lkZL/5VGTP+VRkz/lUVM/5VFTP+URU3/lEVN/3kzH/95Mx//djIe/3YyHv+eYCn/nmAp/5xhKf+c - YSn/mmEp/5phKf+YYin/mGIp/5djKv+XYyr/lWQq/5VkKv+UZCr/lGQq/5JlK/+SZSv/tLtk/7S7ZP+y - vGT/srxk/7C9Zf+wvWX/rr1l/669Zf+rvmX/q75l/6m/Zv+pv2b/p79m/6e/Zv+lwGb/pcBm/6LAZv+i - wGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv9kgERSZIBEUgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAEAAAABwH2W1MB9ltTGgZz/xoGc/8SBnf/EgZ3/xIGf/8SBn//EgaH/xIGh/8OBov/D - gaL/woGk/8KBpP/CgqX/woKl/8GBpv/Bgab/wIGo/8CBqP/Agan/wIGp/7+Bqv+/gar/v4Ks/7+CrP+W - REv/lkRL/5VES/+VREv/lENL/5RDS/+TQ0v/k0NL/5JDTP+SQ0z/kkNM/5JDTP+RQ0z/kUNM/5FDTP+R - Q0z/djAe/3YwHv90MB7/dDAe/5dXJ/+XVyf/m10p/5tdKf+aXin/ml4p/5deKf+XXin/ll8q/5ZfKv+U - YCr/lGAq/5NhKv+TYSr/kWIr/5FiK/+2umP/trpj/7O7Y/+zu2P/sLxk/7C8ZP+uvGT/rrxk/6y9ZP+s - vWT/qr1l/6q9Zf+nvmX/p75l/6W/Zf+lv2X/o79m/6O/Zv+gwGb/oMBm/53AZv+dwGb/nMFm/5zBZv+Z - wGX7mcBl+wAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAHAfZbUwH2W1MaBnP/G - gZz/xIGd/8SBnf/EgZ//xIGf/8SBof/EgaH/w4Gi/8OBov/CgaT/woGk/8KCpf/CgqX/wYGm/8GBpv/A - gaj/wIGo/8CBqf/Agan/v4Gq/7+Bqv+/gqz/v4Ks/5ZES/+WREv/lURL/5VES/+UQ0v/lENL/5NDS/+T - Q0v/kkNM/5JDTP+SQ0z/kkNM/5FDTP+RQ0z/kUNM/5FDTP92MB7/djAe/3QwHv90MB7/l1cn/5dXJ/+b - XSn/m10p/5peKf+aXin/l14p/5deKf+WXyr/ll8q/5RgKv+UYCr/k2Eq/5NhKv+RYiv/kWIr/7a6Y/+2 - umP/s7tj/7O7Y/+wvGT/sLxk/668ZP+uvGT/rL1k/6y9ZP+qvWX/qr1l/6e+Zf+nvmX/pb9l/6W/Zf+j - v2b/o79m/6DAZv+gwGb/ncBm/53AZv+cwWb/nMFm/5nAZfuZwGX7AAAABgAAAAYAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA - AAABPCtHLzwrRy+eecTOnnnEzqqD1v6qg9b+gkCG/4JAhv9/QIf/f0CH/3w/iv98P4r/ej6M/3o+jP92 - PY7/dj2O/3M8kP9zPJD/cDuS/3A7kv9tOpT/bTqU/2o5lv9qOZb/ZjiY/2Y4mP9jNpn/YzaZ/2A1m/9g - NZv/TB5O/0weTv9pLEj/aSxI/5BBS/+QQUv/kEFM/5BBTP+PQUz/j0FM/45ATP+OQEz/jUBM/41ATP+L - P0n/iz9J/3QuHf90Lh3/ci4e/3IuHv+LSST/i0kk/5pZKP+aWSj/mFoo/5haKP+WWyn/llsp/5VcKf+V - XCn/kl0p/5JdKf9mVB//ZlQf/0NVGf9DVRn/T5U0/0+VNP9Nlzb/TZc2/0uZOP9LmTj/SZo6/0maOv9H - mzv/R5s7/0ScPf9EnD3/Qp4+/0KePv9An0D/QJ9A/z6gQf8+oEH/O6FD/zuhQ/84okT/OKJE/zaiRv82 - okb/UdCj/1HQo/9LwKLSS8Ci0hQ1LT8UNS0/AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAE8K0cvPCtHL555xM6eecTOqoPW/qqD1v6C - QIb/gkCG/39Ah/9/QIf/fD+K/3w/iv96Poz/ej6M/3Y9jv92PY7/czyQ/3M8kP9wO5L/cDuS/206lP9t - OpT/ajmW/2o5lv9mOJj/ZjiY/2M2mf9jNpn/YDWb/2A1m/9MHk7/TB5O/2ksSP9pLEj/kEFL/5BBS/+Q - QUz/kEFM/49BTP+PQUz/jkBM/45ATP+NQEz/jUBM/4s/Sf+LP0n/dC4d/3QuHf9yLh7/ci4e/4tJJP+L - SST/mlko/5pZKP+YWij/mFoo/5ZbKf+WWyn/lVwp/5VcKf+SXSn/kl0p/2ZUH/9mVB//Q1UZ/0NVGf9P - lTT/T5U0/02XNv9Nlzb/S5k4/0uZOP9Jmjr/SZo6/0ebO/9Hmzv/RJw9/0ScPf9Cnj7/Qp4+/0CfQP9A - n0D/PqBB/z6gQf87oUP/O6FD/ziiRP84okT/NqJG/zaiRv9R0KP/UdCj/0vAotJLwKLSFDUtPxQ1LT8A - AAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAij - fMDDo3zAw7GH1f+xh9X/roXW/66F1v+rhNj/q4TY/6N5zf+jec3/fkCJ/35Aif98P4v/fD+L/3k+jf95 - Po3/dj2Q/3Y9kP9zPJL/czyS/3A7k/9wO5P/bDqV/2w6lf9pOZf/aTmX/2Y3mf9mN5n/Yjaa/2I2mv9f - NJz/XzSc/1UshP9VLIT/QxhF/0MYRf9BGEX/QRhF/3ExSf9xMUn/iz5M/4s+TP+KPkz/ij5M/4k9TP+J - PUz/hjtH/4Y7R/9yKx3/cisd/3ArHf9wKx3/hkIj/4ZCI/+YVSf/mFUn/5ZWKP+WVij/lVco/5VXKP93 - USH/d1Eh/0FHFP9BRxT/QEgV/0BIFf9Mfir/TH4q/0+UM/9PlDP/TpY1/06WNf9LmDf/S5g3/0maOf9J - mjn/R5o7/0eaO/9FnDz/RZw8/0OePv9Dnj7/QZ9A/0GfQP8+n0H/Pp9B/zyhQ/88oUP/OaFE/zmhRP9L - woX/S8KF/1bYs/9W2LP/VNi2/1TYtv9R2bn/Udm5/0S8o8tEvKPLAAAAFAAAABQAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACKN8wMOjfMDDsYfV/7GH1f+uhdb/roXW/6uE2P+r - hNj/o3nN/6N5zf9+QIn/fkCJ/3w/i/98P4v/eT6N/3k+jf92PZD/dj2Q/3M8kv9zPJL/cDuT/3A7k/9s - OpX/bDqV/2k5l/9pOZf/ZjeZ/2Y3mf9iNpr/Yjaa/180nP9fNJz/VSyE/1UshP9DGEX/QxhF/0EYRf9B - GEX/cTFJ/3ExSf+LPkz/iz5M/4o+TP+KPkz/iT1M/4k9TP+GO0f/hjtH/3IrHf9yKx3/cCsd/3ArHf+G - QiP/hkIj/5hVJ/+YVSf/llYo/5ZWKP+VVyj/lVco/3dRIf93USH/QUcU/0FHFP9ASBX/QEgV/0x+Kv9M - fir/T5Qz/0+UM/9OljX/TpY1/0uYN/9LmDf/SZo5/0maOf9Hmjv/R5o7/0WcPP9FnDz/Q54+/0OePv9B - n0D/QZ9A/z6fQf8+n0H/PKFD/zyhQ/85oUT/OaFE/0vChf9LwoX/Vtiz/1bYs/9U2Lb/VNi2/1HZuf9R - 2bn/RLyjy0S8o8sAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACLOIzu+z - iM7vtInT/7SJ0/+xh9X/sYfV/66F1v+uhdb/q4TY/6uE2P+ogtn/qILZ/592zf+fds3/fD+N/3w/jf94 - P4//eD+P/3Y9kf92PZH/cj2T/3I9k/9vO5T/bzuU/2w6l/9sOpf/aDiY/2g4mP9lN5r/ZTea/2I2m/9i - Npv/XjSd/140nf9aM57/WjOe/0IYR/9CGEf/PxdG/z8XRv88Fkb/PBZG/1glSP9YJUj/hjtL/4Y7S/+F - Okv/hTpL/4M6Sv+DOkr/bykc/28pHP9tKR3/bSkd/4pFI/+KRSP/llEm/5ZRJv+UUif/lFIn/2NIGv9j - SBr/QkIT/0JCE/9ARBT/QEQU/0BHFf9ARxX/UpEx/1KRMf9QkzP/UJMz/06VNf9OlTX/TJc3/0yXN/9K - mTn/Spk5/0iaO/9Imjv/Rps8/0abPP9EnT7/RJ0+/0GfQP9Bn0D/QJ9C/0CfQv89oEP/PaBD/03Agf9N - wIH/Wdiw/1nYsP9W2LP/Vtiz/1TZtv9U2bb/Udm6/1HZuv9O2rz/Ttq8/0rTufJK07nyAAAAGAAAABgA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIs4jO77OIzu+0idP/tInT/7GH1f+xh9X/roXW/66F1v+r - hNj/q4TY/6iC2f+ogtn/n3bN/592zf98P43/fD+N/3g/j/94P4//dj2R/3Y9kf9yPZP/cj2T/287lP9v - O5T/bDqX/2w6l/9oOJj/aDiY/2U3mv9lN5r/Yjab/2I2m/9eNJ3/XjSd/1oznv9aM57/QhhH/0IYR/8/ - F0b/PxdG/zwWRv88Fkb/WCVI/1glSP+GO0v/hjtL/4U6S/+FOkv/gzpK/4M6Sv9vKRz/bykc/20pHf9t - KR3/ikUj/4pFI/+WUSb/llEm/5RSJ/+UUif/Y0ga/2NIGv9CQhP/QkIT/0BEFP9ARBT/QEcV/0BHFf9S - kTH/UpEx/1CTM/9QkzP/TpU1/06VNf9Mlzf/TJc3/0qZOf9KmTn/SJo7/0iaO/9Gmzz/Rps8/0SdPv9E - nT7/QZ9A/0GfQP9An0L/QJ9C/z2gQ/89oEP/TcCB/03Agf9Z2LD/Wdiw/1bYs/9W2LP/VNm2/1TZtv9R - 2br/Udm6/07avP9O2rz/StO58krTufIAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABs4bJ3LOGydy3 - itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhdf/roXX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/5x0z/+c - dM//eD+Q/3g/kP91PpL/dT6S/3I8lP9yPJT/bzuW/287lv9sOpj/bDqY/2g4mf9oOJn/ZDeb/2Q3m/9h - NZz/YTWc/100nv9dNJ7/WjKf/1oyn/9TLZX/Uy2V/zwWRv88Fkb/OhVG/zoVRv83FEX/NxRF/2QqSf9k - Kkn/gDhM/4A4TP+AN0v/gDdL/2wnHP9sJxz/aycc/2snHP+TSiX/k0ol/5RNJv+UTSb/c0ce/3NHHv9B - PhL/QT4S/0BAEv9AQBL/P0EU/z9BFP9RhSv/UYUr/1KQMf9SkDH/UJIz/1CSM/9OlDX/TpQ1/02WN/9N - ljf/S5g5/0uYOf9Jmjv/SZo7/0ebPP9Hmzz/RJ0+/0SdPv9CnkD/Qp5A/0GfQv9Bn0L/UL9+/1C/fv9b - 163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bb/VNm2/1HZuv9R2br/T9q8/0/avP9M2r//TNq//0TMteJE - zLXiAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAGzhsncs4bJ3LeK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66F1/+u - hdf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/nHTP/5x0z/94P5D/eD+Q/3U+kv91PpL/cjyU/3I8lP9v - O5b/bzuW/2w6mP9sOpj/aDiZ/2g4mf9kN5v/ZDeb/2E1nP9hNZz/XTSe/100nv9aMp//WjKf/1Mtlf9T - LZX/PBZG/zwWRv86FUb/OhVG/zcURf83FEX/ZCpJ/2QqSf+AOEz/gDhM/4A3S/+AN0v/bCcc/2wnHP9r - Jxz/aycc/5NKJf+TSiX/lE0m/5RNJv9zRx7/c0ce/0E+Ev9BPhL/QEAS/0BAEv8/QRT/P0EU/1GFK/9R - hSv/UpAx/1KQMf9QkjP/UJIz/06UNf9OlDX/TZY3/02WN/9LmDn/S5g5/0maO/9Jmjv/R5s8/0ebPP9E - nT7/RJ0+/0KeQP9CnkD/QZ9C/0GfQv9Qv37/UL9+/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZtv9U - 2bb/Udm6/1HZuv9P2rz/T9q8/0zav/9M2r//RMy14kTMteIAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRbqJYkW6iWLmL0f+5 - i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+h - ftv/oX7b/5hx0P+YcdD/dT6U/3U+lP9yPJX/cjyV/288l/9vPJf/azqZ/2s6mf9nOJr/Zzia/2Q3nP9k - N5z/YDWe/2A1nv9cNJ//XDSf/1kyoP9ZMqD/VTCi/1Uwov9KJ4b/SieG/zgURv84FEb/NRNF/zUTRf8y - EkX/MhJF/3s1S/97NUv/ezRL/3s0S/9tJyP/bScj/2klHP9pJRz/k0gk/5NIJP+RSSX/kUkl/0E5EP9B - ORD/QDsR/0A7Ef8/PBL/PzwS/090Jf9PdCX/VI4u/1SOLv9TjzH/U48x/1GRMv9RkTL/T5M1/0+TNf9N - ljf/TZY3/0yYOP9MmDj/SZk6/0mZOv9Imzz/SJs8/0WcPv9FnD7/Q55A/0OeQP9Svnv/Ur57/13Wqf9d - 1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm2/1TZtv9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J - 28L/SdvC/yiAcnIogHJyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAJFuoliRbqJYuYvR/7mL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+u - htf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F+2/+hftv/mHHQ/5hx0P91PpT/dT6U/3I8lf9y - PJX/bzyX/288l/9rOpn/azqZ/2c4mv9nOJr/ZDec/2Q3nP9gNZ7/YDWe/1w0n/9cNJ//WTKg/1kyoP9V - MKL/VTCi/0onhv9KJ4b/OBRG/zgURv81E0X/NRNF/zISRf8yEkX/ezVL/3s1S/97NEv/ezRL/20nI/9t - JyP/aSUc/2klHP+TSCT/k0gk/5FJJf+RSSX/QTkQ/0E5EP9AOxH/QDsR/z88Ev8/PBL/T3Ql/090Jf9U - ji7/VI4u/1OPMf9TjzH/UZEy/1GRMv9PkzX/T5M1/02WN/9Nljf/TJg4/0yYOP9JmTr/SZk6/0ibPP9I - mzz/RZw+/0WcPv9DnkD/Q55A/1K+e/9Svnv/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U - 2bb/VNm2/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0nbwv9J28L/KIByciiAcnIAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABu4zO+buMzvm5 - i9H/uYvR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+l - gNr/oX7b/6F+2/+ee9z/nnvc/5Rv0f+Ub9H/cT2X/3E9l/9uPJn/bjyZ/2o6m/9qOpv/Zzic/2c4nP9j - N53/Yzed/181n/9fNZ//XDOg/1wzoP9YMqL/WDKi/1Qvo/9UL6P/UC6k/1AupP9JKZj/SSmY/zMSR/8z - Ekf/MBJF/zASRf9KHUf/Sh1H/3YxSv92MUr/dC9F/3QvRf9/NSD/fzUg/5FEJP+RRCT/XjsX/147F/8/ - NxD/PzcQ/z85Ef8/ORH/VH0m/1R9Jv9Wiiv/Voor/1WMLf9VjC3/U44w/1OOMP9SkTL/UpEy/1CTNP9Q - kzT/TpU2/06VNv9Nlzj/TZc4/0qZOv9KmTr/SZo8/0maPP9GnD7/Rpw+/1S9eP9UvXj/X9Wm/1/Vpv9d - 1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M - 2r//SdvC/0nbwv9G2MP6RtjD+gAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAG7jM75u4zO+bmL0f+5i9H/t4rS/7eK0v+0idT/tInU/7GH1f+x - h9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hftv/oX7b/5573P+ee9z/lG/R/5Rv0f9x - PZf/cT2X/248mf9uPJn/ajqb/2o6m/9nOJz/Zzic/2M3nf9jN53/XzWf/181n/9cM6D/XDOg/1gyov9Y - MqL/VC+j/1Qvo/9QLqT/UC6k/0kpmP9JKZj/MxJH/zMSR/8wEkX/MBJF/0odR/9KHUf/djFK/3YxSv90 - L0X/dC9F/381IP9/NSD/kUQk/5FEJP9eOxf/XjsX/z83EP8/NxD/PzkR/z85Ef9UfSb/VH0m/1aKK/9W - iiv/VYwt/1WMLf9TjjD/U44w/1KRMv9SkTL/UJM0/1CTNP9OlTb/TpU2/02XOP9Nlzj/Spk6/0qZOv9J - mjz/SZo8/0acPv9GnD7/VL14/1S9eP9f1ab/X9Wm/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W - 2LP/VNm3/1TZt/9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J28L/SdvC/0bYw/pG2MP6AAAACAAAAAgA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmTWYUZk1mFLyMz/+8 - jM//uovR/7qL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+l - gNr/pYDa/6F92/+hfdv/nnvc/5573P+aeN3/mnjd/5Bt0/+QbdP/bjya/248mv9qOpz/ajqc/2Y4nf9m - OJ3/Yzee/2M3nv9eNaD/XjWg/1s0of9bNKH/VzKj/1cyo/9TL6T/Uy+k/08tpf9PLaX/Syym/0sspv9H - Kqj/Ryqo/zwgiP88IIj/LRJN/y0STf9yLkn/ci5J/3MwSv9zMEr/lUYx/5VGMf+OPyL/jj8i/0E4EP9B - OBD/UWge/1FoHv9ZhCb/WYQm/1iGKf9Yhin/Vokr/1aJK/9VjC3/VYwt/1SOMP9UjjD/UpAy/1KQMv9R - kjT/UZI0/0+UNv9PlDb/TZY4/02WOP9LmDr/S5g6/0qaPP9Kmjz/Vrt1/1a7df9g1KH/YNSh/1/Vpv9f - 1ab/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M - 2r//TNq//0nbwv9J28L/RtvF/0bbxf8RLCwuESwsLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAGZNZhRmTWYUvIzP/7yMz/+6i9H/uovR/7eK0v+3itL/tInU/7SJ1P+x - h9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/oX3b/6F92/+ee9z/nnvc/5p43f+a - eN3/kG3T/5Bt0/9uPJr/bjya/2o6nP9qOpz/Zjid/2Y4nf9jN57/Yzee/141oP9eNaD/WzSh/1s0of9X - MqP/VzKj/1MvpP9TL6T/Ty2l/08tpf9LLKb/Syym/0cqqP9HKqj/PCCI/zwgiP8tEk3/LRJN/3IuSf9y - Lkn/czBK/3MwSv+VRjH/lUYx/44/Iv+OPyL/QTgQ/0E4EP9RaB7/UWge/1mEJv9ZhCb/WIYp/1iGKf9W - iSv/Vokr/1WMLf9VjC3/VI4w/1SOMP9SkDL/UpAy/1GSNP9RkjT/T5Q2/0+UNv9Nljj/TZY4/0uYOv9L - mDr/Spo8/0qaPP9Wu3X/Vrt1/2DUof9g1KH/X9Wm/1/Vpv9d1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W - 2LP/Vtiz/1TZt/9U2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M2r//SdvC/0nbwv9G28X/RtvF/xEsLC4R - LCwuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApXuxW6V7sVu8 - jM//vIzP/7qL0f+6i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+o - gtn/pYDa/6WA2v+hfdv/oX3b/5573P+ee9z/mnjd/5p43f+Wdt7/lnbe/4xq1P+MatT/ajqd/2o6nf9m - OZ//Zjmf/2I3oP9iN6D/XjWi/141ov9aM6P/WjOj/1EvpP9RL6T/SSyk/0kspP9KLKb/Siym/0orqP9K - K6j/Rimp/0Ypqf9BJ6r/QSeq/z0lrP89Jaz/qXS8/ql0vP5AJkAUQCZAFEAAQARAAEAE2KNQ7tijUO5b - fSH/W30h/1qAJP9agCT/WYMm/1mDJv9YhSj/WIUo/1SHKv9Uhyr/TYgs/02ILP9Niy7/TYsu/1KPMv9S - jzL/UpE0/1KRNP9QlDb/UJQ2/06WOP9Oljj/TJg6/0yYOv9ZunL/Wbpy/2LTnf9i053/YNSh/2DUof9f - 1aX/X9Wl/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R2bn/Udm5/0/avP9P - 2rz/TNq//0zav/9K28L/StvC/0bbxf9G28X/LJGEdCyRhHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACle7FbpXuxW7yMz/+8jM//uovR/7qL0f+3itL/t4rS/7SJ1P+0 - idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F92/+hfdv/nnvc/5573P+a - eN3/mnjd/5Z23v+Wdt7/jGrU/4xq1P9qOp3/ajqd/2Y5n/9mOZ//Yjeg/2I3oP9eNaL/XjWi/1ozo/9a - M6P/US+k/1EvpP9JLKT/SSyk/0ospv9KLKb/Siuo/0orqP9GKan/Rimp/0Enqv9BJ6r/PSWs/z0lrP+p - dLz+qXS8/kAmQBRAJkAUQABABEAAQATYo1Du2KNQ7lt9If9bfSH/WoAk/1qAJP9Zgyb/WYMm/1iFKP9Y - hSj/VIcq/1SHKv9NiCz/TYgs/02LLv9Niy7/Uo8y/1KPMv9SkTT/UpE0/1CUNv9QlDb/TpY4/06WOP9M - mDr/TJg6/1m6cv9ZunL/YtOd/2LTnf9g1KH/YNSh/1/Vpf9f1aX/Xdap/13Wqf9b163/W9et/1nYsP9Z - 2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0rbwv9K28L/RtvF/0bbxf8s - kYR0LJGEdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCEv4uw - hL+LvI3P/7yNz/+6i9H/uovR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+o - gtn/qILZ/6WA2v+lgNr/oX3b/6F92/+ee9z/nnvc/5p43f+aeN3/lnbe/5Z23v+Sc9//knPf/4pr2f+K - a9n/Zjmh/2Y5of9ILqD/SC6g/xodnf8aHZ3/Fhue/xYbnv8VG5//FRuf/xQaoP8UGqD/Ehmh/xIZof8R - GKL/ERii/xQYpf8UGKX/NiOq/zYjqv8+JrH/Piax/yIdSjQiHUo0AAAAAAAAAAAAAAAAAAAAAEN6NxdD - ejcXXoks/16JLP9VfSL/VX0i/yBxHv8gcR7/FHAf/xRwH/8UcyH/FHMh/xR2JP8UdiT/FHgm/xR4Jv8T - eyj/E3so/xR+Kv8Ufir/MIkx/zCJMf9Pljj/T5Y4/13Aev9dwHr/Y9KZ/2PSmf9i053/YtOd/2DUof9g - 1KH/X9Wl/1/Vpf9d1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm6/1HZuv9P - 2rz/T9q8/0zav/9M2r//StvC/0rbwv9G28X/RtvF/zewoJ83sKCfAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsIS/i7CEv4u8jc//vI3P/7qL0f+6i9H/t4rS/7eK0v+0 - idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hfdv/oX3b/5573P+e - e9z/mnjd/5p43f+Wdt7/lnbe/5Jz3/+Sc9//imvZ/4pr2f9mOaH/Zjmh/0guoP9ILqD/Gh2d/xodnf8W - G57/Fhue/xUbn/8VG5//FBqg/xQaoP8SGaH/Ehmh/xEYov8RGKL/FBil/xQYpf82I6r/NiOq/z4msf8+ - JrH/Ih1KNCIdSjQAAAAAAAAAAAAAAAAAAAAAQ3o3F0N6NxdeiSz/Xoks/1V9Iv9VfSL/IHEe/yBxHv8U - cB//FHAf/xRzIf8UcyH/FHYk/xR2JP8UeCb/FHgm/xN7KP8Teyj/FH4q/xR+Kv8wiTH/MIkx/0+WOP9P - ljj/XcB6/13Aev9j0pn/Y9KZ/2LTnf9i053/YNSh/2DUof9f1aX/X9Wl/13Wqf9d1qn/W9et/1vXrf9Z - 2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R2br/Udm6/0/avP9P2rz/TNq//0zav/9K28L/StvC/0bbxf9G - 28X/N7CgnzewoJ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy - hMCFsoTAhbyNz/+8jc//uovR/7qL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+r - hNj/qILZ/6iC2f+lgNr/pYDa/6F92/+hfdv/nnvc/5573P+aeN3/mnjd/5Z23v+Wdt7/knPf/5Jz3/+J - bt//iW7f/yc61/8nOtf/HSm5/x0puf8XHJ7/Fxye/xYboP8WG6D/FRuh/xUbof8UGqL/FBqi/xIZo/8S - GaP/ERik/xEYpP8QF6f/EBen/xIjy/8SI8v/HCzh/xws4f8SEjE5EhIxOQAAAAAAAAAAAAAAAAAAAAA3 - ZDcXN2Q3FzGmTf8xpk3/FpRB/xaUQf8UcSH/FHEh/xRwH/8UcB//FHMi/xRzIv8UdiT/FHYk/xR5Jv8U - eSb/E3sp/xN7Kf8Tfiv/E34r/xSPQ/8Uj0P/GLN4/xizeP9XzJH/V8yR/2PSmf9j0pn/YtOd/2LTnf9g - 1KH/YNSh/1/Vpf9f1aX/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuv9R - 2br/T9q8/0/avP9M2r//TNq//0rbwv9K28L/RtvF/0bbxf83sp+YN7KfmAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKEwIWyhMCFvI3P/7yNz/+6i9H/uovR/7eK0v+3 - itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/oX3b/6F92/+e - e9z/nnvc/5p43f+aeN3/lnbe/5Z23v+Sc9//knPf/4lu3/+Jbt//JzrX/yc61/8dKbn/HSm5/xccnv8X - HJ7/Fhug/xYboP8VG6H/FRuh/xQaov8UGqL/Ehmj/xIZo/8RGKT/ERik/xAXp/8QF6f/EiPL/xIjy/8c - LOH/HCzh/xISMTkSEjE5AAAAAAAAAAAAAAAAAAAAADdkNxc3ZDcXMaZN/zGmTf8WlEH/FpRB/xRxIf8U - cSH/FHAf/xRwH/8UcyL/FHMi/xR2JP8UdiT/FHkm/xR5Jv8Teyn/E3sp/xN+K/8Tfiv/FI9D/xSPQ/8Y - s3j/GLN4/1fMkf9XzJH/Y9KZ/2PSmf9i053/YtOd/2DUof9g1KH/X9Wl/1/Vpf9d1qn/Xdap/1vXrf9b - 163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm6/1HZuv9P2rz/T9q8/0zav/9M2r//StvC/0rbwv9G - 28X/RtvF/zeyn5g3sp+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAqH62Sah+tkm8jM//vIzP/7qL0f+6i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+r - hNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hfdv/oX3b/5573P+ee9z/mnjd/5p43f+Wdt7/lnbe/4lu3v+J - bt7/JTjW/yU41v8jN9f/IzfX/yI22P8iNtj/ITXZ/yE12f8eM9b/HjPW/xwtzv8cLc7/GSrL/xkqy/8Y - K9L/GCvS/xgt3P8YLdz/Fize/xYs3v8VKt//FSrf/xMo4P8TKOD/L4Dy/C+A8vwFChAxBQoQMQAPDyIA - Dw8iLsix4i7IseIWnEf/FpxH/xefTP8Xn0z/F6FR/xehUf8XpFb/F6RW/xegU/8XoFP/F5xQ/xecUP8X - oFf/F6BX/xirZ/8Yq2f/F7Bw/xewcP8YsnX/GLJ1/xi0ev8YtHr/F7Z//xe2f/9Ny5P/TcuT/2LTnf9i - 053/YNSh/2DUof9f1aX/X9Wl/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R - 2bn/Udm5/0/avP9P2rz/TNq//0zav/9K28L/StvC/0bbxf9G28X/LZKFYC2ShWAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACofrZJqH62SbyMz/+8jM//uovR/7qL0f+3 - itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F92/+h - fdv/nnvc/5573P+aeN3/mnjd/5Z23v+Wdt7/iW7e/4lu3v8lONb/JTjW/yM31/8jN9f/IjbY/yI22P8h - Ndn/ITXZ/x4z1v8eM9b/HC3O/xwtzv8ZKsv/GSrL/xgr0v8YK9L/GC3c/xgt3P8WLN7/Fize/xUq3/8V - Kt//Eyjg/xMo4P8vgPL8L4Dy/AUKEDEFChAxAA8PIgAPDyIuyLHiLsix4hacR/8WnEf/F59M/xefTP8X - oVH/F6FR/xekVv8XpFb/F6BT/xegU/8XnFD/F5xQ/xegV/8XoFf/GKtn/xirZ/8XsHD/F7Bw/xiydf8Y - snX/GLR6/xi0ev8Xtn//F7Z//03Lk/9Ny5P/YtOd/2LTnf9g1KH/YNSh/1/Vpf9f1aX/Xdap/13Wqf9b - 163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0rbwv9K - 28L/RtvF/0bbxf8tkoVgLZKFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAGBggAhgYIAIvIzP/7yMz/+6i9H/uovR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+u - htf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/oX3b/6F92/+ee9z/nnvc/5p43f+aeN3/jHHd/4xx3f8o - ONX/KDjV/yY31v8mN9b/JDbX/yQ21/8jNdj/IzXY/yE02f8hNNn/HzPZ/x8z2f8eMtr/HjLa/xww2/8c - MNv/Gi/b/xov2/8YLd3/GC3d/xcs3v8XLN7/Dije/w4o3v8DJd7/AyXe/wZw8v8GcPL/CHrz/wh68/8N - wM//DcDP/wa0uv8GtLr/BItK/wSLSv8QmE3/EJhN/xejU/8Xo1P/GKVY/xilWP8YqF3/GKhd/xirYv8Y - q2L/GK1n/xitZ/8Yr2z/GK9s/xixcf8YsXH/GLN2/xizdv8YtXv/GLV7/xe3gP8Xt4D/F7mF/xe5hf9M - zJf/TMyX/2DUof9g1KH/X9Wm/1/Vpv9d1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U - 2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M2r//SdvC/0nbwv9G28X/RtvF/wsqIBgLKiAYAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGCACGBggAi8jM//vIzP/7qL0f+6 - i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+h - fdv/oX3b/5573P+ee9z/mnjd/5p43f+Mcd3/jHHd/yg41f8oONX/JjfW/yY31v8kNtf/JDbX/yM12P8j - Ndj/ITTZ/yE02f8fM9n/HzPZ/x4y2v8eMtr/HDDb/xww2/8aL9v/Gi/b/xgt3f8YLd3/Fyze/xcs3v8O - KN7/Dije/wMl3v8DJd7/BnDy/wZw8v8IevP/CHrz/w3Az/8NwM//BrS6/wa0uv8Ei0r/BItK/xCYTf8Q - mE3/F6NT/xejU/8YpVj/GKVY/xioXf8YqF3/GKti/xirYv8YrWf/GK1n/xivbP8Yr2z/GLFx/xixcf8Y - s3b/GLN2/xi1e/8YtXv/F7eA/xe3gP8XuYX/F7mF/0zMl/9MzJf/YNSh/2DUof9f1ab/X9Wm/13Wqf9d - 1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J - 28L/SdvC/0bbxf9G28X/CyogGAsqIBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAALuLzu27i87tuYvR/7mL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+u - htf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F+2/+hftv/nnvc/5573P+Qc9z/kHPc/yk31P8p - N9T/KDfV/yg31f8mNtb/JjbW/yQ11v8kNdb/IzXY/yM12P8hM9j/ITPY/yAy2f8gMtn/HjHa/x4x2v8c - MNr/HDDa/xsv3P8bL9z/FSzc/xUs3P8DJtv/Aybb/wIl3P8CJdz/BUvo/wVL6P8Hb/L/B2/y/wZv7f8G - b+3/BJa4/wSWuP8Hs73/B7O9/wWghv8FoIb/AotP/wKLT/8DjVP/A41T/xSjWf8Uo1n/GKle/xipXv8Y - rGP/GKxj/xiuaP8Yrmj/GLBu/xiwbv8YsXL/GLFy/xezeP8Xs3j/GLZ8/xi2fP8Xt4H/F7eB/xe5hv8X - uYb/FruK/xa7iv9KzZz/Ss2c/1/Vpv9f1ab/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U - 2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0nbwv9J28L/RdbB8EXWwfAAAAABAAAAAQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu4vO7buLzu25 - i9H/uYvR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+l - gNr/oX7b/6F+2/+ee9z/nnvc/5Bz3P+Qc9z/KTfU/yk31P8oN9X/KDfV/yY21v8mNtb/JDXW/yQ11v8j - Ndj/IzXY/yEz2P8hM9j/IDLZ/yAy2f8eMdr/HjHa/xww2v8cMNr/Gy/c/xsv3P8VLNz/FSzc/wMm2/8D - Jtv/AiXc/wIl3P8FS+j/BUvo/wdv8v8Hb/L/Bm/t/wZv7f8Elrj/BJa4/wezvf8Hs73/BaCG/wWghv8C - i0//AotP/wONU/8DjVP/FKNZ/xSjWf8YqV7/GKle/xisY/8YrGP/GK5o/xiuaP8YsG7/GLBu/xixcv8Y - sXL/F7N4/xezeP8Ytnz/GLZ8/xe3gf8Xt4H/F7mG/xe5hv8Wu4r/FruK/0rNnP9KzZz/X9Wm/1/Vpv9d - 1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M - 2r//SdvC/0nbwv9F1sHwRdbB8AAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmebkopnm5KLmL0f+5i9H/t4rS/7eK0v+0idT/tInU/7GH1f+x - h9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hftv/oX7b/5R12/+Uddv/KzjT/ys40/8p - N9P/KTfT/yg31f8oN9X/JjXW/yY11v8lNdf/JTXX/yM02P8jNNj/ITTY/yE02P8gMtn/IDLZ/x4x2f8e - Mdn/HTDb/x0w2/8TLNv/Eyzb/wMn2v8DJ9r/Aybb/wMm2/8DJd3/AyXd/wdt8f8HbfH/B27y/wdu8v8C - YcH/AmHB/wFht/8BYbf/B7O//wezv/8HtML/B7TC/wOLUf8Di1H/A41V/wONVf8Dj1r/A49a/xGiYP8R - omD/GK1l/xitZf8Yr2r/GK9q/xiwb/8YsG//GLJ0/xiydP8YtHn/GLR5/xe2ff8Xtn3/F7iC/xe4gv8X - uof/F7qH/xa7i/8Wu4v/FbyQ/xW8kP9JzqD/Sc6g/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bZs/9W - 2bP/VNm3/1TZt/9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J28L/SdvC/y6EdjguhHY4AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKZ5uSim - ebkouYvR/7mL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+l - gNr/pYDa/6F+2/+hftv/lHXb/5R12/8rONP/KzjT/yk30/8pN9P/KDfV/yg31f8mNdb/JjXW/yU11/8l - Ndf/IzTY/yM02P8hNNj/ITTY/yAy2f8gMtn/HjHZ/x4x2f8dMNv/HTDb/xMs2/8TLNv/Ayfa/wMn2v8D - Jtv/Aybb/wMl3f8DJd3/B23x/wdt8f8HbvL/B27y/wJhwf8CYcH/AWG3/wFht/8Hs7//B7O//we0wv8H - tML/A4tR/wOLUf8DjVX/A41V/wOPWv8Dj1r/EaJg/xGiYP8YrWX/GK1l/xivav8Yr2r/GLBv/xiwb/8Y - snT/GLJ0/xi0ef8YtHn/F7Z9/xe2ff8XuIL/F7iC/xe6h/8Xuof/FruL/xa7i/8VvJD/FbyQ/0nOoP9J - zqD/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtmz/1bZs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M - 2r//TNq//0nbwv9J28L/LoR2OC6EdjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1iMyptYjMqbeK0v+3itL/tInU/7SJ1P+x - h9X/sYfV/66F1/+uhdf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/mHja/5h42v8sN9H/LDfR/ys30/8r - N9P/KTbT/yk20/8oNtX/KDbV/yc11v8nNdb/JTTX/yU01/8jNNf/IzTX/yIz2f8iM9n/IDLZ/yAy2f8f - Mdr/HzHa/xov2v8aL9r/BCjZ/wQo2f8EJ9r/BCfa/wMm2/8DJtv/B13t/wdd7f8HbPH/B2zx/wdt8f8H - bfH/AV24/wFduP8BX7r/AV+6/weuwv8HrsL/B7PF/wezxf8Hq6//B6uv/wOMV/8DjFf/A45c/wOOXP8D - kWH/A5Fh/xaqZv8Wqmb/GLBs/xiwbP8YsXD/GLFw/xizdf8Ys3X/GLV6/xi1ev8Xt3//F7d//xe5g/8X - uYP/F7qI/xe6iP8Wu4z/FruM/xW8kf8VvJH/Fb6V/xW+lf9Hz6X/R8+l/1vXrf9b163/Wdiw/1nYsP9W - 2LP/Vtiz/1TZtv9U2bb/Udm6/1HZuv9P2rz/T9q8/0zav/9M2r//RMqzsUTKs7EAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAALWIzKm1iMypt4rS/7eK0v+0idT/tInU/7GH1f+xh9X/roXX/66F1/+rhNj/q4TY/6iC2f+o - gtn/pYDa/6WA2v+YeNr/mHja/yw30f8sN9H/KzfT/ys30/8pNtP/KTbT/yg21f8oNtX/JzXW/yc11v8l - NNf/JTTX/yM01/8jNNf/IjPZ/yIz2f8gMtn/IDLZ/x8x2v8fMdr/Gi/a/xov2v8EKNn/BCjZ/wQn2v8E - J9r/Aybb/wMm2/8HXe3/B13t/wds8f8HbPH/B23x/wdt8f8BXbj/AV24/wFfuv8BX7r/B67C/weuwv8H - s8X/B7PF/werr/8Hq6//A4xX/wOMV/8Djlz/A45c/wORYf8DkWH/Fqpm/xaqZv8YsGz/GLBs/xixcP8Y - sXD/GLN1/xizdf8YtXr/GLV6/xe3f/8Xt3//F7mD/xe5g/8Xuoj/F7qI/xa7jP8Wu4z/FbyR/xW8kf8V - vpX/Fb6V/0fPpf9Hz6X/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm2/1TZtv9R2br/Udm6/0/avP9P - 2rz/TNq//0zav/9EyrOxRMqzsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0iM/BtIjPwbSJ0/+0 - idP/sYfV/7GH1f+uhdf/roXX/6uE2P+rhNj/qILZ/6iC2f+betn/m3rZ/y420P8uNtD/LTbR/y020f8r - NtL/KzbS/yo11P8qNdT/KDXU/yg11P8nNdb/JzXW/yU01/8lNNf/JDPY/yQz2P8iM9n/IjPZ/yEy2f8h - Mtn/HzHa/x8x2v8EKNn/BCjZ/wQn2v8EJ9r/BCbb/wQm2/8HUun/B1Lp/wlq8f8JavH/CGrw/whq8P8I - a+//CGvv/wFcu/8BXLv/AV68/wFevP8Gm8P/BpvD/wiyx/8Issf/CLPJ/wizyf8GpqT/Bqak/wOOXv8D - jl7/A5Bi/wOQYv8Dkmf/A5Jn/xiwbf8YsG3/GLJy/xiycv8YtHf/GLR3/xi2e/8Ytnv/F7iA/xe4gP8X - uYX/F7mF/xe7if8Xu4n/FryN/xa8jf8VvZL/Fb2S/xW+lv8Vvpb/Fb+b/xW/m/9G0an/RtGp/1nYsP9Z - 2LD/Vtiz/1bYs/9U2bb/VNm2/1HZuv9R2br/Ttq8/07avP9J0bfGSdG3xgAAAAIAAAACAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAALSIz8G0iM/BtInT/7SJ0/+xh9X/sYfV/66F1/+uhdf/q4TY/6uE2P+o - gtn/qILZ/5t62f+betn/LjbQ/y420P8tNtH/LTbR/ys20v8rNtL/KjXU/yo11P8oNdT/KDXU/yc11v8n - Ndb/JTTX/yU01/8kM9j/JDPY/yIz2f8iM9n/ITLZ/yEy2f8fMdr/HzHa/wQo2f8EKNn/BCfa/wQn2v8E - Jtv/BCbb/wdS6f8HUun/CWrx/wlq8f8IavD/CGrw/whr7/8Ia+//AVy7/wFcu/8BXrz/AV68/wabw/8G - m8P/CLLH/wiyx/8Is8n/CLPJ/wampP8GpqT/A45e/wOOXv8DkGL/A5Bi/wOSZ/8Dkmf/GLBt/xiwbf8Y - snL/GLJy/xi0d/8YtHf/GLZ7/xi2e/8XuID/F7iA/xe5hf8XuYX/F7uJ/xe7if8WvI3/FryN/xW9kv8V - vZL/Fb6W/xW+lv8Vv5v/Fb+b/0bRqf9G0an/Wdiw/1nYsP9W2LP/Vtiz/1TZtv9U2bb/Udm6/1HZuv9O - 2rz/Ttq8/0nRt8ZJ0bfGAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACs - gstsrILLbLGH1f+xh9X/roXW/66F1v+rhNj/q4TY/5982P+ffNj/MDXP/zA1z/8uNdD/LjXQ/y010P8t - NdD/LDXS/yw10v8rNdT/KzXU/yg01P8oNNT/JzTW/yc01v8mM9f/JjPX/yQz2P8kM9j/IzLZ/yMy2f8h - Mdr/ITHa/xgu2v8YLtr/BCjZ/wQo2f8EKdv/BCnb/whf7f8IX+3/CWjw/wlo8P8JaPH/CWjx/wlp8f8J - afH/CGns/whp7P8BXL3/AVy9/wFev/8BXr//BY3F/wWNxf8Iscr/CLHK/wiyzP8Issz/CLTO/wi0zv8H - sML/B7DC/wORZ/8DkWf/A5Fo/wORaP8SqG7/Eqhu/xizdP8Ys3T/GLV4/xi1eP8Ytn3/GLZ9/xe4gv8X - uIL/F7qG/xe6hv8Xu4r/F7uK/xa8j/8WvI//Fb2T/xW9k/8Vv5f/Fb+X/xXAnP8VwJz/FMGg/xTBoP9F - 0q3/RdKt/1bYs/9W2LP/VNi2/1TYtv9R2bn/Udm5/0XDqHJFw6hyAAAAAQAAAAEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKyCy2ysgstssYfV/7GH1f+uhdb/roXW/6uE2P+r - hNj/n3zY/5982P8wNc//MDXP/y410P8uNdD/LTXQ/y010P8sNdL/LDXS/ys11P8rNdT/KDTU/yg01P8n - NNb/JzTW/yYz1/8mM9f/JDPY/yQz2P8jMtn/IzLZ/yEx2v8hMdr/GC7a/xgu2v8EKNn/BCjZ/wQp2/8E - Kdv/CF/t/whf7f8JaPD/CWjw/wlo8f8JaPH/CWnx/wlp8f8Iaez/CGns/wFcvf8BXL3/AV6//wFev/8F - jcX/BY3F/wixyv8Iscr/CLLM/wiyzP8ItM7/CLTO/wewwv8HsML/A5Fn/wORZ/8DkWj/A5Fo/xKobv8S - qG7/GLN0/xizdP8YtXj/GLV4/xi2ff8Ytn3/F7iC/xe4gv8Xuob/F7qG/xe7iv8Xu4r/FryP/xa8j/8V - vZP/Fb2T/xW/l/8Vv5f/FcCc/xXAnP8UwaD/FMGg/0XSrf9F0q3/Vtiz/1bYs/9U2Lb/VNi2/1HZuf9R - 2bn/RcOockXDqHIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAIACAACAAqeAzG6ngMxuqYLV7KmC1ewyNM7/MjTO/zA0z/8wNM//LzTQ/y800P8t - NNH/LTTR/yw00v8sNNL/KzTT/ys00/8pNNT/KTTU/ygz1f8oM9X/JjPX/yYz1/8lMtj/JTLY/yQy2f8k - Mtn/IjLa/yIy2v8IM93/CDPd/wlX6/8JV+v/CmXw/wpl8P8KZvD/Cmbw/wlm8P8JZvD/CWfw/wln8P8J - aPD/CWjw/who7f8IaO3/AVvA/wFbwP8BXcH/AV3B/wWQx/8FkMf/CLHM/wixzP8Isc7/CLHO/wiy0P8I - stD/CbTS/wm00v8JtNT/CbTU/witvv8Irb7/BpyC/wacgv8ZtHb/GbR2/xi2ev8Ytnr/F7d+/xe3fv8Y - uYP/GLmD/xe6iP8Xuoj/FryL/xa8i/8WvJD/FryQ/xW+lP8VvpT/Fb+Z/xW/mf8VwJz/FcCc/xTBof8U - waH/E8Kl/xPCpf9P0a/zT9Gv807HqHJOx6hyAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAIAAIACp4DMbqeAzG6p - gtXsqYLV7DI0zv8yNM7/MDTP/zA0z/8vNND/LzTQ/y000f8tNNH/LDTS/yw00v8rNNP/KzTT/yk01P8p - NNT/KDPV/ygz1f8mM9f/JjPX/yUy2P8lMtj/JDLZ/yQy2f8iMtr/IjLa/wgz3f8IM93/CVfr/wlX6/8K - ZfD/CmXw/wpm8P8KZvD/CWbw/wlm8P8JZ/D/CWfw/wlo8P8JaPD/CGjt/who7f8BW8D/AVvA/wFdwf8B - XcH/BZDH/wWQx/8Iscz/CLHM/wixzv8Isc7/CLLQ/wiy0P8JtNL/CbTS/wm01P8JtNT/CK2+/witvv8G - nIL/BpyC/xm0dv8ZtHb/GLZ6/xi2ev8Xt37/F7d+/xi5g/8YuYP/F7qI/xe6iP8WvIv/FryL/xa8kP8W - vJD/Fb6U/xW+lP8Vv5n/Fb+Z/xXAnP8VwJz/FMGh/xTBof8TwqX/E8Kl/0/Rr/NP0a/zTseock7HqHIA - AAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEhf5MdIX+THTWbx/01m8f9MaPH/TGjx/0xq8f9M - avH/S2zx/0ts8f9KbvL/Sm7y/0pv8v9Kb/L/SXHy/0lx8v9JcvP/SXLz/0hz8/9Ic/P/R3Xz/0d18/9G - dvL/Rnby/0V38/9Fd/P/C2Hv/wth7/8LYvD/C2Lw/wtj8P8LY/D/CmTw/wpk8P8KZe//CmXv/wpm8P8K - ZvD/CWfw/wln8P8JaPD/CWjw/wFbwv8BW8L/AV3E/wFdxP8Ho8z/B6PM/wmwz/8JsM//CbDQ/wmw0P8J - sdL/CbHS/wmy1P8JstT/CbPW/wmz1v8JtNj/CbTY/wm12v8Jtdr/OuDf/zrg3/864eH/OuHh/zvi4/87 - 4uP/O+Ll/zvi5f874ub/O+Lm/zvj5/874+f/O+Tp/zvk6f875Or/O+Tq/zvl7P875ez/OuXt/zrl7f86 - 5e//OuXv/zrm8P865vD/OOLs+Dji7PgAAAALAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAASF/kx0hf5MdNZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pu8v9KbvL/Sm/y/0pv8v9J - cfL/SXHy/0ly8/9JcvP/SHPz/0hz8/9HdfP/R3Xz/0Z28v9GdvL/RXfz/0V38/8LYe//C2Hv/wti8P8L - YvD/C2Pw/wtj8P8KZPD/CmTw/wpl7/8KZe//Cmbw/wpm8P8JZ/D/CWfw/wlo8P8JaPD/AVvC/wFbwv8B - XcT/AV3E/wejzP8Ho8z/CbDP/wmwz/8JsND/CbDQ/wmx0v8JsdL/CbLU/wmy1P8Js9b/CbPW/wm02P8J - tNj/CbXa/wm12v864N//OuDf/zrh4f864eH/O+Lj/zvi4/874uX/O+Ll/zvi5v874ub/O+Pn/zvj5/87 - 5On/O+Tp/zvk6v875Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P844uz4OOLs+AAAAAsA - AAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxdGCxcXRgtNYvD/TWLw/01k8P9NZPD/TWbx/01m8f9M - aPH/TGjx/0xq8f9MavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/SXHy/0lx8v9IcvP/SHLz/0hz8/9I - c/P/R3Xz/0d18/9GdvL/Rnby/wtf7/8LX+//C2Dv/wtg7/8LYe//C2Hv/wti8P8LYvD/C2Pw/wtj8P8L - ZPD/C2Tw/wpl8P8KZfD/Cmfw/wpn8P8BWsX/AVrF/wFbxv8BW8b/Ca/P/wmvz/8Jr9H/Ca/R/wmw0v8J - sNL/CbDU/wmw1P8Jsdb/CbHW/wmx2P8Jsdj/CbLa/wmy2v8Js9z/CbPc/zrh4f864eH/O+Lj/zvi4/87 - 4uX/O+Ll/zvi5v874ub/O+Pn/zvj5/864+n/OuPp/zvk6v875Or/O+Xs/zvl7P865e7/OuXu/zrl7/86 - 5e//Oubw/zrm8P855vH/Oebx/znm8/855vP/Gm50WBpudFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX - F0YLFxdGC01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pt8v9K - bfL/Sm/y/0pv8v9JcfL/SXHy/0hy8/9IcvP/SHPz/0hz8/9HdfP/R3Xz/0Z28v9GdvL/C1/v/wtf7/8L - YO//C2Dv/wth7/8LYe//C2Lw/wti8P8LY/D/C2Pw/wtk8P8LZPD/CmXw/wpl8P8KZ/D/Cmfw/wFaxf8B - WsX/AVvG/wFbxv8Jr8//Ca/P/wmv0f8Jr9H/CbDS/wmw0v8JsNT/CbDU/wmx1v8Jsdb/CbHY/wmx2P8J - str/CbLa/wmz3P8Js9z/OuHh/zrh4f874uP/O+Lj/zvi5f874uX/O+Lm/zvi5v874+f/O+Pn/zrj6f86 - 4+n/O+Tq/zvk6v875ez/O+Xs/zrl7v865e7/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/8a - bnRYGm50WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJT0mxCU9JsTWDw/01g8P9NYvD/TWLw/01k8P9N - ZPD/TWbx/01m8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/SXDy/0lw8v9I - cvP/SHLz/0hz8/9Ic/P/R3Xz/0d18/8LXu//C17v/wtf7/8LX+//C1/v/wtf7/8LYO//C2Dv/wti8P8L - YvD/C2Pw/wtj8P8LZPD/C2Tw/wtl8P8LZfD/B2He/wdh3v8Da8r/A2vK/wmt0f8JrdH/Ca7T/wmu0/8J - r9X/Ca/V/wmv1v8Jr9b/CbDY/wmw2P8Jsdr/CbHa/wmx2/8Jsdv/CbLd/wmy3f874uP/O+Lj/zvi5f87 - 4uX/O+Lm/zvi5v874+f/O+Pn/zrj6f864+n/OuTq/zrk6v875ez/O+Xs/zrl7f865e3/OuXv/zrl7/86 - 5vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zPT4NUz0+DVAAAAAQAAAAEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAQlPSbEJT0mxNYPD/TWDw/01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f9L - bPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9JcPL/SXDy/0hy8/9IcvP/SHPz/0hz8/9HdfP/R3Xz/wte7/8L - Xu//C1/v/wtf7/8LX+//C1/v/wtg7/8LYO//C2Lw/wti8P8LY/D/C2Pw/wtk8P8LZPD/C2Xw/wtl8P8H - Yd7/B2He/wNryv8Da8r/Ca3R/wmt0f8JrtP/Ca7T/wmv1f8Jr9X/Ca/W/wmv1v8JsNj/CbDY/wmx2v8J - sdr/CbHb/wmx2/8Jst3/CbLd/zvi4/874uP/O+Ll/zvi5f874ub/O+Lm/zvj5/874+f/OuPp/zrj6f86 - 5Or/OuTq/zvl7P875ez/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P84 - 5/T/M9Pg1TPT4NUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLWunNS1rpzU1e8P9NXvD/TWDw/01g8P9N - YvD/TWLw/01k8P9NZPD/TWbx/01m8f9MaPH/TGjx/0tq8f9LavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9K - b/L/SXDy/0lw8v9IcvP/SHLz/0dz8/9Hc/P/DFzv/wxc7/8LXe//C13v/wte7/8LXu//C1/v/wtf7/8L - YO//C2Dv/wth7/8LYe//C2Lw/wti8P8LZPD/C2Tw/wtl8P8LZfD/CqnS/wqp0v8KrNP/CqzT/wqt1f8K - rdX/Cq7W/wqu1v8Jrtj/Ca7Y/wmv2v8Jr9r/Ca/b/wmv2/8JsN3/CbDd/wqx3/8Ksd//O+Ll/zvi5f87 - 4ub/O+Lm/zvj5/874+f/OuPp/zrj6f865Or/OuTq/zvl7P875ez/OuXt/zrl7f865e//OuXv/zrm8P86 - 5vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v835fX8N+X1/AAAAAUAAAAFAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEta6c1LWunNTV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/0xo8f9M - aPH/S2rx/0tq8f9LbPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9JcPL/SXDy/0hy8/9IcvP/R3Pz/0dz8/8M - XO//DFzv/wtd7/8LXe//C17v/wte7/8LX+//C1/v/wtg7/8LYO//C2Hv/wth7/8LYvD/C2Lw/wtk8P8L - ZPD/C2Xw/wtl8P8KqdL/CqnS/wqs0/8KrNP/Cq3V/wqt1f8Krtb/Cq7W/wmu2P8Jrtj/Ca/a/wmv2v8J - r9v/Ca/b/wmw3f8JsN3/CrHf/wqx3/874uX/O+Ll/zvi5v874ub/O+Pn/zvj5/864+n/OuPp/zrk6v86 - 5Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P84 - 5/b/OOf2/zfl9fw35fX8AAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFjs6kxY7OpNXO//TVzv/01e8P9N - XvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f9K - bfL/Sm3y/0pv8v9Kb/L/SXHy/0lx8v9IcvP/SHLz/wxZ7/8MWe//DFrv/wxa7/8MXO//DFzv/wxd7/8M - Xe//C17v/wte7/8LX+//C1/v/wth7/8LYe//C2Lv/wti7/8gnvb/IJ72/ynB9f8pwfX/CqvV/wqr1f8K - rNf/CqzX/wqs2P8KrNj/Cq3a/wqt2v8Krdz/Cq3c/wqu3f8Krt3/Cq7f/wqu3/8Kr+D/Cq/g/zvi5v87 - 4ub/O+Pn/zvj5/864+n/OuPp/zrk6v865Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P85 - 5vH/Oebx/znm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/Nuf4/zbn+P8AAAAIAAAACAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABMWOzqTFjs6k1c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9M - ZvH/TGbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9JcfL/SXHy/0hy8/9I - cvP/DFnv/wxZ7/8MWu//DFrv/wxc7/8MXO//DF3v/wxd7/8LXu//C17v/wtf7/8LX+//C2Hv/wth7/8L - Yu//C2Lv/yCe9v8gnvb/KcH1/ynB9f8Kq9X/CqvV/wqs1/8KrNf/CqzY/wqs2P8Krdr/Cq3a/wqt3P8K - rdz/Cq7d/wqu3f8Krt//Cq7f/wqv4P8Kr+D/O+Lm/zvi5v874+f/O+Pn/zrj6f864+n/OuTq/zrk6v87 - 5ez/O+Xs/zrl7f865e3/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v84 - 5/b/OOf3/zjn9/825/j/Nuf4/wAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExW7OVMVuzlTVnv/01Z7/9N - XO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9M - avH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/SXHy/0lx8v8NV+7/DVfu/w1Y7v8NWO7/DVrv/w1a7/8N - W+//DVvv/w1c7/8NXO//DF7v/wxe7/8MX+//DF/v/x2S9f8dkvX/LsL6/y7C+v8uwvr/LsL6/ye98/8n - vfP/C6vZ/wur2f8LrNr/C6za/wus3P8LrNz/Cqzd/wqs3f8KrN//Cqzf/wqt4P8KreD/Cq3i/wqt4v87 - 4+f/O+Pn/zrj6f864+n/OuTq/zrk6v875ez/O+Xs/zrl7f865e3/OuXv/zrl7/865vD/Oubw/znm8f85 - 5vH/Oebz/znm8/845/T/OOf0/zjn9v845/b/OOf3/zjn9/835/n/N+f5/zbn+v825/r/AAAABgAAAAYA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAATFbs5UxW7OVNWe//TVnv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9N - YvD/TWTw/01k8P9MZvH/TGbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9J - cfL/SXHy/w1X7v8NV+7/DVju/w1Y7v8NWu//DVrv/w1b7/8NW+//DVzv/w1c7/8MXu//DF7v/wxf7/8M - X+//HZL1/x2S9f8uwvr/LsL6/y7C+v8uwvr/J73z/ye98/8Lq9n/C6vZ/wus2v8LrNr/C6zc/wus3P8K - rN3/Cqzd/wqs3/8KrN//Cq3g/wqt4P8KreL/Cq3i/zvj5/874+f/OuPp/zrj6f865Or/OuTq/zvl7P87 - 5ez/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v84 - 5/f/OOf3/zfn+f835/n/Nuf6/zbn+v8AAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLVOe0S1TntE1X7/9N - V+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TGbx/0xm8f9M - aPH/TGjx/0tq8f9LavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/DVXu/w1V7v8NV+7/DVfu/w1X7v8N - V+7/DVnu/w1Z7v8NWu//DVrv/w1b7/8NW+//Ho/1/x6P9f8wwPr/MMD6/zDA+v8wwPr/MMD6/zDA+v8w - wPr/MMD6/yi78/8ou/P/C6rc/wuq3P8Lqt3/C6rd/wur3/8Lq9//Cqvg/wqr4P8KrOH/Cqzh/wqs4/8K - rOP/O+Tp/zvk6f875Or/O+Tq/zvl7P875ez/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f85 - 5vP/Oebz/zjn9P845/T/OOf2/zjn9v845/f/OOf3/zfn+f835/n/Nuf6/zbn+v815Pj2NeT49gAAAAIA - AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAEtU57RLVOe0TVfv/01X7/9NWe//TVnv/01c7/9NXO//TV7w/01e8P9N - YPD/TWDw/01i8P9NYvD/TWTw/01k8P9MZvH/TGbx/0xo8f9MaPH/S2rx/0tq8f9LbPH/S2zx/0pt8v9K - bfL/Sm/y/0pv8v8NVe7/DVXu/w1X7v8NV+7/DVfu/w1X7v8NWe7/DVnu/w1a7/8NWu//DVvv/w1b7/8e - j/X/Ho/1/zDA+v8wwPr/MMD6/zDA+v8wwPr/MMD6/zDA+v8wwPr/KLvz/yi78/8Lqtz/C6rc/wuq3f8L - qt3/C6vf/wur3/8Kq+D/Cqvg/wqs4f8KrOH/Cqzj/wqs4/875On/O+Tp/zvk6v875Or/O+Xs/zvl7P86 - 5e3/OuXt/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/84 - 5/f/N+f5/zfn+f825/r/Nuf6/zXk+PY15Pj2AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARkrWPkZK1j5N - Ve//TVXv/01X7/9NV+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9N - ZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f9KbvL/Sm7y/w1T7f8NU+3/DVTu/w1U7v8N - Ve7/DVXu/w1X7v8NV+7/DVju/w1Y7v8fjPX/H4z1/zG++v8xvvr/Mb76/zG++v8wvvr/ML76/zC++v8w - vvr/Mb76/zG++v8xv/r/Mb/6/ym69P8puvT/C6nf/wup3/8LqeD/C6ng/wqq4v8KquL/Cqrj/wqq4/8K - q+X/Cqvl/zvk6v875Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/85 - 5vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/N+f5/zfn+f825/r/Nuf6/zbn+/825/v/L8zfri/M364A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGStY+RkrWPk1V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9N - XO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9MZvH/TGbx/0xo8f9MaPH/TGrx/0xq8f9L - bPH/S2zx/0pu8v9KbvL/DVPt/w1T7f8NVO7/DVTu/w1V7v8NVe7/DVfu/w1X7v8NWO7/DVju/x+M9f8f - jPX/Mb76/zG++v8xvvr/Mb76/zC++v8wvvr/ML76/zC++v8xvvr/Mb76/zG/+v8xv/r/Kbr0/ym69P8L - qd//C6nf/wup4P8LqeD/Cqri/wqq4v8KquP/Cqrj/wqr5f8Kq+X/O+Tq/zvk6v875ez/O+Xs/zrl7f86 - 5e3/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v845/b/OOf3/zjn9/83 - 5/n/N+f5/zbn+v825/r/Nuf7/zbn+/8vzN+uL8zfrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA - AAABTVLu/01S7v9NVe//TVXv/01X7/9NV+//TVrv/01a7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9N - YvD/TWLw/01k8P9NZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f8NUO3/DVDt/w1R7f8N - Ue3/DVPt/w1T7f8NVO7/DVTu/yCJ9P8gifT/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8y - vPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/ym49P8puPT/C6fi/wun4v8LqOP/C6jj/wqo5f8K - qOX/Cqnm/wqp5v875ez/O+Xs/zrl7f865e3/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/84 - 5/T/OOf0/zjn9v845/b/OOf3/zjn9/836Pn/N+j5/zbn+v825/r/Nuf7/zbn+/816P3/Nej9/xBYYCAQ - WGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFNUu7/TVLu/01V7/9NVe//TVfv/01X7/9N - Wu//TVrv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9MZvH/TGbx/0xo8f9M - aPH/TGrx/0xq8f9LbPH/S2zx/w1Q7f8NUO3/DVHt/w1R7f8NU+3/DVPt/w1U7v8NVO7/IIn0/yCJ9P8y - vPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8y - vPr/Kbj0/ym49P8Lp+L/C6fi/wuo4/8LqOP/Cqjl/wqo5f8Kqeb/Cqnm/zvl7P875ez/OuXt/zrl7f86 - 5e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v845/f/OOf3/zfo+f83 - 6Pn/Nuf6/zbn+v825/v/Nuf7/zXo/f816P3/EFhgIBBYYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAElO4nNJTuJzTVLu/01S7v9NVe//TVXv/01X7/9NV+//TVrv/01a7/9NXO//TVzv/01e8P9N - XvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TWbx/01m8f9MaPH/TGjx/0xq8f9MavH/Dk7t/w5O7f8O - UO3/DlDt/w5R7f8OUe3/IYb0/yGG9P8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8z - uvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/yu29f8rtvX/C6bl/wum5f8L - p+b/C6fm/wqn6P8Kp+j/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P84 - 5/T/OOf2/zjn9v845/f/OOf3/zfo+f836Pn/Nuf6/zbn+v825/v/Nuf7/zXo/f816P3/Mdvy0DHb8tAA - AAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASU7ic0lO4nNNUu7/TVLu/01V7/9N - Ve//TVfv/01X7/9NWu//TVrv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9N - ZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f8OTu3/Dk7t/w5Q7f8OUO3/DlHt/w5R7f8hhvT/IYb0/zO6+v8z - uvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8z - uvr/M7r6/zO6+v8zuvr/K7b1/yu29f8LpuX/C6bl/wun5v8Lp+b/Cqfo/wqn6P865e3/OuXt/zrl7/86 - 5e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/N+j5/zfo+f82 - 5/r/Nuf6/zbn+/825/v/Nej9/zXo/f8x2/LQMdvy0AAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAE1Q7OBNUOzgTVLu/01S7v9NVe//TVXv/01X7/9NV+//TVnv/01Z7/9N - XO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TWbx/01m8f9MaPH/TGjx/w5M7f8O - TO3/Dk3t/w5N7f8hhPP/IYTz/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80 - uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/yu09f8r - tPX/C6Xn/wul5/8Lpen/C6Xp/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P84 - 5/b/OOf2/zjn9/845/f/N+f5/zfn+f825/r/Nuf6/zbn+/825/v/Nej9/zXo/f805/78NOf+/AAgIAgA - ICAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATVDs4E1Q7OBN - Uu7/TVLu/01V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9N - YvD/TWTw/01k8P9NZvH/TWbx/0xo8f9MaPH/Dkzt/w5M7f8OTe3/Dk3t/yGE8/8hhPP/NLj6/zS4+v80 - uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80 - uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/K7T1/yu09f8Lpef/C6Xn/wul6f8Lpen/OuXv/zrl7/86 - 5vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v845/b/OOf3/zjn9/835/n/N+f5/zbn+v82 - 5/r/Nuf7/zbn+/816P3/Nej9/zTn/vw05/78ACAgCAAgIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAU1Q7eZNUO3mTVLu/01S7v9NVe//TVXv/01X7/9N - V+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TWbx/01m8f8O - Sez/Dkns/yKD8/8ig/P/Nbb5/zW2+f81tvn/Nbb5/zW2+v81tvr/Nbb6/zW2+v81tvn/Nbb5/zW2+f81 - tvn/Nbb6/zW2+v81tvr/Nbb6/zW1+f81tfn/Nbb5/zW2+f81tvr/Nbb6/zW2+v81tvr/Nbb5/zW2+f81 - tvn/Nbb5/yyy9v8ssvb/C6Pq/wuj6v865vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v84 - 5/b/OOf3/zjn9/835/n/N+f5/zbn+v825/r/Nuf7/zbn+/816P3/Nej9/zTn/vw05/78G15rExteaxMA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA - AAABTVDt5k1Q7eZNUu7/TVLu/01V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9NXO//TV7w/01e8P9N - YPD/TWDw/01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/w5J7P8OSez/IoPz/yKD8/81tvn/Nbb5/zW2+f81 - tvn/Nbb6/zW2+v81tvr/Nbb6/zW2+f81tvn/Nbb5/zW2+f81tvr/Nbb6/zW2+v81tvr/NbX5/zW1+f81 - tvn/Nbb5/zW2+v81tvr/Nbb6/zW2+v81tvn/Nbb5/zW2+f81tvn/LLL2/yyy9v8Lo+r/C6Pq/zrm8P86 - 5vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v845/f/OOf3/zfn+f835/n/Nuf6/zbn+v82 - 5/v/Nuf7/zXo/f816P3/NOf+/DTn/vwbXmsTG15rEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpQ5pBKUOaQTVLu/01S7v9N - Ve//TVXv/01X7/9NV+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/0xk8PxM - ZPD8L5/2/S+f9v02s/n/NrP5/zWz+f81s/n/NbP5/zWz+f81s/n/NbP5/zaz+f82s/n/NbP5/zWz+f81 - s/n/NbP5/zWz+f81s/n/NrP5/zaz+f81s/n/NbP5/zWz+f81s/n/NbP5/zWz+f82s/n/NrP5/zWz+f81 - s/n/NbP5/zWz+f81s/n/NbP5/zOx9/wzsff8OeTw7Tnk8O055vP/Oebz/zjn9P845/T/OOf2/zjn9v84 - 5/f/OOf3/zfn+f835/n/Nuf6/zbn+v825/v/Nuf7/zXo/f816P3/MuD2yDLg9sgAADMFAAAzBQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAASlDmkEpQ5pBNUu7/TVLu/01V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9N - XO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TGTw/Exk8Pwvn/b9L5/2/Taz+f82s/n/NbP5/zWz+f81 - s/n/NbP5/zWz+f81s/n/NrP5/zaz+f81s/n/NbP5/zWz+f81s/n/NbP5/zWz+f82s/n/NrP5/zWz+f81 - s/n/NbP5/zWz+f81s/n/NbP5/zaz+f82s/n/NbP5/zWz+f81s/n/NbP5/zWz+f81s/n/M7H3/DOx9/w5 - 5PDtOeTw7Tnm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/N+f5/zfn+f825/r/Nuf6/zbn+/82 - 5/v/Nej9/zXo/f8y4PbIMuD2yAAAMwUAADMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVQMA - VVUDSVDkc0lQ5HNNVO3mTVTt5k1X7/1NV+/9TVnv/k1Z7/5NW+/6TVvv+kxc681MXOvNRFTLQERUy0AA - AAABAAAAATar8qs2q/KrNrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82 - sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82 - sPn/NrD5/zaw+f82sPn/NrD5/zaw+f8xn+C3MZ/gtwAAAAAAAAAANsnYITbJ2CE34fG1N+HxtTfm9vY3 - 5vb2Nuf4/jbn+P425/r+Nuf6/jXm+vA15vrwM9vwljPb8JYiiJkPIoiZDwAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVAwBVVQNJUORzSVDkc01U7eZNVO3mTVfv/U1X7/1N - We/+TVnv/k1b7/pNW+/6TFzrzUxc681EVMtARFTLQAAAAAEAAAABNqvyqzar8qs2sPn/NrD5/zaw+f82 - sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82 - sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zGf4Lcx - n+C3AAAAAAAAAAA2ydghNsnYITfh8bU34fG1N+b29jfm9vY25/j+Nuf4/jbn+v425/r+Neb68DXm+vAz - 2/CWM9vwliKImQ8iiJkPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAnibENJ4mxDTeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83 - rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83 - rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/EjdSHBI3UhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeJsQ0nibENN675/zeu+f83 - rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83 - rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f8S - N1IcEjdSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2p/OuNqfzrjeq+f83qvn/N6r5/zeq+f83q/n/N6v5/zer+f83 - q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83 - q/n/N6v5/zeq+f83qvn/N6r5/zeq+f8ynea2Mp3mtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADan8642 - p/OuN6r5/zeq+f83qvn/N6r5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83 - q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6r5/zeq+f83qvn/N6r5/zKd5rYy - nea2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3p/ftN6f37Ten+f83p/n/OKf5/zin+f84 - p/n/OKf5/zin+f84p/n/OKf5/zin+f84qPn/OKj5/zio+f84qPn/OKf5/zin+f84p/n/OKf5/zin+f84 - p/n/OKf5/zin+f83p/n/N6f5/zel9e43pfXuAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADen9+03p/ftN6f5/zen+f84p/n/OKf5/zin+f84p/n/OKf5/zin+f84p/n/OKf5/zio+f84 - qPn/OKj5/zio+f84p/n/OKf5/zin+f84p/n/OKf5/zin+f84p/n/OKf5/zen+f83p/n/N6X17jel9e4A - AAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAE3pPbfN6T23zil+P84 - pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84 - pfj/OKX4/zil+P84pfj/OKHz4Tih8+EAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAABAAAAATek9t83pPbfOKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84 - pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84ofPhOKHz4QAAAAUA - AAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2 - mexfNpnsXzih+P04ofj9OKH4/zih+P84ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj/OKH4/zih+P84 - ofj/OKH4/Tih+P0ykNxlMpDcZQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaZ7F82mexfOKH4/Tih+P04ofj/OKH4/zih+P84 - ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj9OKH4/TKQ3GUykNxlAAAAAQAAAAEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADGM1h8xjNYfNpnvfzaZ7382m/K3Npvytzab8rc2m/K3NZbpgTWW6YEu - fMEhLnzBIQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMYzWHzGM1h82 - me9/Npnvfzab8rc2m/K3Npvytzab8rc1lumBNZbpgS58wSEufMEhAAAAAQAAAAEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////// - /////////////////////////////////////////////////////////////////////////D////// - //////////////w///////////////////8AAD//////////////////AAA/////////////////8AAA - D/////////////////AAAA/////////////////AAAAD////////////////wAAAA/////////////// - /wAAAAD///////////////8AAAAA////////////////AAAAAD///////////////wAAAAA///////// - ////ADwAAAAAPwD//////////wA8AAAAAD8A//////////AAAAAAAAAAAAP////////wAAAAAAAAAAAD - ////////AAAAAAAAAAAAAP///////wAAAAAAAAAAAAD///////wAAAAAAAAAAAAAP//////8AAAAAAAA - AAAAAD//////8AAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAP/////8AAA - AAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD//// - /8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAA - AP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAAP/////AAAAAAAAA - AAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAA - AAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD//// - /AAAAAAAAAAAAAAAAD////wAAAAAAAAAAAAAAAA////wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAA - AA///8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA - AAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAP/wAAAAA - AAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8 - AAAAAAAAAAAAAAAAAAA//AAAAAAAAAPAAAAAAAAAP/wAAAAAAAADwAAAAAAAAD/8AAAAAAAAA8AAAAAA - AAA//AAAAAAAAAPAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAA - AAAAAAAAP/wAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAP/8AAAAA - AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA/// - 8AAAAAAAAAAAAAAAAAP///AAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAA - AA////8AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAA//////wAAAAAAAA - AAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAD/////wAAA - AAAAAAAAAAAA/////8AAAAAAAAAAAAAAAP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA//// - /8AAAAAAAAAAAAAAAP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAA - AP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAA - AAAAAAP/////wAAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAA//////wAAAAAAAAAAAAAAP//////AAA - AAAAAAAAAAAP//////wAAAAAAAAAAAAAD//////8AAAAAAAAAAAAAD///////AAAAAAAAAAAAAA///// - ///AAAAAAAAAAAAA////////wAAAAAAAAAAAAP////////AAAAAAAAAwAA/////////wAAAAAAAAMAAP - ///////////8AAAAAD///////////////AAAAAA///////////////8AAAAA////////////////AAAA - AP///////////////8AAAAD////////////////AAAAA////////////////wAAAA/////////////// - /8AAAAP////////////////8AAAP/////////////////AAAD//////////////////AAP////////// - ////////wAD///////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////KAAAAEAAAACA - AAAAAQAgAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAKcVkrSMqeT6XlsljR5LFX0saaTalkTiVSAAAAEgAAAAEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW/lEyD/MNj/vzDY//8w2P//MNj//zDY//8w2P//MNj//vDY/6r - hkWRAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvxumLp+cBl//nAZf/5wWX/+cFl//nBZf/5 - wWX/+cFl//nBZf/5wGX/+cBl/+23YOwAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbzu2Ty975m//a+Zv/3 - vmb/9r5m//e+Zv/2vmb/975m//a+Zv/3vmb/9r5m//e+Zv/2vmb/8Llj9AAAABQAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj - rmC89Ltn//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7Z//S - olnIAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAABQAAAAMA - AAABAAAAAAAAAAB1VTUY8bho//G5aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x - uGj/8bho//G4aP/xuGj/8bho/zIoFDMAAAAAAAAAAAAAAAAAAAACAAAABQAAAAUAAAACAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn1NV2q2 - cX/Ww3qL98V7jvvAeo3xpmp7vkEpM0sAAAAK4KpjtO61af/utWn/7rVp/+62af/utmn/7rZp/+62af/u - tmn/7rZp/+62af/utmn/7rZp/+61af/utWn/7rVp/+61af/OnFvCAAAAAiYtGih1nFGjiLpf64nAY/qG - wGL5fLVd41iDQo4HBwckAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAADmF1ngcd6if/He4v/x3yN/8d9j//HfpL/x36U/8d/lv/GgJj/wX2W9ueqZv3tsmr/7bJq/+2zav/t - smr/7bJq/+2yav/ts2r/7bJq/+2yav/tsmr/7bNq/+2yav/tsmr/7bJq/+2zav/tsmr/6rFp/ZG2YOCX - wWb/lMFl/5HBZf+OwmX/i8Jk/4jCZP+FwWP/gsJi/2igUbwAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAFvXOA2Md6if/He4v/x3yN/8d9j//HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP+1 - WEH/2JJd/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q - r2v/4Kpj/5GEKv+cwWb/msFm/5fBZv+UwWX/kcJl/47CZf+LwmT/iMJk/4XBY/+CwmL/fL5g+AcHByUA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvXOA1Md6if/He4v/x3yN/8d9kP/HfpL/x3+U/8d/lv/G - gJj/xoGa/8aBnP/Ggp3/s1dC/7JXQ//UjV3/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/n - rGz/56xs/+esbP/nrGz/3adk/5WBKv+SgSr/n8Fm/5zBZv+awWb/l8Fm/5TBZf+RwmX/jsJl/4vCZP+I - wmT/hcFj/4LCY/98wGH5AAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo2Ftacd6if/He4v/x3yN/8d9kP/H - fpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/7FVRP+wVkT/sFZF/9GKXv/kqGz/5Khs/+SobP/k - qGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/26Nk/5h+Kv+Vfir/k34r/6LAZv+fwWb/nMFm/5rBZv+X - wWb/lMFl/5HCZf+OwmX/i8Jk/4jCZP+FwWP/gsJi/26pVcoAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8d6iP7H - e4v/x3yN/8d9kP/HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof+uVET/rVNF/61URv+t - VEf/zohf/+Glbf/hpWz/4aVs/+GlbP/hpWz/4aVs/+Glbf/hpW3/2Z9k/5p6Kv+Yeir/lXsq/5N8Kv+l - wGb/osBm/5/BZv+cwWb/msFm/5fCZv+UwWX/kcJl/47CZf+LwmT/iMJk/4XBY/+CwmL/Eh4SKwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAJdfaDvHe4v/x3yN/8d9kP/HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/F - g6L/q1JG/6tSRv+qUkf/qlJH/6lSSP/LhF//3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/1ptk/5x3K/+b - dyv/mHgr/5Z4Kv+TeCr/p79m/6XAZv+iwGb/n8Fm/5zBZv+awWb/l8Jm/5TBZf+RwmX/jsJl/4vCZP+I - wmT/hcFj/2mdUKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8dYSwx3yN/8d9j//HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP/G - gp3/xYKf/8WCof/EgqL/xIKk/6lQRv+oUEf/p1FI/6dRSf+mUUn/plFK/8iBYP/bnW3/251s/9udbP/b - nWz/1Jhk/55zKv+cdCr/mnQq/5h0Kv+WdSv/lHYr/6m/Zv+nwGb/pcBm/6LAZv+fwWb/nMFm/5rBZv+X - wmb/lMFl/5HCZf+OwmX/i8Jk/4jCZP+CvWH1AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw3qL5Md9j//HfpL/x3+U/8d/lv/G - gJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/EgqL/xIKk/8ODpv+mTkf/pU9I/6VPSf+kT0n/pE9K/6NPSv+j - T0v/xX5h/9iZbP/YmW3/0ZRk/6BwK/+ecCv/nHAr/5pxK/+YcSv/lnIq/5RyK/+svmb/qb9m/6e/Zv+k - wGb/osBm/5/BZv+cwWb/msFm/5fCZv+UwWX/kcJl/47CZf+LwmT/iMFj/wAAAAcAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMV7juvH - fpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/EgqL/xIKk/8ODpf/Dgqf/okxI/6JNSf+h - TUn/oU1K/6BMSv+gTUv/n0xL/59NTP/GgWP/0pJo/6JsK/+fbCr/nW0q/5ttKv+abiv/l24r/5VuK/+T - byv/rr1l/6y+Zf+pvmb/p79m/6TAZv+iwGb/n8Fm/5zBZv+awWb/l8Fm/5TBZf+RwmX/jsJl/4vCZP8A - AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAADDe4/Qx36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/EgqL/xIKk/8ODpf/D - g6f/woOo/6BLSf+fS0n/nktK/51KSv+dSkv/nEpL/5xKTP+bSkz/m0pN/6RoLP+gaCr/n2gq/5xpKv+b - air/mGoq/5drKv+VbCv/k2wr/7C9Zf+uvWX/q75l/6m+Zv+nv2b/pMBm/6LAZv+fwWb/nMFm/5rBZv+X - wWb/lMFl/5HBZf+NwWT8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuneLcsd/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/E - gqL/xIKk/8ODpf/Cg6f/woOo/8GCqf+dSUr/nEhK/5tISv+aSEv/mkhL/5lIS/+YSEz/mEhN/4xBPP+C - QSH/oGQp/55lKf+bZSr/mmYq/5hmKv+WZyr/lGgr/5NpK/+yvGT/sL1l/669Zf+rvmX/qb5m/6e/Zv+l - wGb/osBm/5/BZv+cwWb/msFm/5fBZv+UwWX/ibdg2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFVVQnGgJj/xoGa/8aBnP/G - gp3/xYKf/8WCof/EgqL/xIKk/8ODpf/Cg6f/woOo/8GCqv/Agqr/mUZK/5hGS/+YRkv/l0ZL/5ZGS/+V - Rkz/lUVM/5RFTf95Mx//djIe/55gKf+cYSn/mmEp/5hiKf+XYyr/lWQq/5RkKv+SZSv/tLtk/7K8ZP+w - vWX/rr1l/6u+Zf+pv2b/p79m/6XAZv+iwGb/n8Fm/5zBZv+awWb/l8Fm/2SARFIAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAABwH2W1MaBnP/EgZ3/xIGf/8SBof/DgaL/woGk/8KCpf/Bgab/wIGo/8CBqf+/gar/v4Ks/5ZES/+V - REv/lENL/5NDS/+SQ0z/kkNM/5FDTP+RQ0z/djAe/3QwHv+XVyf/m10p/5peKf+XXin/ll8q/5RgKv+T - YSr/kWIr/7a6Y/+zu2P/sLxk/668ZP+svWT/qr1l/6e+Zf+lv2X/o79m/6DAZv+dwGb/nMFm/5nAZfsA - AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAE8K0cvnnnEzqqD1v6CQIb/f0CH/3w/iv96Poz/dj2O/3M8kP9wO5L/bTqU/2o5lv9m - OJj/YzaZ/2A1m/9MHk7/aSxI/5BBS/+QQUz/j0FM/45ATP+NQEz/iz9J/3QuHf9yLh7/i0kk/5pZKP+Y - Wij/llsp/5VcKf+SXSn/ZlQf/0NVGf9PlTT/TZc2/0uZOP9Jmjr/R5s7/0ScPf9Cnj7/QJ9A/z6gQf87 - oUP/OKJE/zaiRv9R0KP/S8Ci0hQ1LT8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAijfMDDsYfV/66F1v+rhNj/o3nN/35Aif98P4v/eT6N/3Y9kP9z - PJL/cDuT/2w6lf9pOZf/ZjeZ/2I2mv9fNJz/VSyE/0MYRf9BGEX/cTFJ/4s+TP+KPkz/iT1M/4Y7R/9y - Kx3/cCsd/4ZCI/+YVSf/llYo/5VXKP93USH/QUcU/0BIFf9Mfir/T5Qz/06WNf9LmDf/SZo5/0eaO/9F - nDz/Q54+/0GfQP8+n0H/PKFD/zmhRP9LwoX/Vtiz/1TYtv9R2bn/RLyjywAAABQAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiziM7vtInT/7GH1f+uhdb/q4TY/6iC2f+f - ds3/fD+N/3g/j/92PZH/cj2T/287lP9sOpf/aDiY/2U3mv9iNpv/XjSd/1oznv9CGEf/PxdG/zwWRv9Y - JUj/hjtL/4U6S/+DOkr/bykc/20pHf+KRSP/llEm/5RSJ/9jSBr/QkIT/0BEFP9ARxX/UpEx/1CTM/9O - lTX/TJc3/0qZOf9Imjv/Rps8/0SdPv9Bn0D/QJ9C/z2gQ/9NwIH/Wdiw/1bYs/9U2bb/Udm6/07avP9K - 07nyAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzhsnct4rS/7SJ1P+x - h9X/roXX/6uE2P+ogtn/pYDa/5x0z/94P5D/dT6S/3I8lP9vO5b/bDqY/2g4mf9kN5v/YTWc/100nv9a - Mp//Uy2V/zwWRv86FUb/NxRF/2QqSf+AOEz/gDdL/2wnHP9rJxz/k0ol/5RNJv9zRx7/QT4S/0BAEv8/ - QRT/UYUr/1KQMf9QkjP/TpQ1/02WN/9LmDn/SZo7/0ebPP9EnT7/Qp5A/0GfQv9Qv37/W9et/1nYsP9W - 2LP/VNm2/1HZuv9P2rz/TNq//0TMteIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR - bqJYuYvR/7eK0v+0idT/sYfV/66G1/+rhNj/qILZ/6WA2v+hftv/mHHQ/3U+lP9yPJX/bzyX/2s6mf9n - OJr/ZDec/2A1nv9cNJ//WTKg/1Uwov9KJ4b/OBRG/zUTRf8yEkX/ezVL/3s0S/9tJyP/aSUc/5NIJP+R - SSX/QTkQ/0A7Ef8/PBL/T3Ql/1SOLv9TjzH/UZEy/0+TNf9Nljf/TJg4/0mZOv9Imzz/RZw+/0OeQP9S - vnv/Xdap/1vXrf9Z2LD/Vtiz/1TZtv9R2bn/T9q8/0zav/9J28L/KIBycgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAABu4zO+bmL0f+3itL/tInU/7GH1f+uhtf/q4TY/6iC2f+lgNr/oX7b/5573P+U - b9H/cT2X/248mf9qOpv/Zzic/2M3nf9fNZ//XDOg/1gyov9UL6P/UC6k/0kpmP8zEkf/MBJF/0odR/92 - MUr/dC9F/381IP+RRCT/XjsX/z83EP8/ORH/VH0m/1aKK/9VjC3/U44w/1KRMv9QkzT/TpU2/02XOP9K - mTr/SZo8/0acPv9UvXj/X9Wm/13Wqf9b163/Wdiw/1bYs/9U2bf/Udm5/0/avP9M2r//SdvC/0bYw/oA - AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZk1mFLyMz/+6i9H/t4rS/7SJ1P+xh9X/robX/6uE2P+o - gtn/pYDa/6F92/+ee9z/mnjd/5Bt0/9uPJr/ajqc/2Y4nf9jN57/XjWg/1s0of9XMqP/Uy+k/08tpf9L - LKb/Ryqo/zwgiP8tEk3/ci5J/3MwSv+VRjH/jj8i/0E4EP9RaB7/WYQm/1iGKf9WiSv/VYwt/1SOMP9S - kDL/UZI0/0+UNv9Nljj/S5g6/0qaPP9Wu3X/YNSh/1/Vpv9d1qn/W9et/1nYsP9W2LP/VNm3/1HZuf9P - 2rz/TNq//0nbwv9G28X/ESwsLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKV7sVu8jM//uovR/7eK0v+0 - idT/sYfV/66G1/+rhNj/qILZ/6WA2v+hfdv/nnvc/5p43f+Wdt7/jGrU/2o6nf9mOZ//Yjeg/141ov9a - M6P/US+k/0kspP9KLKb/Siuo/0Ypqf9BJ6r/PSWs/6l0vP5AJkAUQABABNijUO5bfSH/WoAk/1mDJv9Y - hSj/VIcq/02ILP9Niy7/Uo8y/1KRNP9QlDb/TpY4/0yYOv9ZunL/YtOd/2DUof9f1aX/Xdap/1vXrf9Z - 2LD/Vtiz/1TZt/9R2bn/T9q8/0zav/9K28L/RtvF/yyRhHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACw - hL+LvI3P/7qL0f+3itL/tInU/7GH1f+uhtf/q4TY/6iC2f+lgNr/oX3b/5573P+aeN3/lnbe/5Jz3/+K - a9n/Zjmh/0guoP8aHZ3/Fhue/xUbn/8UGqD/Ehmh/xEYov8UGKX/NiOq/z4msf8iHUo0AAAAAAAAAABD - ejcXXoks/1V9Iv8gcR7/FHAf/xRzIf8UdiT/FHgm/xN7KP8Ufir/MIkx/0+WOP9dwHr/Y9KZ/2LTnf9g - 1KH/X9Wl/13Wqf9b163/Wdiw/1bYs/9U2bf/Udm6/0/avP9M2r//StvC/0bbxf83sKCfAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAsoTAhbyNz/+6i9H/t4rS/7SJ1P+xh9X/robX/6uE2P+ogtn/pYDa/6F92/+e - e9z/mnjd/5Z23v+Sc9//iW7f/yc61/8dKbn/Fxye/xYboP8VG6H/FBqi/xIZo/8RGKT/EBen/xIjy/8c - LOH/EhIxOQAAAAAAAAAAN2Q3FzGmTf8WlEH/FHEh/xRwH/8UcyL/FHYk/xR5Jv8Teyn/E34r/xSPQ/8Y - s3j/V8yR/2PSmf9i053/YNSh/1/Vpf9d1qn/W9et/1nYsP9W2LP/VNm3/1HZuv9P2rz/TNq//0rbwv9G - 28X/N7KfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKh+tkm8jM//uovR/7eK0v+0idT/sYfV/66G1/+r - hNj/qILZ/6WA2v+hfdv/nnvc/5p43f+Wdt7/iW7e/yU41v8jN9f/IjbY/yE12f8eM9b/HC3O/xkqy/8Y - K9L/GC3c/xYs3v8VKt//Eyjg/y+A8vwFChAxAA8PIi7IseIWnEf/F59M/xehUf8XpFb/F6BT/xecUP8X - oFf/GKtn/xewcP8YsnX/GLR6/xe2f/9Ny5P/YtOd/2DUof9f1aX/Xdap/1vXrf9Z2LD/Vtiz/1TZt/9R - 2bn/T9q8/0zav/9K28L/RtvF/y2ShWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYIAIvIzP/7qL0f+3 - itL/tInU/7GH1f+uhtf/q4TY/6iC2f+lgNr/oX3b/5573P+aeN3/jHHd/yg41f8mN9b/JDbX/yM12P8h - NNn/HzPZ/x4y2v8cMNv/Gi/b/xgt3f8XLN7/Dije/wMl3v8GcPL/CHrz/w3Az/8GtLr/BItK/xCYTf8X - o1P/GKVY/xioXf8Yq2L/GK1n/xivbP8YsXH/GLN2/xi1e/8Xt4D/F7mF/0zMl/9g1KH/X9Wm/13Wqf9b - 163/Wdiw/1bYs/9U2bf/Udm5/0/avP9M2r//SdvC/0bbxf8LKiAYAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAALuLzu25i9H/t4rS/7SJ1P+xh9X/robX/6uE2P+ogtn/pYDa/6F+2/+ee9z/kHPc/yk31P8o - N9X/JjbW/yQ11v8jNdj/ITPY/yAy2f8eMdr/HDDa/xsv3P8VLNz/Aybb/wIl3P8FS+j/B2/y/wZv7f8E - lrj/B7O9/wWghv8Ci0//A41T/xSjWf8YqV7/GKxj/xiuaP8YsG7/GLFy/xezeP8Ytnz/F7eB/xe5hv8W - u4r/Ss2c/1/Vpv9d1qn/W9et/1nYsP9W2LP/VNm3/1HZuf9P2rz/TNq//0nbwv9F1sHwAAAAAQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmebkouYvR/7eK0v+0idT/sYfV/66G1/+rhNj/qILZ/6WA2v+h - ftv/lHXb/ys40/8pN9P/KDfV/yY11v8lNdf/IzTY/yE02P8gMtn/HjHZ/x0w2/8TLNv/Ayfa/wMm2/8D - Jd3/B23x/wdu8v8CYcH/AWG3/wezv/8HtML/A4tR/wONVf8Dj1r/EaJg/xitZf8Yr2r/GLBv/xiydP8Y - tHn/F7Z9/xe4gv8Xuof/FruL/xW8kP9JzqD/Xdap/1vXrf9Z2LD/Vtmz/1TZt/9R2bn/T9q8/0zav/9J - 28L/LoR2OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALWIzKm3itL/tInU/7GH1f+u - hdf/q4TY/6iC2f+lgNr/mHja/yw30f8rN9P/KTbT/yg21f8nNdb/JTTX/yM01/8iM9n/IDLZ/x8x2v8a - L9r/BCjZ/wQn2v8DJtv/B13t/wds8f8HbfH/AV24/wFfuv8HrsL/B7PF/werr/8DjFf/A45c/wORYf8W - qmb/GLBs/xixcP8Ys3X/GLV6/xe3f/8XuYP/F7qI/xa7jP8VvJH/Fb6V/0fPpf9b163/Wdiw/1bYs/9U - 2bb/Udm6/0/avP9M2r//RMqzsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAtIjPwbSJ0/+xh9X/roXX/6uE2P+ogtn/m3rZ/y420P8tNtH/KzbS/yo11P8oNdT/JzXW/yU01/8k - M9j/IjPZ/yEy2f8fMdr/BCjZ/wQn2v8EJtv/B1Lp/wlq8f8IavD/CGvv/wFcu/8BXrz/BpvD/wiyx/8I - s8n/Bqak/wOOXv8DkGL/A5Jn/xiwbf8YsnL/GLR3/xi2e/8XuID/F7mF/xe7if8WvI3/Fb2S/xW+lv8V - v5v/RtGp/1nYsP9W2LP/VNm2/1HZuv9O2rz/SdG3xgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsgstssYfV/66F1v+rhNj/n3zY/zA1z/8uNdD/LTXQ/yw10v8r - NdT/KDTU/yc01v8mM9f/JDPY/yMy2f8hMdr/GC7a/wQo2f8EKdv/CF/t/wlo8P8JaPH/CWnx/whp7P8B - XL3/AV6//wWNxf8Iscr/CLLM/wi0zv8HsML/A5Fn/wORaP8SqG7/GLN0/xi1eP8Ytn3/F7iC/xe6hv8X - u4r/FryP/xW9k/8Vv5f/FcCc/xTBoP9F0q3/Vtiz/1TYtv9R2bn/RcOocgAAAAEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAKngMxuqYLV7DI0zv8w - NM//LzTQ/y000f8sNNL/KzTT/yk01P8oM9X/JjPX/yUy2P8kMtn/IjLa/wgz3f8JV+v/CmXw/wpm8P8J - ZvD/CWfw/wlo8P8IaO3/AVvA/wFdwf8FkMf/CLHM/wixzv8IstD/CbTS/wm01P8Irb7/BpyC/xm0dv8Y - tnr/F7d+/xi5g/8Xuoj/FryL/xa8kP8VvpT/Fb+Z/xXAnP8UwaH/E8Kl/0/Rr/NOx6hyAAAABAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEhf5MdNZvH/TGjx/0xq8f9LbPH/Sm7y/0pv8v9JcfL/SXLz/0hz8/9HdfP/Rnby/0V38/8L - Ye//C2Lw/wtj8P8KZPD/CmXv/wpm8P8JZ/D/CWjw/wFbwv8BXcT/B6PM/wmwz/8JsND/CbHS/wmy1P8J - s9b/CbTY/wm12v864N//OuHh/zvi4/874uX/O+Lm/zvj5/875On/O+Tq/zvl7P865e3/OuXv/zrm8P84 - 4uz4AAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAABcXRgtNYvD/TWTw/01m8f9MaPH/TGrx/0ts8f9KbfL/Sm/y/0lx8v9I - cvP/SHPz/0d18/9GdvL/C1/v/wtg7/8LYe//C2Lw/wtj8P8LZPD/CmXw/wpn8P8BWsX/AVvG/wmvz/8J - r9H/CbDS/wmw1P8Jsdb/CbHY/wmy2v8Js9z/OuHh/zvi4/874uX/O+Lm/zvj5/864+n/O+Tq/zvl7P86 - 5e7/OuXv/zrm8P855vH/Oebz/xpudFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCU9JsTWDw/01i8P9NZPD/TWbx/0xo8f9M - avH/S2zx/0pt8v9Kb/L/SXDy/0hy8/9Ic/P/R3Xz/wte7/8LX+//C1/v/wtg7/8LYvD/C2Pw/wtk8P8L - ZfD/B2He/wNryv8JrdH/Ca7T/wmv1f8Jr9b/CbDY/wmx2v8Jsdv/CbLd/zvi4/874uX/O+Lm/zvj5/86 - 4+n/OuTq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P8z0+DVAAAAAQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS1rpzU1e8P9N - YPD/TWLw/01k8P9NZvH/TGjx/0tq8f9LbPH/Sm3y/0pv8v9JcPL/SHLz/0dz8/8MXO//C13v/wte7/8L - X+//C2Dv/wth7/8LYvD/C2Tw/wtl8P8KqdL/CqzT/wqt1f8Krtb/Ca7Y/wmv2v8Jr9v/CbDd/wqx3/87 - 4uX/O+Lm/zvj5/864+n/OuTq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/N+X1/AAAAAUA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAExY7OpNXO//TV7w/01g8P9NYvD/TWTw/0xm8f9MaPH/TGrx/0ts8f9KbfL/Sm/y/0lx8v9I - cvP/DFnv/wxa7/8MXO//DF3v/wte7/8LX+//C2Hv/wti7/8gnvb/KcH1/wqr1f8KrNf/CqzY/wqt2v8K - rdz/Cq7d/wqu3/8Kr+D/O+Lm/zvj5/864+n/OuTq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P84 - 5/b/OOf3/zbn+P8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMVuzlTVnv/01c7/9NXvD/TWDw/01i8P9NZPD/TGbx/0xo8f9M - avH/S2zx/0pt8v9Kb/L/SXHy/w1X7v8NWO7/DVrv/w1b7/8NXO//DF7v/wxf7/8dkvX/LsL6/y7C+v8n - vfP/C6vZ/wus2v8LrNz/Cqzd/wqs3/8KreD/Cq3i/zvj5/864+n/OuTq/zvl7P865e3/OuXv/zrm8P85 - 5vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS1TntE1X7/9NWe//TVzv/01e8P9N - YPD/TWLw/01k8P9MZvH/TGjx/0tq8f9LbPH/Sm3y/0pv8v8NVe7/DVfu/w1X7v8NWe7/DVrv/w1b7/8e - j/X/MMD6/zDA+v8wwPr/MMD6/yi78/8Lqtz/C6rd/wur3/8Kq+D/Cqzh/wqs4/875On/O+Tq/zvl7P86 - 5e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/NeT49gAAAAIAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZK1j5N - Ve//TVfv/01Z7/9NXO//TV7w/01g8P9NYvD/TWTw/0xm8f9MaPH/TGrx/0ts8f9KbvL/DVPt/w1U7v8N - Ve7/DVfu/w1Y7v8fjPX/Mb76/zG++v8wvvr/ML76/zG++v8xv/r/Kbr0/wup3/8LqeD/Cqri/wqq4/8K - q+X/O+Tq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/y/M364A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAABTVLu/01V7/9NV+//TVrv/01c7/9NXvD/TWDw/01i8P9NZPD/TGbx/0xo8f9M - avH/S2zx/w1Q7f8NUe3/DVPt/w1U7v8gifT/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8p - uPT/C6fi/wuo4/8KqOX/Cqnm/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfo+f82 - 5/r/Nuf7/zXo/f8QWGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElO4nNNUu7/TVXv/01X7/9NWu//TVzv/01e8P9N - YPD/TWLw/01k8P9NZvH/TGjx/0xq8f8OTu3/DlDt/w5R7f8hhvT/M7r6/zO6+v8zuvr/M7r6/zO6+v8z - uvr/M7r6/zO6+v8zuvr/M7r6/yu29f8LpuX/C6fm/wqn6P865e3/OuXv/zrm8P855vH/Oebz/zjn9P84 - 5/b/OOf3/zfo+f825/r/Nuf7/zXo/f8x2/LQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATVDs4E1S7v9N - Ve//TVfv/01Z7/9NXO//TV7w/01g8P9NYvD/TWTw/01m8f9MaPH/Dkzt/w5N7f8hhPP/NLj6/zS4+v80 - uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/K7T1/wul5/8Lpen/OuXv/zrm8P85 - 5vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/zXo/f805/78ACAgCAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAFNUO3mTVLu/01V7/9NV+//TVnv/01c7/9NXvD/TWDw/01i8P9NZPD/TWbx/w5J7P8i - g/P/Nbb5/zW2+f81tvr/Nbb6/zW2+f81tvn/Nbb6/zW2+v81tfn/Nbb5/zW2+v81tvr/Nbb5/zW2+f8s - svb/C6Pq/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/zXo/f805/78G15rEwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpQ5pBNUu7/TVXv/01X7/9NWe//TVzv/01e8P9N - YPD/TWLw/0xk8Pwvn/b9NrP5/zWz+f81s/n/NbP5/zaz+f81s/n/NbP5/zWz+f82s/n/NbP5/zWz+f81 - s/n/NrP5/zWz+f81s/n/NbP5/zOx9/w55PDtOebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/zXo/f8y - 4PbIAAAzBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVA0lQ5HNN - VO3mTVfv/U1Z7/5NW+/6TFzrzURUy0AAAAABNqvyqzaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82 - sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f8xn+C3AAAAADbJ2CE34fG1N+b29jbn+P42 - 5/r+Neb68DPb8JYiiJkPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeJsQ03rvn/N675/zeu+f83 - rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/EjdSHAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAANqfzrjeq+f83qvn/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zeq+f83 - qvn/Mp3mtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3p/ftN6f5/zin+f84p/n/OKf5/zin+f84qPn/OKj5/zin+f84 - p/n/OKf5/zin+f83p/n/N6X17gAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATek9t84pfj/OKX4/zil+P84 - pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKHz4QAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAANpnsXzih+P04ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj9MpDcZQAAAAEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMYzWHzaZ7382m/K3NpvytzWW6YEufMEhAAAAAQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////n////// - ///wB////////8AD////////gAH///////8AAP///////wAAf/////8GAABw/////AAAAAAf///wAAAA - AA///+AAAAAAB///wAAAAAAD///AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAD//4AAAAAAAP// - gAAAAAAA//+AAAAAAAD//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//gAAAAAAAH/8AAAAAAAAP/gAAAAA - AAAf8AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB+AAAAGAAAAH4AAAAYAAAAfg - AAAAAAAAB+AAAAAAAAAH8AAAAAAAAAfwAAAAAAAAD/gAAAAAAAAf/AAAAAAAAB/+AAAAAAAAP/8AAAAA - AAD//8AAAAAAAf//gAAAAAAB//+AAAAAAAD//4AAAAAAAP//gAAAAAAA//+AAAAAAAD//4AAAAAAAP// - gAAAAAAB//+AAAAAAAH//8AAAAAAAf//4AAAAAAD///gAAAAAAf///gAAAAAD////AAAAEA//////gAA - f///////AAD///////+AAP///////4AB////////4AP////////4D/////////////////////////// - /////////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQPx4Tr4lEWd+uVpXdrFWWpoFAXjwvFhoA - AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2adYINemV4n7wmT++8Nk//vDZP/7 - w2T/+8Nk//vCZP7InFGTuI5LJgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZp1ki8Lljufe+Zfz4 - v2b/+MBm//jAZv/4wGb/+MBm//i/Zv/2vmX96LNfv7CISSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo - smKq9Ltn/fW8aP/1vGj/9bxo//W8aP/1vGj/9bxo//W8aP/1vGj/9Ltn/tmnXLMAAAACAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnhKUxW1cX85unSFQrl1h0CY - YXEpOSQtC7+QVTDwt2j/8Lho//C3aP/wuGj/8Lho//C4aP/wuGj/8Lho//C4aP/wt2j/8Ldo//C3aP+J - aTxBJCsZBW+UTSGEtV0+gLVdQnqyWzxSeT0dBwcHBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOV2ARsWx5ZLRvfanB - eIjvxnyP/MR8kPm2dInQsHGIk92ibMLutGr/7rRq/+60av/utGr/7rRq/+60av/utGr/7rRq/+60av/u - tGr/7rRq/+60av/TqmLEi7BdgoixXcKMv2P3isFk/IS9YfR0q1e5bqZUeE13PCAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO9 - dIGyxHiI78d8jP/HfY//x36S/8d/lf/GgJj/xYCa/sJxXv7hn2P/67Br/+uwa//rsGv/67Br/+uwa//r - sGv/67Br/+uwa//rsGv/67Br/+WtZv+km0T9mcBl+5fBZv+TwWX/j8Jl/4vCZP+HwmT/gb5h93q6XssH - BwcVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAnl5qDr90gq7He4r/x3yN/8d9kP/HfpP/x3+W/8aAmP/GgZv/xoKd/7dhWf+4YUj/1pFg/+Wpa//m - q2z/5qts/+arbP/mq2z/5qts/+arbP/mq2z/2KNg/6OHNf+WkDn/nsFm/5vBZv+XwWb/k8Fl/5DCZf+L - wmT/h8Jk/4TCY/96u17NUX0/IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAu3J/W8V5iOzHfI3/x32Q/8d+k//Hf5b/xoCY/8aBm//Ggp3/xYKf/7VgW/+v - VUX/t2JM/9OOYf/jp2z/46ds/+OnbP/jp2z/46ds/+Onbf/WnmD/qYU5/5Z8Kv+Xjjn/osBm/57BZv+a - wWb/l8Fm/5PCZf+PwmX/i8Jk/4fCZP+Bv2H4cKlVfhEcEQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUXWYLv3aFlsd8jP/HfZD/x36T/8d/lf/GgJj/xoGb/8aCnP/F - gp//xYKh/7JfXf+rUkb/q1NH/7BcTP/UkmX/36Js/9+ibP/fomz/36Js/9qfaP+nfzb/mXgr/5Z5Kv+Y - izn/pcBm/6LAZv+ewWb/msFm/5fCZv+TwWX/j8Jl/4vCZP+HwmT/eLFaxWKTSyMAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+d4Yvw3qK3sd9j//HfpP/x3+W/8aAmP/G - gZv/xoKd/8WCn//FgqL/xIKk/69cXv+nUEj/plFJ/6ZRSf+sWk7/yoVi/9mabP/anGz/0JRg/6h5Nf+c - cyr/mXMq/5d0K/+Zhzr/qb9m/6bAZv+iwGb/nsFm/5vBZv+Xwmb/k8Jl/5DCZf+LwmT/hsBj+321XUEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEe406xnyP88d+kv/H - f5b/xoCY/8aBm//Ggp3/xYKf/8WCof/EgqP/w4Om/6xaX/+jTkn/o05J/6JOSv+hTkv/qlpR/8iDY//O - kGL/rXc5/55uK/+bbyv/mXAr/5ZwK/+ahDr/rL5m/6m/Zv+lwGb/osBm/57BZv+awWb/l8Fm/5PBZf+P - wmX/i8Jk/36yW0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE - e482xX2R68d/lf/GgJj/xoGb/8aCnP/Fgp//xYKh/8SCo//Dg6X/w4On/6lZYf+gTEn/nktK/55LS/+d - S0v/nEtM/6NVUf+scDf/oGkq/51qKv+aayr/mGsq/5ZsK/+agTr/r71l/6u+Zf+ov2b/pcBm/6LAZv+e - wWb/msFm/5fBZv+TwWX/jsFl/oa4X0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAC4dooWw32Tq8aAmP/GgZv/xoKd/8WCn//FgqL/xIKj/8ODpf/Cg6j/wYKp/6VXYv+b - SEr/mkhL/5lIS/+YR0v/l0dN/4tAO/+HRyL/n2Qp/5tkKv+ZZSr/l2Yq/5RnK/+bfTn/srxk/6+9Zf+r - vmX/qb9m/6bAZv+iwGb/nsFm/5vBZv+XwWb/jrpi24WxXS4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmTU0BwX6Wd8WAmvrFgZ3/xYKf/8SCof/DgqP/w4Kl/8GCp//B - gqn/wIKr/6JUY/+WRUv/lkVL/5RFS/+TREz/k0RM/342Kv9+PCH/m10p/5pfKf+XYCn/lmIq/5RiKv+a - eTn/tLtk/7G8ZP+tvWX/q75l/6i+Zv+kwGb/ocBm/53BZv+awWb/j7ZglV13PwsAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2WZFBqH7Gx5pcmvyQUI3/jU+Q/4pOk/+G - TZX/g0yY/4BLmv98Sp3/eUme/2UwYv97Nkn/kUJL/5BCTP+PQUz/jUBL/3szKP95NiD/lFMn/5lbKP+W - XCn/lF0p/3pZJP9baib/aJ9B/2WhQ/9io0X/X6RG/1ymSP9Zp0r/VqhL/1KpTP9Usl//WceZzzF+aksA - AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnni2IqiAxa6wh9X/rYXX/6Z90v+E - Spb/ej+N/3c9kP9yPJP/bjuU/2o5l/9lN5r/YDWb/1gvj/9CGEX/UiFH/3g0Sv+JPUz/hzxK/3YvKP91 - MR//j0sl/5ZVKP+BUiP/VUoZ/0BHFf9Ohy7/T5U0/0yXN/9Jmjr/Rps8/0SdPv9An0D/PaBC/z6nT/9Q - zJn/Vdi1/1LZuP9Gwqi1N52JKQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqgL8dsofMtbSJ0/2w - h9X/rYXX/6mD2f+dc8r/gkyf/3Y+kf9xPJT/bjuW/2k5mP9kN5v/YDWd/1sznv9HIGT/PBZG/0QbRv94 - NEr/gjlL/3MsKP91MB7/kksl/4hNI/9OQxX/QEIT/0ZdHf9SkTL/T5Q0/02WN/9KmTr/SJs8/0WdPv9B - n0H/RKdR/1HFif9Y2LH/Vdm1/1LZuf9O2bz9Rsy0uziolSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACm - fbtvt4rR+7WJ1P+wh9b/rYXY/6mD2f+kf9r/mHDM/3xIn/9xPJX/bTuY/2g5mv9jN5z/XjWe/1ozoP9R - LJX/QBxe/zYURf9OH0f/fDVL/3EqLP90Lh7/kkkl/19AGP9APBH/RVIZ/1GDKv9SkDH/UJI0/02VN/9L - mDn/SJo7/0acPv9GpEv/VMOG/1vVqf9Y2LH/Vdm1/1LZuP9O2r3/Stm/+zeploAAAAAAAAAAAAAAAAAA - AAAAAAAAAFlDWQS7jM/8uIvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5h01v92RqP/bDua/2g5nP9i - N57/XTSg/1kyov9TL6T/TSyg/zwcbv83F1L/XCVJ/3QwR/+HPCT/dD8c/0hBFP9JWRr/VoUp/1WLLf9T - jzH/UZIz/0+UNv9Mlzn/Spk7/0qhSP9Zx4v/Xtao/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0fZw/wL - HR0NAAAAAAAAAAAAAAAAAAAAAJpzoyq8jND/uYvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5t53f+O - atD/dEeq/2c5nv9hN6D/XDSi/1Yxo/9OLaT/TCym/0gqqP88IpL/YTZ//3s8X6efVTSff2Uo+1RuH/9Z - hCf/V4cq/1KKLP9RjTD/UpEz/1CTNv9Nlzn/T6FJ/1nAff9g1KL/Xtan/1zXrP9Y2LH/Vdm1/1LZuf9O - 2r3/S9vB/0fbxP8kdGs9AAAAAAAAAAAAAAAAAAAAAK6CvF+8jND/uYvS/7WJ1P+wh9b/rYXY/6mD2f+k - f9r/oHzc/5t53f+Vdd7/iWjT/21Cq/9GLaD/KSKf/yUgoP8hHqH/IB2j/yAcpf86JKv/TjOns29Nhh2y - lEoUcosxpliAJP8sdSD/JXci/yN6Jf8ifin/I4Es/zOKMf9RnkX/XcF9/2LRmv9g1KL/Xtan/1zXrP9Y - 2LH/Vdm1/1LZuf9O2r3/S9vB/0fbxP81qptvAAAAAAAAAAAAAAAAAAAAALCDvlm8jND/uYvS/7WJ1P+w - h9b/rYXY/6mD2f+kf9r/oHzc/5t53f+Udd7/gGne/zlD2P8dKrz/GSKt/xcgrf8VHq3/Ex2w/xIdtP8V - JtT/HTfPtBtBfiQkh3IZLKZcpBuaRv8VfS3/FX4u/xV/L/8VhDT/FIk6/xWUS/8kuH7/UsuS/2HSnP9g - 1KL/Xtan/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0fbxP81rJpoAAAAAAAAAAAAAAAAAAAAAKF7sR68 - jND/uYvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5t53f+Da93/P0XY/yQ31/8iNdj/IDTY/x0w1f8a - LdT/GS3a/xcs3v8QKN//E0/o/g5u27EQsrepE6h++BKaTP8Xo1P/GKRY/xikWf8YqGL/GK9t/xiydP8Y - tXz/JbyG/07Ml/9g1KL/Xtan/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0fbxP8mfXEtAAAAAAAAAAAA - AAAAAAAAAGBggAK7i8/1uIvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5V23P87Qtb/JzfW/yU21v8j - Ndj/IDPZ/x4y2v8cMNv/GC7c/wsp3P8FLd//Bljs/wdx7/8Gpb3/Bqea/wWRWf8Ll1T/F6Zb/xirYv8Y - rmn/GLBw/xezdv8Ytn3/F7iD/yC+i/9T0J//Xtao/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0bYwvcK - JRwFAAAAAAAAAAAAAAAAAAAAAAAAAACzhspRuIrR9LWJ1P+wh9b/rYXY/6mD2f+jf9r/jHHa/z9D1P8p - N9T/JzbW/yU11/8jNNj/ITPZ/x8x2f8ZL9v/CSna/wMm2/8FQeX/B23x/wNjzP8Ddbr/B7PB/wWbf/8D - jVf/CJZd/xWpZP8YsGz/GLFy/xi0eP8Xt3//F7mF/xa7iv8fwJT/Ss+j/1rWrP9Y2LH/Vdm1/1LZuf9O - 2r3/Stm/9T+7ploAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1iMwVtonPmrSJ0/ewh9b/rYXY/6mD2f+R - dNj/SEfT/ys30v8pNtT/KDXV/yY01/8jM9j/ITPZ/x8x2v8MK9r/BCfa/wU34P8IZe//CGzw/wNgx/8C - cL3/B6zE/wiwv/8ElnX/A49f/wqbZf8YsG7/GLN0/xi1ef8XuIH/F7qG/xa7jP8VvZP/IsOb/0jRqP9Y - 2LH/Vdm1/1LZuf9O2bz4SdK5nkPIsRYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtIjPGLCFz3mw - h9X/rYXX/6R/2P9EQtH/LjXQ/yw10v8qNdT/KDTV/yY01/8kM9j/IjLZ/xwv2v8EKNn/Bj3i/whe7f8J - afH/CGnv/wNfyf8Ca8D/B6HH/wiyy/8Hrr3/BZyH/wORZ/8VrG//GLR2/xi2e/8XuIP/F7qI/xa8jf8V - vZT/Fb+Z/x7Eof9N1a//Vdi1/1LZuP9JzbF9R8yyGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAACeecgWmXzVm05O1/g3Qdj/NULZ/zRC2v8yQ9v/MUPc/y9D3v8tQ9//LEPg/xFA4f8K - XO3/CmXw/wlm8P8JZ/D/CWjv/wNezP8Ca8P/B6PL/wixzv8IstH/CbTU/wiwyf8NqZb/IcCS/yDClv8h - w53/IMWh/x/Gpf8fyKv/Hsmv/x7Ks/8nzbn8StC3pkWvlBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXF0YBSl/ndExk7/hMaPH/TGrx/0tt8f9Kb/L/SXHy/0hy8/9H - dPP/Rnbz/xpm8P8LYfD/C2Pw/wtk8P8KZfD/Cmfw/wNez/8Db8f/CazP/wmw0f8JsdT/CbLW/wmz2f8V - v9z/OuHh/zvi5P874ub/O+Pn/zvk6f875ez/OuXu/zrl7/855vD+M8/ZlxdiZwwAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBUc0VSl3nqU1i8P9NZfD/TGjx/0xq8f9L - bfH/Sm/y/0lw8v9Ic/P/R3Tz/xpk8P8LX+//C2Dv/wti8P8LZPD/C2Xw/wdh3v8Eecv/Ca7S/wmv1P8J - sNb/CbHZ/wmx2v8Vvt7/O+Lk/zvi5f874+f/OuPp/zvl6/865e3/OuXv/znm8f855vP/Ndnm2i/E0C4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLWeo1TFzt6k1f8P9N - YvD/TWXw/0xn8f9LavH/S2zx/0pu8v9JcPL/SHLz/xth8P8LXe//C17v/wtf7/8LYe//C2Pw/w9v8f8Q - rtn/CqzV/wqt1v8Jrtn/Ca/b/wmv3f8WveH/O+Lm/zvj5/865Or/O+Xr/zrl7f865fD/Oebx/znm8/84 - 5/X/N+b2/jPX5kQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABM - V+w6TVnu801c7/9NYPD/TWLw/01l8P9MaPH/TGrx/0ts8f9Kb/L/SXHy/xxe8P8NWu//DVzv/wxd7/8M - X+//EG3x/yKj9/8nvvP/ErDe/wus2f8Krdv/Cq3d/wqt3/8Wu+L/O+Pn/zrj6f875ev/OuXt/zrl7/85 - 5vH/Oebz/zjn9f845/f/N+f5/zLV5kUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABLVegwTFbs4E1Z7/9NXe//TWDw/01i8P9NZfD/TGjx/0tq8f9LbfH/Sm/y/xxc7/8N - V+7/DVnu/w1a7/8QZvD/Ipz2/y6++v8vwPr/J7vy/xCu4P8Lq93/Cqvf/wqs4f8WuuT/O+Tp/zvl6/86 - 5e3/OuXv/znm8f855vP/OOf1/zjn9v835/n/Nub5/DPd8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGStUMTFPrl01W7/9NWe//TV3v/01f8P9NYvD/TWXw/0xn8f9M - avH/S23x/xxZ7v8NVO7/DVXu/xFh7/8noff/Mb76/zG++v8xvvr/Mb76/y279/8RrOP/C6nh/wqq4/8W - uef/O+Xr/zrl7f865fD/Oebx/znm8/845/X/OOf3/zfn+f825/v/M9vvxS3F2CMAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFHqXU1T7u5NV+//TVrv/01d7/9N - YPD/TWLw/01l8P9MaPH/TGrx/x1W7v8OUe3/EmDv/yWU9v8zu/r/M7v6/zO7+v8zu/r/M7v6/zO7+v8p - tvT/E6vo/wun5f8Wt+j/OuXt/zrl7/855vH/Oebz/zjn9f845/f/N+j5/zbn+v815vv5MdnufBBVXQQA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASU7iDk1Q7LVN - U+7/TVfv/01Z7/9NXe//TWDw/01i8P9NZfD/TGjx/x5U7v8SWO7/JpH1/zO1+v80ufr/NLn6/zS5+v80 - ufr/NLn6/zS5+v8zuPr/KrT1/xGo6f8Xter/OuXv/znm8f855vP/OOf1/zjn9v835/n/Nuf6/zXo/P80 - 5fvMLMfbHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAFNUe26TVPu8U1W7/9NWe//TVzv/01f8P9NYvD/TWXw/yRg7/4rmfb/NbX5/zW1+v81 - tfr/NbX5/zW1+v81tfr/NbX5/zW1+v81tfr/NbX5/zCz9/8etu79Oebx/Tnm8/845/X/OOf3/zfn+f82 - 5/v/Nef8+DTm/MsbXmsLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKUOYSS1HqZUxT7KtNVu71TVnv/k1c7/1MXu3US2HrjzaZ9L82 - svn/NrL5/zay+f82svn/NrL5/zay+f82svn/NrL5/zay+f82svn/NrL5/zay+f8zsu7BOePwgzjk8sg3 - 5/b8N+f4/zbn+vk14/e6M+L3di/Q6BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVAEhQ4xZNVe47TVjvP01a7z9L - W+gqQ1PICDOk5ic3r/n/N6/5/zev+f83r/n/N6/5/zev+f83r/n/N6/5/zev+f83r/n/N6/5/zev+f8n - frMyNsnYBDfg8CQ35vc+Nuf5QDXm+j0y2O0dIoiZAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2qPWhN6n5/Teq+f83qvn/N6r5/zeq+f83qvn/N6r5/zeq+f83 - qvn/N6n5/TSh7KYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pvYeN6b3szim+Ps4pvn/OKb5/zim+f84 - pvn/OKb5/zim+f84pvj7N6P0tTOa5SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6P1HDef8nM4 - ovj+OKL4/zii+P84ovj/OKL4/zii+P41mup3NpvrHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxjNYGNZbqOzab8X82mvB/NJHhPSpysQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///n///wAA///4D///AAD//8AD//8AAP//wAP/ - /wAA///AAf//AAD/wAAAAf8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8 - AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA+AAAAAAfAADgAAAAAAcAAOAAAAAA - BwAA4AAAAAAHAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADg - AAAAAAcAAOAAAAAABwAA8AAAAAAHAAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAA - PwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/gAAAAA/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/ - /8AD//8AAP//wAP//wAA///AA///AAD///gf//8AAP///////wAA////////AAAoAAAAIAAAAEAAAAAB - ACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNOJhXZqVRe1qZSX1JAHhkAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPos16c+sJk//vCZP/7wmT/+sJk/96sWqIA - AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7bZjrfW9Z//1vWf/9b1n//W9Z//1 - vWf/9b1n/+KuX7QAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbkRNHrt1hHW/eYt9iVdmQ8qZWTbwt2n/8Ldp//C3af/w - t2n/8Ldp//C3af/wt2n/8Ldp/6yDTD5lhkYzh7pge3+4XnlIajYtAAAAAQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbhxfpfHe4v/x32P/8d+lP/GgJj/yYB2/OepZ//s - sWv/7LFr/+yxa//ssWv/7LFr/+yxa//psGn/q6tW95fBZv+RwmX/i8Jk/4XCY/91slqyBwcHCQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8c4CPx3uL/8d9kP/Hf5T/xoCY/8aBnP+8 - bHH/umRK/+Gjaf/mqmz/5qps/+aqbP/mqmz/46lq/6iJOf+aoEj/nMFm/5fBZv+RwmX/i8Jk/4XCY/92 - tFu2AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkFpjEMd7i//HfZD/x36U/8aAmP/G - gZz/xYKf/7lrc/+sU0b/tGBN/9ucaf/go2z/4KNs/96ia/+rgjn/l3kq/52dSP+iwGb/nMFm/5fCZv+R - wmX/i8Jk/4XCY/9YhEQ2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAeIhlx32P/8d/lP/G - gJj/xoGc/8WCn//EgqL/tml2/6ZQSP+lUEn/rVxQ/9WUav/Ymmr/rHs5/5tyK/+Xcyv/n5lJ/6fAZv+i - wGb/nMFm/5fCZv+RwmX/i8Jk/4K7YIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMR7jm/H - fpT/xoCY/8aBnP/Fgp//xIKi/8ODpf+yZ3j/oExJ/59LSv+eS0v/p1lS/650Ov+eayr/mmwq/5ZtK/+h - lUj/rL5l/6e/Zv+iwGb/nMFm/5fBZv+RwmX/ib1iggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAtXWHH8aAmP/GgZz/xYKf/8SCov/Dg6X/woOo/65lev+aR0v/mEdL/5dHTP+MQD3/jk4k/5xjKf+Y - ZCr/lWYq/6ORSP+wvWX/q75l/6e/Zv+iwGb/nMFm/5fBZv9/qFhLAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAACLaqxArHCk9KFgk/+eX5f/ml+b/5Zdnv+SXKH/gEZ4/4k9Sv+RQkz/kEJM/4I4NP+C - QCL/mlwp/5ZdKf+IXSf/doI3/3+qTf97rE//dq1R/3KvU/9ssVX/b71t/j2chEYAAAABAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAACrYPKrrCG1v+ogdb/hU2c/3c+j/9xPJP/ajmX/2Q3mv9bMpf/QRhG/2QrSf+I - PEz/ezIz/3s3IP+WVCf/bE0e/0BHFf9PjjD/TZc2/0maOv9FnT3/QJ9B/0CpU/9U06f/U9m4/0jJr7QA - AAAGAAAAAAAAAAAAAAAAAAAAALCExo22itP/sIbW/6qD2f+ifdj/f0ui/3E8lv9qOZn/Yjac/1szn/9M - J4H/OBRG/2QqSf91LjX/fzgg/3ZGHv9APRL/TXIl/1KRMv9OlTb/Spk6/0acPf9Gpk//WdGg/1jYsv9T - 2bj/Ttq+/0DBq5cAAAAAAAAAAAAAAABhSWEFuovQ/raK0/+wh9b/qoPZ/6N/2/+bd9r/d0mn/2g5nP9h - Np//WjOi/1IupP9EJIv/ORhY/3QwSf+NQCb/TEUV/1FwIv9Wiyz/U48x/1CUNf9MmDn/TKNL/13Pmf9c - 16v/WNiy/1PZuP9O2r7/SNrD/g4lJQ4AAAAAAAAAAKyAuTq7jND/torT/7CH1v+qg9n/o3/b/5x63f+T - ctz/cEau/0kuoP82JqH/LiOj/y0hpv89Jaz/jWGiUsmdTkJagSX/OXoj/zJ+J/8ygyz/Oosx/1KhSf9g - zZH/YNWj/1zXq/9Y2LL/U9m4/07avv9I28T/MqOURQAAAAAAAAAAroK8NLuM0P+2itP/sIfW/6qD2f+j - f9v/nHrd/5Jz3v8+Rtn/HizC/xkmuf8WIrn/FCLB/xYo2/8lXrRaKaqURx2dSP8Wijr/Fok6/xaQQ/8W - nFX/KLqB/13Rmv9g1aP/XNer/1jYsv9T2bj/Ttq+/0jbxP8zppU+AAAAAAAAAABgYIACuovQ+7aK0/+w - h9b/qoPZ/6N/2/+aeNz/QUbX/yU21v8iNNj/HzLa/xsw2/8SK93/Bi/g/wdy8f8Ir8D/B5Rb/xKeVv8Y - qmD/GK9q/xiydP8Ytn7/JL6L/1rTov9c16v/WNiy/1PZuP9O2r7/R9rD+wsoHwYAAAAAAAAAAAAAAAC2 - iM10torT/7CG1v+qg9n/oX7a/0ZH1f8pN9T/JjXX/yI02P8fMtn/FC3a/wMn2/8GV+v/BGbX/wSIvf8G - p6L/A45Z/xGjY/8YsG3/GLR3/xe4gP8Xu4r/IsGW/1fVqv9Y2LL/U9m4/07avv9Ey7R6AAAAAAAAAAAA - AAAAAAAAAAAAAACyh9CLsIbW/6eC2P9KR9L/LDbR/yk11P8mNNf/IzPZ/x4x2v8EKNr/B1Do/wlp8f8F - Y9X/A3nB/wiyyv8GpqX/A5Fm/xevcP8YtXr/F7mD/xe8jP8VvpX/IcSg/1PXsf9T2bj/StK2jgAAAAEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkfsscXF7e7D5P4P88UeL/OlLj/zhT5f82VOb/H0/m/wpg7/8K - ZfD/CWfw/wVi2P8Ee8b/CbHO/wmy0v8JstD/Gbms/ynMr/8pzrb/KdC7/yjSwf8n08b/NdfM+kWwlCAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5NxR5NYvD/TWbx/0xq8f9KbfL/SXHy/0hz8/8p - avH/C2Dv/wti8P8LZPD/B2Lh/waJzP8Jr9P/CbDW/wmx2v8iyt//O+Ll/zvj5/875Or/OuXu/zrm8P85 - 5vP/LLXATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFnrbk1e8P9NYvD/TWbx/0xq8f9K - bfL/SXHy/ypn8f8MXO//C1/v/wth7/8QcvH/ErDc/wqt1/8Krtr/Cq/d/yPJ4/874+f/OuTq/zrl7f86 - 5vD/Oebz/zjn9v814PCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMVepmTVnv/01e8P9N - YvD/TGbx/0xq8f9KbfL/K2Pw/w1Y7v8NW+//EWrx/yu1+f8twPj/Eq/h/wur3f8KrOD/I8jl/zvk6v86 - 5e3/Oubw/znm8/845/b/N+f5/zXi9X8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVJ0xBN - Ve//TVrv/01e8P9NYvD/TGbx/0xq8f8sX+//DVPu/xJj8P8tsfn/Mb36/zG9+v8wvPn/E6zl/wqp4/8j - x+j/OuXt/zrm8P855vP/OOf2/zfn+f825/v/KrrLNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAExQ65VNVe//TVrv/01e8P9NYvD/TWbx/y1b7/8TXe//L6z5/zS5+v80ufr/NLn6/zS5+v8y - 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 - + + 147, 17 \ No newline at end of file diff --git a/ColorControl/MainWorker.cs b/ColorControl/MainWorker.cs new file mode 100644 index 0000000..f522b67 --- /dev/null +++ b/ColorControl/MainWorker.cs @@ -0,0 +1,187 @@ +using ColorControl.Services.Common; +using ColorControl.Shared.Common; +using ColorControl.Shared.Contracts; +using ColorControl.Shared.EventDispatcher; +using ColorControl.Shared.Forms; +using ColorControl.Shared.Native; +using ColorControl.Shared.Services; +using NLog; +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading.Tasks; + +namespace ColorControl; + +internal class MainWorker +{ + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + + private readonly BackgroundWorker _backgroundWorker; + private readonly AppContextProvider _appContextProvider; + private readonly ServiceManager _serviceManager; + private readonly Config _config; + private readonly NotifyIconManager _notifyIconManager; + private readonly WindowMessageDispatcher _windowMessageDispatcher; + private readonly KeyboardShortcutDispatcher _keyboardShortcutDispatcher; + private readonly PowerEventDispatcher _powerEventDispatcher; + private readonly WinApiService _winApiService; + private readonly WinApiAdminService _winApiAdminService; + private readonly UpdateManager _updateManager; + private bool _isInitialized; + private bool _queryEndSession; + private nint _screenStateNotify; + + public static int SHORTCUTID_SCREENSAVER = -100; + + public MainWorker( + AppContextProvider appContextProvider, + ServiceManager serviceManager, + NotifyIconManager notifyIconManager, + WindowMessageDispatcher windowMessageDispatcher, + KeyboardShortcutDispatcher keyboardShortcutDispatcher, + PowerEventDispatcher powerEventDispatcher, + WinApiService winApiService, + WinApiAdminService winApiAdminService, + UpdateManager updateManager) + { + _backgroundWorker = new BackgroundWorker(); + _appContextProvider = appContextProvider; + _serviceManager = serviceManager; + _notifyIconManager = notifyIconManager; + _windowMessageDispatcher = windowMessageDispatcher; + _keyboardShortcutDispatcher = keyboardShortcutDispatcher; + _powerEventDispatcher = powerEventDispatcher; + _winApiService = winApiService; + _winApiAdminService = winApiAdminService; + _updateManager = updateManager; + _config = _appContextProvider.GetAppContext().Config; + } + + public async Task DoWork() + { + while (!_backgroundWorker.CancellationPending) + { + + if (!_isInitialized) + { + await Init(); + } + + //await Task.Delay(1000); + + System.Windows.Forms.Application.Run(_windowMessageDispatcher.MessageForm); + + _notifyIconManager.HideIcon(); + + if (_screenStateNotify != 0) + { + WinApi.UnregisterPowerSettingNotification(_screenStateNotify); + _screenStateNotify = 0; + } + + break; + } + } + + private async Task Init() + { + _appContextProvider.GetAppContext().SynchronizationContext = AsyncOperationManager.SynchronizationContext; + + _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageQueryEndSession, HandleQueryEndSessionEvent); + _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageClose, HandleCloseEvent); + _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessagePowerBroadcast, HandlePowerBroadcastEvent); + _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageShowWindow, HandleShowWindowEvent); + + _screenStateNotify = WinApi.RegisterPowerSettingNotification(_windowMessageDispatcher.MessageForm.Handle, ref Utils.GUID_CONSOLE_DISPLAY_STATE, 0); + + _keyboardShortcutDispatcher.SetUseRawInput(_config.UseRawInput); + + _serviceManager.LoadModules(); + + _notifyIconManager.Build(); + + // Auto-apply fix if desired but not currently installed + if (_config.FixChromeFonts && _winApiService.IsChromeInstalled() && !_winApiService.IsChromeFixInstalled()) + { + _winApiAdminService.InstallChromeFix(true, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); + } + + InitTheme(); + + _keyboardShortcutDispatcher.RegisterShortcut(SHORTCUTID_SCREENSAVER, _config.ScreenSaverShortcut); + _keyboardShortcutDispatcher.RegisterEventHandler(KeyboardShortcutDispatcher.Event_HotKey, HandleHotKeyEvent); + + _isInitialized = true; + } + + private bool _startupSent = false; + + private void HandleShowWindowEvent(object sender, WindowMessageEventArgs e) + { + if (_startupSent) + { + return; + } + + _startupSent = true; + + var _ = _powerEventDispatcher.SendEventAsync(PowerEventDispatcher.Event_Startup); + + var x = _updateManager.CheckForUpdates(); + } + + private void HandlePowerBroadcastEvent(object sender, WindowMessageEventArgs e) + { + if (e.Message.WParam.ToInt32() == WinApi.PBT_POWERSETTINGCHANGE) + { + var ps = Marshal.PtrToStructure(e.Message.LParam); + + var power = (WindowsMonitorPowerSetting)ps.Data; + + Logger.Debug($"PBT_POWERSETTINGCHANGE: {power}"); + + _powerEventDispatcher.SendEvent(power == WindowsMonitorPowerSetting.Off ? PowerEventDispatcher.Event_MonitorOff : PowerEventDispatcher.Event_MonitorOn); + } + } + + private void HandleCloseEvent(object sender, WindowMessageEventArgs e) + { + if (_queryEndSession) + { + _powerEventDispatcher.SendEvent(PowerEventDispatcher.Event_Shutdown); + } + } + + private void HandleQueryEndSessionEvent(object sender, WindowMessageEventArgs e) + { + _queryEndSession = true; + } + + private void HandleHotKeyEvent(object sender, KeyboardShortcutEventArgs args) + { + if (args.HotKeyId == SHORTCUTID_SCREENSAVER) + { + StartScreenSaver(); + } + } + + private void StartScreenSaver() + { + var screenSaver = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "scrnsave.scr"); + Process.Start("explorer.exe", screenSaver); + } + + private void InitTheme() + { + DarkModeUtils.SetDarkMode(_config.UseDarkMode); + + WinApi.RefreshImmersiveColorPolicyState(); + + DarkModeUtils.InitWpfTheme(); + + DarkModeUtils.SetContextMenuForeColor(_notifyIconManager.NotifyIcon.ContextMenuStrip, FormUtils.CurrentForeColor); + } +} diff --git a/ColorControl/Program.cs b/ColorControl/Program.cs index 6590a95..71fae67 100644 --- a/ColorControl/Program.cs +++ b/ColorControl/Program.cs @@ -1,4 +1,5 @@ using ColorControl.Forms; +using ColorControl.Services.AMD; using ColorControl.Services.Common; using ColorControl.Services.GameLauncher; using ColorControl.Services.LG; @@ -7,6 +8,7 @@ using ColorControl.Services.Samsung; using ColorControl.Shared.Common; using ColorControl.Shared.Contracts; using ColorControl.Shared.EventDispatcher; +using ColorControl.Shared.Forms; using ColorControl.Shared.Native; using ColorControl.Shared.Services; using ColorControl.Svc; @@ -38,12 +40,16 @@ namespace ColorControl public static bool IsRestarting { get; private set; } public static bool UserExit = false; + public static bool UseWorker = true; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private static Mutex _mutex; - private static MainForm _mainForm; + public static MainForm _mainForm; private static LoggingRule _loggingRule; + /// + /// The main entry point for the application. + /// [STAThread] // autogenerated public static void Main(string[] args) { @@ -51,10 +57,6 @@ namespace ColorControl MainAsync(args).GetAwaiter().GetResult(); } - /// - /// The main entry point for the application. - /// - //[STAThread] static async Task MainAsync(string[] args) { DataDir = Utils.GetDataPath(); @@ -73,6 +75,11 @@ namespace ColorControl return; } + await RunApp(args); + } + + static async Task RunApp(string[] args) + { var currentDomain = AppDomain.CurrentDomain; // Handler for unhandled exceptions. currentDomain.UnhandledException += GlobalUnhandledExceptionHandler; @@ -96,9 +103,9 @@ namespace ColorControl var appContextProvider = ServiceProvider.GetRequiredService(); var startUpParams = StartUpParams.Parse(args); - AppContext = new GlobalContext(Config, startUpParams, DataDir, _loggingRule, mutexId); + AppContext = new GlobalContext(Config, startUpParams, DataDir, _loggingRule, ServiceProvider, mutexId); appContextProvider.SetAppContext(AppContext); - + MessageForms.Title = AppContext.ApplicationTitle; var existingProcess = Utils.GetProcessByName("ColorControl"); @@ -134,19 +141,12 @@ namespace ColorControl _mutex.WaitOne(); try { - //if (Debugger.IsAttached) - //{ - // Utils.StartService(); - //} - - //var result = WinApi.SetPreferredAppMode(1); - //result = WinApi.RefreshImmersiveColorPolicyState(); - Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (Debugger.IsAttached) { + //Utils.StartService(); var winApiService = ServiceProvider.GetRequiredService(); if (winApiService.IsAdministrator()) @@ -158,8 +158,19 @@ namespace ColorControl } } - _mainForm = ServiceProvider.GetRequiredService(); - Application.Run(_mainForm); + if (UseWorker) + { + var worker = ServiceProvider.GetRequiredService(); + + await worker.DoWork(); + + //Application.Run(); + } + else + { + _mainForm = ServiceProvider.GetRequiredService(); + Application.Run(_mainForm); + } if (Debugger.IsAttached && !IsRestarting) { @@ -182,6 +193,23 @@ namespace ColorControl } } + public static void OpenMainForm() + { + _mainForm ??= ServiceProvider.GetRequiredService(); + _mainForm.OpenForm(); + } + + public static void Exit() + { + UserExit = true; + _mainForm?.Close(); + + if (AppContext.MainHandle != 0) + { + NativeMethods.SendMessageW(AppContext.MainHandle, NativeConstants.WM_CLOSE, 0, 0); + } + } + public static void Restart() { IsRestarting = true; @@ -251,11 +279,16 @@ namespace ColorControl { //services.AddSingleton(); services.RegisterSharedServices(); + services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); @@ -264,6 +297,7 @@ namespace ColorControl services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); }); } private static async Task RunService(string[] args) @@ -286,7 +320,7 @@ namespace ColorControl ServiceProvider = host.Services; var appContextProvider = ServiceProvider.GetRequiredService(); - AppContext = new GlobalContext(null, new StartUpParams(), DataDir, _loggingRule); + AppContext = new GlobalContext(null, new StartUpParams(), DataDir, _loggingRule, ServiceProvider); appContextProvider.SetAppContext(AppContext); await host.RunAsync(); @@ -348,7 +382,7 @@ namespace ColorControl internal static NotifyIcon GetNotifyIcon() { - return _mainForm?._trayIcon; + return _mainForm?._notifyIconManager?.NotifyIcon; } } } diff --git a/ColorControl/Properties/Resources.Designer.cs b/ColorControl/Properties/Resources.Designer.cs index 2d4d2a4..bf85d6f 100644 --- a/ColorControl/Properties/Resources.Designer.cs +++ b/ColorControl/Properties/Resources.Designer.cs @@ -22,7 +22,7 @@ namespace ColorControl.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { + public class Resources { private static global::System.Resources.ResourceManager resourceMan; @@ -36,7 +36,7 @@ namespace ColorControl.Properties { /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { + public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ColorControl.Properties.Resources", typeof(Resources).Assembly); @@ -51,7 +51,7 @@ namespace ColorControl.Properties { /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { + public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -60,10 +60,20 @@ namespace ColorControl.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + public static System.Drawing.Icon AppIcon { + get { + object obj = ResourceManager.GetObject("AppIcon", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap LG_remote { + public static System.Drawing.Bitmap LG_remote { get { object obj = ResourceManager.GetObject("LG_remote", resourceCulture); return ((System.Drawing.Bitmap)(obj)); @@ -108,7 +118,7 @@ namespace ColorControl.Properties { ///Rakuten TV;116;1218 ///Play;202 [rest of string was truncated]";. /// - internal static string RC_coords { + public static string RC_coords { get { return ResourceManager.GetString("RC_coords", resourceCulture); } diff --git a/ColorControl/Properties/Resources.resx b/ColorControl/Properties/Resources.resx index 7bd5ff2..d9c44eb 100644 --- a/ColorControl/Properties/Resources.resx +++ b/ColorControl/Properties/Resources.resx @@ -118,6 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\pngbarn.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\LG_remote.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/ColorControl/pngbarn.ico b/ColorControl/Resources/pngbarn.ico similarity index 100% rename from ColorControl/pngbarn.ico rename to ColorControl/Resources/pngbarn.ico diff --git a/ColorControl/Services/AMD/AmdPanel.cs b/ColorControl/Services/AMD/AmdPanel.cs index 36819b0..3be1ac4 100644 --- a/ColorControl/Services/AMD/AmdPanel.cs +++ b/ColorControl/Services/AMD/AmdPanel.cs @@ -3,6 +3,7 @@ using ColorControl.Shared.Common; using ColorControl.Shared.Contracts; using ColorControl.Shared.Forms; using ColorControl.Shared.Native; +using ColorControl.Shared.Services; using System; using System.Collections.Generic; using System.ComponentModel; @@ -18,18 +19,17 @@ namespace ColorControl.Services.AMD { public static readonly int SHORTCUTID_AMDQA = -201; - private AmdService _amdService; - private NotifyIcon _trayIcon; - private IntPtr _mainHandle; + private readonly AmdService _amdService; + private readonly NotifyIcon _trayIcon; + private readonly AppContextProvider _appContextProvider; private Config _config; private string _lastDisplayRefreshRates = string.Empty; - internal AmdPanel(AmdService amdService, NotifyIcon trayIcon, IntPtr handle) + internal AmdPanel(AmdService amdService, NotifyIcon trayIcon, AppContextProvider appContextProvider) { _amdService = amdService; _trayIcon = trayIcon; - _mainHandle = handle; - + _appContextProvider = appContextProvider; _config = Shared.Common.GlobalContext.CurrentContext.Config; InitializeComponent(); @@ -144,7 +144,7 @@ namespace ColorControl.Services.AMD { if (_amdService.HasDisplaysAttached()) { - await ApplyAmdPreset(preset); + await _amdService.ApplyPresetUi(preset); } else { @@ -227,30 +227,7 @@ namespace ColorControl.Services.AMD private async Task ApplySelectedAmdPreset() { var preset = GetSelectedAmdPreset(); - await ApplyAmdPreset(preset); - } - - internal async Task ApplyAmdPreset(AmdPreset preset) - { - if (preset == null || _amdService == null) - { - return false; - } - try - { - var result = await _amdService.ApplyPreset(preset); - if (!result) - { - throw new Exception("Error while applying AMD preset. At least one setting could not be applied. Check the log for details."); - } - - return true; - } - catch (Exception e) - { - MessageForms.ErrorOk($"Error applying AMD-preset ({e.TargetSite.Name}): {e.Message}"); - return false; - } + await _amdService.ApplyPresetUi(preset); } private async void btnApplyAmd_Click(object sender, EventArgs e) @@ -325,7 +302,7 @@ namespace ColorControl.Services.AMD if (!string.IsNullOrEmpty(preset.shortcut)) { - WinApi.UnregisterHotKey(_mainHandle, preset.id); + WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id); } _amdService.GetPresets().Remove(preset); diff --git a/ColorControl/Services/AMD/AmdService.cs b/ColorControl/Services/AMD/AmdService.cs index e7bd558..1591d1e 100644 --- a/ColorControl/Services/AMD/AmdService.cs +++ b/ColorControl/Services/AMD/AmdService.cs @@ -25,6 +25,8 @@ namespace ColorControl.Services.AMD public AmdService(AppContextProvider appContextProvider) : base(appContextProvider) { LoadPresets(); + + SetShortcuts(-201, _appContextProvider.GetAppContext().Config.AmdQuickAccessShortcut); } public static async Task ExecutePresetAsync(string idOrName) diff --git a/ColorControl/Services/Common/IServiceBase.cs b/ColorControl/Services/Common/IServiceBase.cs new file mode 100644 index 0000000..6063fd6 --- /dev/null +++ b/ColorControl/Services/Common/IServiceBase.cs @@ -0,0 +1,6 @@ +namespace ColorControl.Services.Common; + +internal interface IServiceBase +{ + void InstallEventHandlers(); +} diff --git a/ColorControl/Services/Common/NotifyIconManager.cs b/ColorControl/Services/Common/NotifyIconManager.cs new file mode 100644 index 0000000..d37b719 --- /dev/null +++ b/ColorControl/Services/Common/NotifyIconManager.cs @@ -0,0 +1,233 @@ +using ColorControl.Properties; +using ColorControl.Services.AMD; +using ColorControl.Services.GameLauncher; +using ColorControl.Services.LG; +using ColorControl.Services.NVIDIA; +using ColorControl.Services.Samsung; +using ColorControl.Shared.Contracts; +using ColorControl.Shared.Forms; +using ColorControl.Shared.Services; +using novideo_srgb; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace ColorControl.Services.Common; + +public class NotifyIconManager +{ + private readonly AppContextProvider _appContextProvider; + private readonly ServiceManager _serviceManager; + private readonly Config _config; + + public NotifyIcon NotifyIcon { get; private set; } + + private ToolStripMenuItem _nvTrayMenu; + private ToolStripMenuItem _novideoTrayMenu; + private ToolStripMenuItem _amdTrayMenu; + private ToolStripMenuItem _lgTrayMenu; + private ToolStripMenuItem _samsungTrayMenu; + private ToolStripMenuItem _gameTrayMenu; + + public NotifyIconManager(AppContextProvider appContextProvider, ServiceManager serviceManager) + { + _appContextProvider = appContextProvider; + _serviceManager = serviceManager; + _config = appContextProvider.GetAppContext().Config; + } + + public void Build() + { + if (_nvTrayMenu != null) + { + return; + } + + _nvTrayMenu = new ToolStripMenuItem("NVIDIA presets"); + _novideoTrayMenu = new ToolStripMenuItem("Novideo sRGB"); + _amdTrayMenu = new ToolStripMenuItem("AMD presets"); + _lgTrayMenu = new ToolStripMenuItem("LG presets"); + _samsungTrayMenu = new ToolStripMenuItem("Samsung presets"); + _gameTrayMenu = new ToolStripMenuItem("Game Launcher"); + NotifyIcon = new NotifyIcon() + { + Icon = Resources.AppIcon, + ContextMenuStrip = new ContextMenuStrip(), + Visible = _config.MinimizeToTray, + Text = _appContextProvider.GetAppContext().ApplicationTitleAdmin + }; + + NotifyIcon.ContextMenuStrip.Items.AddRange(new ToolStripItem[] { + _nvTrayMenu, + _novideoTrayMenu, + _amdTrayMenu, + _lgTrayMenu, + _samsungTrayMenu, + _gameTrayMenu, + new ToolStripSeparator(), + new ToolStripMenuItem("Open", null, OpenForm), + new ToolStripSeparator(), + new ToolStripMenuItem("Restart", null, Restart), + new ToolStripMenuItem("Exit", null, Exit) + }); + + NotifyIcon.MouseDoubleClick += trayIcon_MouseDoubleClick; + NotifyIcon.ContextMenuStrip.Opened += trayIconContextMenu_Popup; + NotifyIcon.BalloonTipClicked += trayIconBalloonTip_Clicked; + } + + public void HideIcon() + { + if (NotifyIcon != null) + { + NotifyIcon.Visible = false; + } + } + + private void Exit(object sender, EventArgs e) + { + Program.Exit(); + } + + private void Restart(object sender, EventArgs e) + { + Program.Restart(); + } + + private void OpenForm(object sender, EventArgs e) + { + Program.OpenMainForm(); + } + + private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e) + { + Program.OpenMainForm(); + } + + private void trayIconBalloonTip_Clicked(object sender, EventArgs e) + { + //if (_updateHtmlUrl != null) + //{ + // _winApiAdminService.StartProcess(_updateHtmlUrl); + //} + } + + private void trayIconContextMenu_Popup(object sender, EventArgs e) + { + _nvTrayMenu.Visible = _serviceManager.NvService != null; + if (_nvTrayMenu.Visible) + { + var presets = _serviceManager.NvService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate || x.applyResolution || x.applyDriverSettings || x.applyOther || x.applyOverclocking || x.ApplyColorEnhancements || x.applyHdmiSettings); + + UpdateTrayMenu(_nvTrayMenu, presets, TrayMenuItemNv_Click); + } + + _novideoTrayMenu.Visible = _serviceManager.NvService != null && MainWindow.IsInitialized(); + if (_novideoTrayMenu.Visible) + { + MainWindow.UpdateContextMenu(_novideoTrayMenu); + } + + _amdTrayMenu.Visible = _serviceManager.AmdService != null; + if (_amdTrayMenu.Visible) + { + var presets = _serviceManager.AmdService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate); + + UpdateTrayMenu(_amdTrayMenu, presets, TrayMenuItemAmd_Click); + } + + _lgTrayMenu.Visible = _serviceManager.LgService != null; + if (_lgTrayMenu.Visible) + { + var presets = _serviceManager.LgService.GetPresets().Where(x => !string.IsNullOrEmpty(x.appId) || x.steps.Any()); + + _lgTrayMenu.DropDownItems.Clear(); + + UpdateTrayMenu(_lgTrayMenu, presets, TrayMenuItemLg_Click); + } + + _samsungTrayMenu.Visible = _serviceManager.SamsungService != null; + if (_samsungTrayMenu.Visible) + { + var presets = _serviceManager.SamsungService.GetPresets().Where(x => x.Steps.Any()); + + _samsungTrayMenu.DropDownItems.Clear(); + + UpdateTrayMenu(_samsungTrayMenu, presets, TrayMenuItemSamsung_Click); + } + + _gameTrayMenu.Visible = _serviceManager.GameService != null; + if (_gameTrayMenu.Visible) + { + var presets = _serviceManager.GameService.GetPresets(); + + _gameTrayMenu.DropDownItems.Clear(); + + UpdateTrayMenu(_gameTrayMenu, presets, TrayMenuItemGame_Click); + } + } + + private void UpdateTrayMenu(ToolStripMenuItem menu, IEnumerable presets, EventHandler eventHandler) + { + menu.DropDownItems.Clear(); + + foreach (var preset in presets.OrderBy(p => p.name)) + { + var name = preset.GetTextForMenuItem(); + var keys = Keys.None; + + if (!string.IsNullOrEmpty(preset.shortcut)) + { + name += " " + preset.shortcut; + //keys = Utils.ShortcutToKeys(preset.shortcut); + } + + var item = new ToolStripMenuItem(name, null, null, keys); + item.Tag = preset; + item.Click += eventHandler; + item.ForeColor = FormUtils.MenuItemForeColor; + menu.DropDownItems.Add(item); + } + } + + private async void TrayMenuItemNv_Click(object sender, EventArgs e) + { + var item = sender as ToolStripMenuItem; + var preset = (NvPreset)item.Tag; + + await _serviceManager.NvService?.ApplyPresetUi(preset); + } + + private async void TrayMenuItemAmd_Click(object sender, EventArgs e) + { + var item = sender as ToolStripMenuItem; + var preset = (AmdPreset)item.Tag; + + await _serviceManager.AmdService?.ApplyPresetUi(preset); + } + + private async void TrayMenuItemGame_Click(object sender, EventArgs e) + { + var item = sender as ToolStripMenuItem; + var preset = (GamePreset)item.Tag; + + await _serviceManager.GameService?.ApplyPresetUi(preset); + } + + private async void TrayMenuItemLg_Click(object sender, EventArgs e) + { + var item = sender as ToolStripMenuItem; + var preset = (LgPreset)item.Tag; + + await _serviceManager.LgService?.ApplyPresetUi(preset); + } + + private async void TrayMenuItemSamsung_Click(object sender, EventArgs e) + { + var item = sender as ToolStripMenuItem; + var preset = (SamsungPreset)item.Tag; + + await _serviceManager.SamsungService?.ApplyPresetUi(preset); + } +} diff --git a/ColorControl/Services/Common/ServiceBase.cs b/ColorControl/Services/Common/ServiceBase.cs index 073ce6a..1c229cc 100644 --- a/ColorControl/Services/Common/ServiceBase.cs +++ b/ColorControl/Services/Common/ServiceBase.cs @@ -1,17 +1,21 @@ using ColorControl.Shared.EventDispatcher; +using ColorControl.Shared.Forms; using ColorControl.Shared.Native; using ColorControl.Shared.Services; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; +using NStandard; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Threading; using System.Threading.Tasks; namespace ColorControl.Services.Common { - abstract class ServiceBase where T : PresetBase, new() + abstract class ServiceBase : IServiceBase where T : PresetBase, new() { private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); @@ -31,6 +35,7 @@ namespace ColorControl.Services.Common protected T _lastAppliedPreset; protected string _loadPresetsError; protected T _lastTriggeredPreset; + protected int _quickAccessShortcutId; protected AppContextProvider _appContextProvider; @@ -68,6 +73,72 @@ namespace ColorControl.Services.Common public abstract Task ApplyPreset(T preset); + public async Task ApplyPresetUi(T preset) + { + if (preset == null) + { + return false; + } + try + { + var result = await ApplyPreset(preset); + if (!result) + { + throw new Exception($"Error while applying {ServiceName}-preset. At least one setting could not be applied. Check the log for details."); + } + + return true; + } + catch (Exception e) + { + Logger.Error(e); + + MessageForms.ErrorOk($"Error applying {ServiceName}-preset ({e.TargetSite.Name}): {e.Message}"); + return false; + } + } + + public async Task ApplyPresetById(int id) + { + var preset = _presets.FirstOrDefault(p => p.id == id); + + if (preset == null) + { + return false; + } + + return await ApplyPresetUi(preset); + } + + protected void SetShortcuts(int quickAccessShortcutId = 0, string shortcut = null) + { + if (!Program.UseWorker) + { + return; + } + + _quickAccessShortcutId = quickAccessShortcutId; + + var keyboardShortcutDispatcher = _appContextProvider.GetAppContext().ServiceProvider.GetRequiredService(); + + if (quickAccessShortcutId != 0 && !shortcut.IsNullOrWhiteSpace()) + { + keyboardShortcutDispatcher.RegisterShortcut(quickAccessShortcutId, shortcut); + } + + foreach (var preset in _presets) + { + keyboardShortcutDispatcher.RegisterShortcut(preset.id, preset.shortcut); + } + + keyboardShortcutDispatcher.RegisterAsyncEventHandler(KeyboardShortcutDispatcher.Event_HotKey, HotKeyPressed); + } + + public virtual void InstallEventHandlers() + { + + } + public T GetLastAppliedPreset() { return _lastAppliedPreset; @@ -233,5 +304,15 @@ namespace ColorControl.Services.Common } } + protected virtual async Task HotKeyPressed(object sender, KeyboardShortcutEventArgs e, CancellationToken _) + { + if (e.HotKeyId == _quickAccessShortcutId) + { + ToggleQuickAccessForm(); + return; + } + + await ApplyPresetById(e.HotKeyId); + } } } diff --git a/ColorControl/Services/Common/ServiceManager.cs b/ColorControl/Services/Common/ServiceManager.cs index 9132e46..6e08d6a 100644 --- a/ColorControl/Services/Common/ServiceManager.cs +++ b/ColorControl/Services/Common/ServiceManager.cs @@ -3,8 +3,11 @@ using ColorControl.Services.GameLauncher; using ColorControl.Services.LG; using ColorControl.Services.NVIDIA; using ColorControl.Services.Samsung; +using ColorControl.Shared.Contracts; using ColorControl.Shared.Services; +using NLog; using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -12,7 +15,11 @@ namespace ColorControl.Services.Common; public class ServiceManager { + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private readonly WinApiAdminService _winApiAdminService; + private readonly IServiceProvider _serviceProvider; + private readonly Config _config; + public Dictionary Modules { get; } = new(); internal NvService NvService { get; set; } internal LgService LgService { get; set; } @@ -20,9 +27,55 @@ public class ServiceManager internal GameService GameService { get; set; } internal SamsungService SamsungService { get; set; } - public ServiceManager(WinApiAdminService winApiAdminService) + public ServiceManager(WinApiAdminService winApiAdminService, IServiceProvider serviceProvider, AppContextProvider appContextProvider) { _winApiAdminService = winApiAdminService; + _serviceProvider = serviceProvider; + + _config = appContextProvider.GetAppContext().Config; + } + + public void LoadModules() + { + AddModule("NVIDIA controller"); + AddModule("AMD controller"); + AddModule("LG controller"); + AddModule("Samsung controller"); + AddModule("Game launcher"); + + var names = Modules.Select(m => m.Key).ToList(); + _config.Modules = _config.Modules.OrderBy(m => names.IndexOf(m.DisplayName)).ToList(); + } + + private void AddModule(string displayName) where T : class, IServiceBase + { + var moduleEx = new ModuleEx { DisplayName = displayName }; + Modules.Add(displayName, moduleEx); + + var existingModule = _config.Modules.FirstOrDefault(m => m.DisplayName == displayName); + + if (existingModule == null) + { + existingModule = new Module { DisplayName = displayName, IsActive = true }; + _config.Modules.Add(existingModule); + } + + if (existingModule.IsActive) + { + var service = moduleEx.CreateService(_serviceProvider); + + service?.InstallEventHandlers(); + + object _ = service switch + { + NvService nvService => NvService = nvService, + AmdService amdService => AmdService = amdService, + LgService lgService => LgService = lgService, + SamsungService samsungService => SamsungService = samsungService, + GameService gameService => GameService = gameService, + _ => throw new InvalidOperationException("Unknown module") + }; + } } public async Task HandleExternalServiceAsync(string serviceName, string[] parameters) diff --git a/ColorControl/Services/Common/UpdateManager.cs b/ColorControl/Services/Common/UpdateManager.cs new file mode 100644 index 0000000..0073845 --- /dev/null +++ b/ColorControl/Services/Common/UpdateManager.cs @@ -0,0 +1,163 @@ +using ColorControl.Shared.Common; +using ColorControl.Shared.Contracts; +using ColorControl.Shared.Forms; +using ColorControl.Shared.Services; +using System.Diagnostics; +using System.IO; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ColorControl.Services.Common; + +public class UpdateManager +{ + private readonly AppContextProvider _appContextProvider; + private readonly ServiceManager _serviceManager; + private readonly NotifyIconManager _notifyIconManager; + private readonly WinApiService _winApiService; + private readonly Config _config; + + private bool _checkedForUpdates; + private string _updateHtmlUrl; + private string _downloadUrl; + + public UpdateManager(AppContextProvider appContextProvider, ServiceManager serviceManager, NotifyIconManager notifyIconManager, WinApiService winApiService) + { + _appContextProvider = appContextProvider; + _serviceManager = serviceManager; + _notifyIconManager = notifyIconManager; + _winApiService = winApiService; + _config = appContextProvider.GetAppContext().Config; + } + + public async Task CheckForUpdates() + { + if (!_config.CheckForUpdates || _checkedForUpdates || Debugger.IsAttached) + { + return; + } + + _checkedForUpdates = true; + + await Utils.GetRestJsonAsync("https://api.github.com/repos/maassoft/colorcontrol/releases/latest", InitHandleCheckForUpdates); + } + + private void InitHandleCheckForUpdates(dynamic latest) + { + HandleCheckForUpdates(latest); + + //FormUtils.BeginInvokeCheck(() => HandleCheckForUpdates(latest)); + } + + private void HandleCheckForUpdates(dynamic latest) + { + if (latest?.tag_name == null) + { + return; + } + + var currentVersion = Application.ProductVersion; + var cvParts = currentVersion.Split("."); + + var newVersion = (string)latest.tag_name.Value.Substring(1); + var nvParts = newVersion.Split("."); + + bool CompareVersions() + { + var result = true; + var aNumberIsLarger = false; + + for (var i = 0; i < nvParts.Length; i++) + { + var part = Utils.ParseInt(nvParts[i]); + var cvPart = Utils.ParseInt(cvParts[i]); + + if (part > cvPart) + { + aNumberIsLarger = true; + break; + } + + if (part == cvPart) + { + continue; + } + + result = false; + break; + } + + return result && aNumberIsLarger; + } + + if (nvParts.Length != cvParts.Length || CompareVersions()) + { + _updateHtmlUrl = latest.html_url.Value; + + if (latest.assets != null && _winApiService.IsServiceRunning()) + { + var asset = latest.assets[0]; + _downloadUrl = asset.browser_download_url.Value; + + if (_config.AutoInstallUpdates) + { + InstallUpdate(_downloadUrl); + + return; + } + + _appContextProvider.GetAppContext().UpdateAvailable = true; + + if (_notifyIconManager.NotifyIcon.Visible) + { + _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click on the Update-button to update", ToolTipIcon.Info); + } + else + { + MessageForms.InfoOk($"New version {newVersion} is available. Click on the Update-button to update", "Update available", $"https://github.com/Maassoft/ColorControl/releases/tag/v{newVersion}"); + } + + return; + } + + if (_notifyIconManager.NotifyIcon.Visible) + { + _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click to open the GitHub page", ToolTipIcon.Info); + } + else + { + MessageForms.InfoOk($"New version {newVersion} is available. Click on the Help-button to open the GitHub page.", "Update available", $"https://github.com/Maassoft/ColorControl/releases/tag/v{newVersion}"); + } + } + } + + private void InstallUpdate(string downloadUrl) + { + var message = new SvcInstallUpdateMessage + { + DownloadUrl = downloadUrl, + ClientPath = new FileInfo(Application.ExecutablePath).Directory.FullName + }; + + var result = PipeUtils.SendMessage(message, 30000); + + if (result != null && !result.Result) + { + MessageForms.ErrorOk($"Error while updating: {result.ErrorMessage}"); + + return; + } + + PipeUtils.SendMessage(SvcMessageType.RestartAfterUpdate); + + if (MessageForms.QuestionYesNo("Update installed successfully. Do you want to restart the application?") == DialogResult.Yes) + { + Program.Restart(); + } + else + { + _downloadUrl = null; + _appContextProvider.GetAppContext().UpdateAvailable = true; + } + } +} diff --git a/ColorControl/Services/GameLauncher/GamePanel.cs b/ColorControl/Services/GameLauncher/GamePanel.cs index a153796..8f05b68 100644 --- a/ColorControl/Services/GameLauncher/GamePanel.cs +++ b/ColorControl/Services/GameLauncher/GamePanel.cs @@ -7,6 +7,7 @@ using ColorControl.Shared.Common; using ColorControl.Shared.Contracts; using ColorControl.Shared.Forms; using ColorControl.Shared.Native; +using ColorControl.Shared.Services; using nspector; using System; using System.Collections.Generic; @@ -27,18 +28,18 @@ namespace ColorControl.Services.GameLauncher private Config _config; private GameService _gameService; - private IntPtr _mainHandle; private NotifyIcon _trayIcon; + private readonly AppContextProvider _appContextProvider; private NvService _nvService; private AmdService _amdService; private LgService _lgService; private SamsungService _samsungService; - internal GamePanel(GameService gameService, NvService nvService, AmdService amdService, LgService lgService, SamsungService samsungService, NotifyIcon trayIcon, IntPtr handle) + internal GamePanel(GameService gameService, NvService nvService, AmdService amdService, LgService lgService, SamsungService samsungService, NotifyIcon trayIcon, AppContextProvider appContextProvider) { _gameService = gameService; _trayIcon = trayIcon; - _mainHandle = handle; + _appContextProvider = appContextProvider; _nvService = nvService; _amdService = amdService; _lgService = lgService; @@ -108,30 +109,7 @@ namespace ColorControl.Services.GameLauncher private async Task ApplySelectedGamePreset() { var preset = GetSelectedGamePreset(); - await ApplyGamePreset(preset); - } - - internal async Task ApplyGamePreset(GamePreset preset) - { - if (preset == null || _gameService == null) - { - return false; - } - try - { - var result = await _gameService.ApplyPreset(preset, Program.AppContext); - if (!result) - { - throw new Exception("Error while applying Game-preset. At least one setting could not be applied. Check the log for details."); - } - - return true; - } - catch (Exception e) - { - MessageForms.ErrorOk($"Error applying Game-preset ({e.TargetSite.Name}): {e.Message}"); - return false; - } + await _gameService.ApplyPresetUi(preset); } private void lvGamePresets_SelectedIndexChanged(object sender, EventArgs _) @@ -291,7 +269,7 @@ namespace ColorControl.Services.GameLauncher if (!string.IsNullOrEmpty(preset.shortcut)) { - WinApi.UnregisterHotKey(_mainHandle, preset.id); + WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id); } _gameService.GetPresets().Remove(preset); diff --git a/ColorControl/Services/GameLauncher/GameService.cs b/ColorControl/Services/GameLauncher/GameService.cs index 79490f9..9cbf2b5 100644 --- a/ColorControl/Services/GameLauncher/GameService.cs +++ b/ColorControl/Services/GameLauncher/GameService.cs @@ -41,6 +41,8 @@ namespace ColorControl.Services.GameLauncher _winApiAdminService = winApiAdminService; _winApiService = winApiService; _processEventDispatcher.RegisterAsyncEventHandler(ProcessEventDispatcher.Event_ProcessChanged, ProcessChanged); + + SetShortcuts(-203, _appContextProvider.GetAppContext().Config.GameQuickAccessShortcut); } private async Task ProcessChanged(object sender, ProcessChangedEventArgs e, CancellationToken token) @@ -145,7 +147,7 @@ namespace ColorControl.Services.GameLauncher var preset = GetPresetByIdOrName(idOrName); if (preset != null) { - return await ApplyPreset(preset, Program.AppContext); + return await ApplyPreset(preset); } else { @@ -154,11 +156,6 @@ namespace ColorControl.Services.GameLauncher } public override async Task ApplyPreset(GamePreset preset) - { - return await ApplyPreset(preset, Program.AppContext); - } - - public async Task ApplyPreset(GamePreset preset, GlobalContext _) { var result = await ExecutePreset(preset); diff --git a/ColorControl/Services/LG/LgPanel.cs b/ColorControl/Services/LG/LgPanel.cs index ee45323..4b39232 100644 --- a/ColorControl/Services/LG/LgPanel.cs +++ b/ColorControl/Services/LG/LgPanel.cs @@ -6,6 +6,7 @@ using ColorControl.Shared.Contracts; using ColorControl.Shared.EventDispatcher; using ColorControl.Shared.Forms; using ColorControl.Shared.Native; +using ColorControl.Shared.Services; using LgTv; using NLog; using NStandard; @@ -31,22 +32,21 @@ namespace ColorControl.Services.LG private NvService _nvService; private AmdService _amdService; private readonly PowerEventDispatcher _powerEventDispatcher; - private IntPtr _mainHandle; + private readonly AppContextProvider _appContextProvider; private NotifyIcon _trayIcon; private string _lgTabMessage; private bool _disableEvents = false; private LgGameBar _gameBarForm; - internal LgPanel(LgService lgService, NvService nvService, AmdService amdService, NotifyIcon trayIcon, IntPtr handle, PowerEventDispatcher powerEventDispatcher) + internal LgPanel(LgService lgService, NvService nvService, AmdService amdService, NotifyIcon trayIcon, PowerEventDispatcher powerEventDispatcher, AppContextProvider appContextProvider) { _lgService = lgService; _nvService = nvService; _amdService = amdService; _trayIcon = trayIcon; - _mainHandle = handle; _powerEventDispatcher = powerEventDispatcher; - + _appContextProvider = appContextProvider; _config = Shared.Common.GlobalContext.CurrentContext.Config; InitializeComponent(); @@ -253,7 +253,7 @@ namespace ColorControl.Services.LG { var preset = GetSelectedLgPreset(); - await ApplyLgPreset(preset); + await _lgService.ApplyPresetUi(preset); } private void btnSetShortcutLg_Click(object sender, EventArgs e) @@ -465,7 +465,7 @@ namespace ColorControl.Services.LG if (!string.IsNullOrEmpty(preset.shortcut)) { - WinApi.UnregisterHotKey(_mainHandle, preset.id); + WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id); } _lgService.GetPresets().Remove(preset); @@ -479,20 +479,6 @@ namespace ColorControl.Services.LG AddOrUpdateItemLg(_lgService.CreateNewPreset()); } - internal async Task ApplyLgPreset(LgPreset preset, bool reconnect = false) - { - if (preset == null) - { - return; - } - - var result = await _lgService.ApplyPreset(preset, reconnect); - if (!result) - { - MessageForms.WarningOk("Could not apply the preset (entirely). Check the log for details."); - } - } - private void btnLgRefreshApps_Click(object sender, EventArgs e) { _lgService.RefreshApps(true).ContinueWith((task) => BeginInvoke(() => FillLgApps(true))); @@ -526,7 +512,7 @@ namespace ColorControl.Services.LG private async void ApplySelectedLgPreset() { var preset = GetSelectedLgPreset(); - await ApplyLgPreset(preset); + await _lgService.ApplyPresetUi(preset); } private void btnLgAddButton_Click(object sender, EventArgs e) @@ -1267,7 +1253,7 @@ Do you want to continue?"; if (string.IsNullOrEmpty(shortcutGB)) { - WinApi.UnregisterHotKey(_mainHandle, SHORTCUTID_GAMEBAR); + WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, SHORTCUTID_GAMEBAR); } else { diff --git a/ColorControl/Services/LG/LgService.cs b/ColorControl/Services/LG/LgService.cs index 86897b0..ece2fba 100644 --- a/ColorControl/Services/LG/LgService.cs +++ b/ColorControl/Services/LG/LgService.cs @@ -425,8 +425,10 @@ namespace ColorControl.Services.LG return PowerOnDevicesTask(wakeDevices, state, checkUserSession); } - public void InstallEventHandlers() + public override void InstallEventHandlers() { + base.InstallEventHandlers(); + _powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_Suspend, PowerModeChanged); _powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Resume, PowerModeResume); _powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_Shutdown, PowerModeChanged); diff --git a/ColorControl/Services/NVIDIA/NvPanel.cs b/ColorControl/Services/NVIDIA/NvPanel.cs index eeaf9aa..94f371b 100644 --- a/ColorControl/Services/NVIDIA/NvPanel.cs +++ b/ColorControl/Services/NVIDIA/NvPanel.cs @@ -34,18 +34,16 @@ namespace ColorControl.Services.NVIDIA private Config _config; private NvService _nvService; - private IntPtr _mainHandle; private readonly AppContextProvider _appContextProvider; private string _lastDisplayRefreshRates = string.Empty; private NotifyIcon _trayIcon; private RpcClientService _rpcService; private readonly WinApiAdminService _winApiAdminService; - public NvPanel(NvService nvService, NotifyIcon trayIcon, IntPtr handle, AppContextProvider appContextProvider, RpcClientService rpcService, WinApiAdminService winApiAdminService) + public NvPanel(NvService nvService, NotifyIcon trayIcon, AppContextProvider appContextProvider, RpcClientService rpcService, WinApiAdminService winApiAdminService) { _nvService = nvService; _trayIcon = trayIcon; - _mainHandle = handle; _appContextProvider = appContextProvider; _config = appContextProvider.GetAppContext().Config; _rpcService = rpcService; @@ -245,7 +243,7 @@ namespace ColorControl.Services.NVIDIA if (!string.IsNullOrEmpty(preset.shortcut)) { - WinApi.UnregisterHotKey(_mainHandle, preset.id); + WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id); } _nvService.GetPresets().Remove(preset); @@ -1248,32 +1246,7 @@ namespace ColorControl.Services.NVIDIA private async Task ApplySelectedNvPreset() { var preset = GetSelectedNvPreset(); - await ApplyNvPreset(preset); - } - - public async Task ApplyNvPreset(NvPreset preset) - { - if (preset == null || _nvService == null) - { - return false; - } - try - { - var result = await _nvService.ApplyPreset(preset); - if (!result) - { - throw new Exception("Error while applying NVIDIA preset. At least one setting could not be applied. Check the log for details."); - } - - return true; - } - catch (Exception e) - { - Logger.Error(e); - - MessageForms.ErrorOk($"Error applying NVIDIA-preset ({e.TargetSite.Name}): {e.Message}"); - return false; - } + await _nvService.ApplyPresetUi(preset); } private NvPreset GetSelectedNvPreset(bool currentDisplay = false, bool driverSettings = false) @@ -1905,7 +1878,7 @@ namespace ColorControl.Services.NVIDIA } preset.IsStartupPreset = true; - await ApplyNvPreset(preset); + await _nvService.ApplyPresetUi(preset); } private void miNvDithering6bit_Click(object sender, EventArgs e) diff --git a/ColorControl/Services/NVIDIA/NvService.cs b/ColorControl/Services/NVIDIA/NvService.cs index 69b41d4..20c2057 100644 --- a/ColorControl/Services/NVIDIA/NvService.cs +++ b/ColorControl/Services/NVIDIA/NvService.cs @@ -169,7 +169,8 @@ namespace ColorControl.Services.NVIDIA private int _lastSetSDRBrightness = -1; private int _lastReadSDRBrightness = -1; - private Semaphore _semaphore = new Semaphore(1, 1); + private SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); + private SemaphoreSlim _refreshSemaphore = new SemaphoreSlim(1, 1); public const uint DRS_GSYNC_APPLICATION_MODE = 294973784; public const uint DRS_VSYNC_CONTROL = 11041231; @@ -217,20 +218,26 @@ namespace ColorControl.Services.NVIDIA private readonly RpcClientService _rpcClientService; private readonly PowerEventDispatcher _powerEventDispatcher; private readonly ServiceManager _serviceManager; + private readonly KeyboardShortcutDispatcher _keyboardShortcutDispatcher; private static NvService ServiceInstance; - public NvService(AppContextProvider appContextProvider, WinApiService winApiService, RpcClientService rpcClientService, PowerEventDispatcher powerEventDispatcher, ServiceManager serviceManager) : base(appContextProvider) + public static readonly int SHORTCUTID_NVQA = -200; + + public NvService(AppContextProvider appContextProvider, WinApiService winApiService, RpcClientService rpcClientService, PowerEventDispatcher powerEventDispatcher, ServiceManager serviceManager, KeyboardShortcutDispatcher keyboardShortcutDispatcher) : base(appContextProvider) { _winApiService = winApiService; _rpcClientService = rpcClientService; _powerEventDispatcher = powerEventDispatcher; _serviceManager = serviceManager; + _keyboardShortcutDispatcher = keyboardShortcutDispatcher; _rpcClientService.Name = nameof(NvService); NvPreset.NvService = this; AddJsonConverter(new ColorDataConverter()); LoadConfig(); LoadPresets(); + + SetShortcuts(SHORTCUTID_NVQA, _appContextProvider.GetAppContext().Config.NvQuickAccessShortcut); } public void InstallEventHandlers() @@ -1575,7 +1582,7 @@ namespace ColorControl.Services.NVIDIA protected List GetSettings() { - _semaphore.WaitOne(); + _semaphore.Wait(); try { if (!_settings.Any()) @@ -1620,7 +1627,7 @@ namespace ColorControl.Services.NVIDIA public void RefreshProfileSettings() { - _semaphore.WaitOne(); + _refreshSemaphore.Wait(); try { var firstTime = _settings?.Any() != true; @@ -1644,7 +1651,7 @@ namespace ColorControl.Services.NVIDIA } finally { - _semaphore.Release(); + _refreshSemaphore.Release(); } } diff --git a/ColorControl/Services/Samsung/ISamsungService.cs b/ColorControl/Services/Samsung/ISamsungService.cs index 7fdb502..b8cefb8 100644 --- a/ColorControl/Services/Samsung/ISamsungService.cs +++ b/ColorControl/Services/Samsung/ISamsungService.cs @@ -14,7 +14,6 @@ namespace ColorControl.Services.Samsung Task ApplyPreset(string idOrName); SamsungDevice GetPresetDevice(SamsungPreset preset); void GlobalSave(); - void InstallEventHandlers(); Task RefreshDevices(bool connect = true, bool afterStartUp = false); } } \ No newline at end of file diff --git a/ColorControl/Services/Samsung/SamsungPanel.cs b/ColorControl/Services/Samsung/SamsungPanel.cs index 4a102e3..d5169c8 100644 --- a/ColorControl/Services/Samsung/SamsungPanel.cs +++ b/ColorControl/Services/Samsung/SamsungPanel.cs @@ -6,6 +6,7 @@ using ColorControl.Shared.Contracts; using ColorControl.Shared.EventDispatcher; using ColorControl.Shared.Forms; using ColorControl.Shared.Native; +using ColorControl.Shared.Services; using NLog; using NStandard; using System; @@ -28,18 +29,18 @@ namespace ColorControl.Services.Samsung private SamsungService _samsungService; private NvService _nvService; private AmdService _amdService; - private IntPtr _mainHandle; private readonly PowerEventDispatcher _powerEventDispatcher; + private readonly AppContextProvider _appContextProvider; private string _tabMessage; private bool _disableEvents = false; - internal SamsungPanel(SamsungService samsungService, NvService nvService, AmdService amdService, IntPtr handle, PowerEventDispatcher powerEventDispatcher) + internal SamsungPanel(SamsungService samsungService, NvService nvService, AmdService amdService, PowerEventDispatcher powerEventDispatcher, AppContextProvider appContextProvider) { _samsungService = samsungService; _nvService = nvService; _amdService = amdService; - _mainHandle = handle; _powerEventDispatcher = powerEventDispatcher; + _appContextProvider = appContextProvider; _config = Shared.Common.GlobalContext.CurrentContext.Config; InitializeComponent(); @@ -72,9 +73,11 @@ namespace ColorControl.Services.Samsung public void Init() { var _ = Handle; - _powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Startup, PowerStateChanged); + //_powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Startup, PowerStateChanged); - _samsungService.InstallEventHandlers(); + //_samsungService.InstallEventHandlers(); + + var x = AfterSamsungServiceRefreshDevices(); } private async Task PowerStateChanged(object sender, PowerStateChangedEventArgs e, CancellationToken token) @@ -247,7 +250,7 @@ namespace ColorControl.Services.Samsung { var preset = GetSelectedPreset(); - await ApplyPreset(preset); + await _samsungService.ApplyPresetUi(preset); } private void btnSetShortcutLg_Click(object sender, EventArgs e) @@ -457,7 +460,7 @@ namespace ColorControl.Services.Samsung if (!string.IsNullOrEmpty(preset.shortcut)) { - WinApi.UnregisterHotKey(_mainHandle, preset.id); + WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id); } _samsungService.GetPresets().Remove(preset); @@ -471,20 +474,6 @@ namespace ColorControl.Services.Samsung AddOrUpdateItem(_samsungService.CreateNewPreset()); } - internal async Task ApplyPreset(SamsungPreset preset) - { - if (preset == null) - { - return; - } - - var result = await _samsungService.ApplyPreset(preset); - if (!result) - { - MessageForms.WarningOk("Could not apply the preset (entirely). Check the log for details."); - } - } - private void btnSamsungRefreshApps_Click(object sender, EventArgs e) { //_samsungService.RefreshApps(true).ContinueWith((task) => FormUtils.BeginInvokeCheck(this, () => FillLgApps(true))); @@ -518,7 +507,7 @@ namespace ColorControl.Services.Samsung private async void ApplySelectedPreset() { var preset = GetSelectedPreset(); - await ApplyPreset(preset); + await _samsungService.ApplyPresetUi(preset); } private void btnSamsungAddButton_Click(object sender, EventArgs e) diff --git a/ColorControl/Services/Samsung/SamsungService.cs b/ColorControl/Services/Samsung/SamsungService.cs index cb71848..d14cc1d 100644 --- a/ColorControl/Services/Samsung/SamsungService.cs +++ b/ColorControl/Services/Samsung/SamsungService.cs @@ -56,6 +56,8 @@ namespace ColorControl.Services.Samsung LoadConfig(); LoadPresets(); + + SetShortcuts(-204, Config.QuickAccessShortcut); } public static async Task ExecutePresetAsync(string presetName) @@ -82,8 +84,11 @@ namespace ColorControl.Services.Samsung } } - public void InstallEventHandlers() + public override void InstallEventHandlers() { + base.InstallEventHandlers(); + + _powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Startup, PowerStateChanged); _powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_MonitorOn, PowerModeChanged); _powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_MonitorOff, PowerModeChanged); _powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_Suspend, PowerModeChanged); @@ -92,6 +97,11 @@ namespace ColorControl.Services.Samsung _processEventDispatcher.RegisterAsyncEventHandler(ProcessEventDispatcher.Event_ProcessChanged, ProcessChanged); } + private async Task PowerStateChanged(object sender, PowerStateChangedEventArgs e, CancellationToken token) + { + await RefreshDevices(afterStartUp: true); + } + private void LoadConfig() { _configFilename = Path.Combine(_dataPath, "SamsungConfig.json"); @@ -117,7 +127,7 @@ namespace ColorControl.Services.Samsung await WakeAfterStartupOrResume(PowerOnOffState.Resume); - ExecutePresetsForEvent(PresetTriggerType.Resume); + await ExecutePresetsForEvent(PresetTriggerType.Resume); } private void PowerModeChanged(object sender, PowerStateChangedEventArgs e) @@ -134,7 +144,7 @@ namespace ColorControl.Services.Samsung { case PowerOnOffState.StandBy: { - ExecutePresetsForEvent(PresetTriggerType.Standby); + _ = ExecutePresetsForEvent(PresetTriggerType.Standby).ConfigureAwait(true); var devices = Devices.Where(d => d.Options.PowerOffOnStandby); PowerOffDevices(devices, PowerOnOffState.StandBy); @@ -142,7 +152,7 @@ namespace ColorControl.Services.Samsung } case PowerOnOffState.ShutDown: { - ExecutePresetsForEvent(PresetTriggerType.Shutdown); + _ = ExecutePresetsForEvent(PresetTriggerType.Shutdown).ConfigureAwait(true); var devices = Devices.Where(d => d.Options.PowerOffOnShutdown); @@ -165,7 +175,7 @@ namespace ColorControl.Services.Samsung } } - private void ExecutePresetsForEvent(PresetTriggerType triggerType) + private async Task ExecutePresetsForEvent(PresetTriggerType triggerType) { Logger.Debug($"Executing presets for event {triggerType}"); @@ -184,7 +194,7 @@ namespace ColorControl.Services.Samsung return; } - ExecuteEventPresets(_serviceManager, new[] { triggerType }).Wait(); + await ExecuteEventPresets(_serviceManager, new[] { triggerType }); } public async Task RefreshDevices(bool connect = true, bool afterStartUp = false) @@ -310,7 +320,12 @@ namespace ColorControl.Services.Samsung var device = GetPresetDevice(preset); - await device?.ExecutePresetAsync(preset, appContext, Config); + if (device == null) + { + return false; + } + + await device.ExecutePresetAsync(preset, appContext, Config); _lastAppliedPreset = preset; diff --git a/Shared/Common/GlobalContext.cs b/Shared/Common/GlobalContext.cs index f7fcb0c..ccbdf93 100644 --- a/Shared/Common/GlobalContext.cs +++ b/Shared/Common/GlobalContext.cs @@ -1,4 +1,5 @@ using ColorControl.Shared.Contracts; +using ColorControl.Shared.Services; using NLog; using NLog.Config; using System.ComponentModel; @@ -18,16 +19,34 @@ namespace ColorControl.Shared.Common public LoggingRule LoggingRule { get; private set; } public DateTime StartTime { get; private set; } = DateTime.Now; public string MutexId { get; private set; } + public nint MainHandle { get; set; } + public IServiceProvider ServiceProvider { get; private set; } - public GlobalContext(Config config, StartUpParams startUpParams, string dataPath, LoggingRule loggingRule, string mutexId = null) + public string ApplicationTitle { get; private set; } + public string ApplicationTitleAdmin { get; private set; } + public bool UpdateAvailable { get; set; } + + public GlobalContext(Config config, StartUpParams startUpParams, string dataPath, LoggingRule loggingRule, IServiceProvider serviceProvider, string mutexId = null) { Config = config; StartUpParams = startUpParams; DataPath = dataPath; LoggingRule = loggingRule; + ServiceProvider = serviceProvider; MutexId = mutexId; CurrentContext = this; + + ApplicationTitle = Application.ProductName + " " + Application.ProductVersion; + + if (WinApiService.IsAdministratorStatic()) + { + ApplicationTitleAdmin = ApplicationTitle + " (administrator)"; + } + else + { + ApplicationTitleAdmin = ApplicationTitle; + } } public void SetLogLevel(LogLevel logLevel) diff --git a/Shared/Common/ShortcutStruct.cs b/Shared/Common/ShortcutStruct.cs index 54cba16..c744322 100644 --- a/Shared/Common/ShortcutStruct.cs +++ b/Shared/Common/ShortcutStruct.cs @@ -2,67 +2,66 @@ using System.ComponentModel; using System.Runtime.InteropServices; -namespace ColorControl.Shared.Common +namespace ColorControl.Shared.Common; + +public class ShortcutStruct { - internal class ShortcutStruct + private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + + public int VirtualKeyCode { get; private set; } + public int Modifiers { get; private set; } + public int Id { get; } + public string Shortcut { get; private set; } + public bool HotKeyRegistered { get; set; } + + public ShortcutStruct(int modifiers, int virtualKeyCode, int id, string shortcut) { - private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + VirtualKeyCode = virtualKeyCode; + Modifiers = modifiers; + Id = id; + Shortcut = shortcut; + } - public int VirtualKeyCode { get; private set; } - public int Modifiers { get; private set; } - public int Id { get; } - public string Shortcut { get; private set; } - public bool HotKeyRegistered { get; set; } + internal void SetModifiers(int mods) + { + Modifiers = mods; + } - public ShortcutStruct(int modifiers, int virtualKeyCode, int id, string shortcut) + internal void SetKey(int key) + { + VirtualKeyCode = key; + } + + internal void SetShortcut(string shortcut) + { + Shortcut = shortcut; + } + + internal bool RegisterHotKey(nint handle) + { + var result = WinApi.RegisterHotKey(handle, Id, Modifiers, VirtualKeyCode); + if (!result) { - VirtualKeyCode = virtualKeyCode; - Modifiers = modifiers; - Id = id; - Shortcut = shortcut; + var errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message; + Logger.Error($"Could not register shortcut {Shortcut}: {errorMessage}"); + } + else + { + HotKeyRegistered = true; } - internal void SetModifiers(int mods) + return result; + } + + internal void UnregisterHotKey(nint handle) + { + if (!HotKeyRegistered) { - Modifiers = mods; + return; } - internal void SetKey(int key) - { - VirtualKeyCode = key; - } + WinApi.UnregisterHotKey(handle, Id); - internal void SetShortcut(string shortcut) - { - Shortcut = shortcut; - } - - internal bool RegisterHotKey(nint handle) - { - var result = WinApi.RegisterHotKey(handle, Id, Modifiers, VirtualKeyCode); - if (!result) - { - var errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message; - Logger.Error($"Could not register shortcut {Shortcut}: {errorMessage}"); - } - else - { - HotKeyRegistered = true; - } - - return result; - } - - internal void UnregisterHotKey(nint handle) - { - if (!HotKeyRegistered) - { - return; - } - - WinApi.UnregisterHotKey(handle, Id); - - HotKeyRegistered = false; - } + HotKeyRegistered = false; } } diff --git a/Shared/Contracts/Module.cs b/Shared/Contracts/Module.cs index 8264578..c6236e7 100644 --- a/Shared/Contracts/Module.cs +++ b/Shared/Contracts/Module.cs @@ -1,12 +1,42 @@ -using Newtonsoft.Json; +using ColorControl.Shared.Common; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using NLog; -namespace ColorControl.Shared.Contracts +namespace ColorControl.Shared.Contracts; + +public class Module { - public class Module + public bool IsActive { get; set; } + public string DisplayName { get; set; } + [JsonIgnore] + public Func InitAction { get; set; } +} + +public class ModuleEx where T : class +{ + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + + public bool IsActive { get; set; } + public string DisplayName { get; set; } + + public T CreateService(IServiceProvider serviceProvider) { - public bool IsActive { get; set; } - public string DisplayName { get; set; } - [JsonIgnore] - public Func InitAction { get; set; } + try + { + Logger.Debug($"Initializing {typeof(T).Name}..."); + + var service = serviceProvider.GetRequiredService(); + + Logger.Debug($"Initializing {typeof(T).Name}...Done"); + + return service; + } + catch (Exception ex) + { + Logger.Debug($"Error initializing {typeof(T).Name}. No device(s) or drivers are available: {ex.ToLogString()}"); + return null; + } } } + diff --git a/Shared/EventDispatcher/KeyboardShortcutDispatcher.cs b/Shared/EventDispatcher/KeyboardShortcutDispatcher.cs new file mode 100644 index 0000000..298c591 --- /dev/null +++ b/Shared/EventDispatcher/KeyboardShortcutDispatcher.cs @@ -0,0 +1,370 @@ +using ColorControl.Shared.Common; +using ColorControl.Shared.Forms; +using Linearstar.Windows.RawInput; +using Linearstar.Windows.RawInput.Native; + +namespace ColorControl.Shared.EventDispatcher; + +public class KeyboardShortcutEventArgs : EventArgs +{ + public int HotKeyId { get; set; } +} + +public class KeyboardShortcutDispatcher : EventDispatcher +{ + [Flags] + public enum ModKeys : int + { + None = 0, + Alt = 1, + Control = 2, + Shift = 4, + Win = 8 + } + + public const string Event_HotKey = "HotKey"; + + public nint MainHandle { get; set; } + public bool UseRawInput { get; private set; } + + private bool WinKeyDown = false; + + private static readonly List KeysWithoutModifiers = new List { Keys.F13, Keys.F14, Keys.F15, Keys.F16, Keys.F17, Keys.F18, Keys.F19, Keys.F20, Keys.F21, Keys.F22, Keys.F23, Keys.F24 }; + private static readonly List Modifiers = new List { Keys.ControlKey, Keys.Menu, Keys.ShiftKey, Keys.LWin }; + + private readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + + private readonly HashSet _downModifierKeys = new HashSet(); + private readonly HashSet _downKeys = new HashSet(); + + private readonly object _modifiersLock = new object(); + private readonly WindowMessageDispatcher _windowMessageDispatcher; + private readonly Dictionary _registeredShortcuts = new Dictionary(); + + public KeyboardShortcutDispatcher(WindowMessageDispatcher windowMessageDispatcher) + { + _windowMessageDispatcher = windowMessageDispatcher; + + _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageHotKey, HotKeyPressed); + _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageInput, HandleInputMessage); + + MainHandle = _windowMessageDispatcher.MessageForm.Handle; + } + + private async void HotKeyPressed(object sender, WindowMessageEventArgs e) + { + await DispatchEventAsync(Event_HotKey, new KeyboardShortcutEventArgs { HotKeyId = (int)e.Message.WParam }); + } + + private async void HandleInputMessage(object sender, WindowMessageEventArgs e) + { + // Create an RawInputData from the handle stored in lParam. + var data = RawInputData.FromHandle(e.Message.LParam); + + if (data is RawInputKeyboardData keyboard) + { + var shortcut = GetRawKeyboardInputShortcut(keyboard); + + if (shortcut != null) + { + await DispatchEventAsync(Event_HotKey, new KeyboardShortcutEventArgs { HotKeyId = shortcut.Id }); + } + } + } + + public void SetUseRawInput(bool useRawInput) + { + if (UseRawInput == useRawInput) + { + return; + } + + UseRawInput = useRawInput; + + if (useRawInput) + { + UnregisterHotKeys(); + + RawInputDevice.RegisterDevice(HidUsageAndPage.Keyboard, RawInputDeviceFlags.InputSink, MainHandle); + } + else + { + RawInputDevice.UnregisterDevice(HidUsageAndPage.Keyboard); + + RegisterHotKeys(); + } + } + + private void UnregisterHotKeys() + { + foreach (var shortcut in _registeredShortcuts.Values.Where(s => s.HotKeyRegistered).ToList()) + { + shortcut.UnregisterHotKey(MainHandle); + } + } + + private void RegisterHotKeys() + { + foreach (var shortcut in _registeredShortcuts.Values.Where(s => !s.HotKeyRegistered).ToList()) + { + shortcut.RegisterHotKey(MainHandle); + } + } + + public ShortcutStruct GetRawKeyboardInputShortcut(RawInputKeyboardData data) + { + var keyboard = data.Keyboard; + + //Debug.WriteLine($"Key: {keyboard}"); + + var add = !keyboard.Flags.HasFlag(RawKeyboardFlags.Up); + + var keys = (Keys)keyboard.VirutalKey; + + var isModifier = Modifiers.Contains(keys); + var modKey = KeysToModKeys(keys); + var changed = false; + + lock (_modifiersLock) + { + if (add) + { + if (isModifier) + { + changed = _downModifierKeys.Add(modKey); + } + else + { + changed = _downKeys.Add((Keys)keyboard.VirutalKey); + } + } + else + { + if (isModifier) + { + changed = _downModifierKeys.Remove(modKey); + } + else + { + changed = _downKeys.Remove((Keys)keyboard.VirutalKey); + } + } + } + + if (!changed || _downKeys.Count != 1 || !(_downModifierKeys.Any() || KeysWithoutModifiers.Contains(_downKeys.First()))) + { + return null; + } + + var sum = _downModifierKeys.Sum(k => (int)k) * 1000; + sum += _downKeys.Sum(k => (int)k); + + var shortcut = _registeredShortcuts.Values.FirstOrDefault(s => (s.Modifiers * 1000 + s.VirtualKeyCode) == sum); + + if (shortcut == null) + { + return null; + } + + return shortcut; + } + + public bool RegisterShortcut(int id, string shortcut) + { + var clear = string.IsNullOrWhiteSpace(shortcut); + + var shortcutStruct = GetShortcutById(id); + + if (shortcutStruct == null) + { + if (clear) + { + return true; + } + + var (mods, key) = ParseShortcut(shortcut); + + shortcutStruct = new ShortcutStruct(mods, key, id, shortcut); + + _registeredShortcuts[id] = shortcutStruct; + } + else if (clear) + { + shortcutStruct.UnregisterHotKey(id); + + _registeredShortcuts.Remove(id); + + return true; + } + else + { + var (mods, key) = ParseShortcut(shortcut); + + if (shortcutStruct.Modifiers == mods && shortcutStruct.VirtualKeyCode == key) + { + return true; + } + + shortcutStruct.SetModifiers(mods); + shortcutStruct.SetKey(key); + shortcutStruct.SetShortcut(shortcut); + shortcutStruct.UnregisterHotKey(MainHandle); + } + + //if (UseRawInput) + //{ + // return true; + //} + + return shortcutStruct.RegisterHotKey(MainHandle); + } + + private ShortcutStruct GetShortcutById(int id) + { + if (_registeredShortcuts.TryGetValue(id, out var shortcut)) + { + return shortcut; + } + + return null; + } + + public static (int mods, int key) ParseShortcut(string shortcut) + { + int mods = 0; + var key = 0; + + shortcut = shortcut.Replace(",", ""); + shortcut = shortcut.Replace("+", ""); + shortcut = shortcut.Replace(" ", " "); + var parts = shortcut.Split(' '); + + if (parts.Length > 0) + { + for (int i = 0; i + 1 < parts.Length; i++) + { + switch (parts[i]) + { + case "Alt": + mods += (int)ModKeys.Alt; + break; + case "Control": + mods += (int)ModKeys.Control; + break; + case "Shift": + mods += (int)ModKeys.Shift; + break; + case "Win": + mods += (int)ModKeys.Win; + break; + } + } + + var keyName = parts[parts.Length - 1]; + + key = (int)Enum.Parse(typeof(Keys), keyName); + } + + return (mods, key); + } + + public static Keys ShortcutToKeys(string shortcut) + { + var (mods, key) = ParseShortcut(shortcut); + + var keys = Keys.None; + + if (((uint)mods & (uint)ModKeys.Alt) > 0) + { + keys |= Keys.Alt; + } + if (((uint)mods & (uint)ModKeys.Control) > 0) + { + keys |= Keys.Control; + } + if (((uint)mods & (uint)ModKeys.Shift) > 0) + { + keys |= Keys.Shift; + } + if (((uint)mods & (uint)ModKeys.Win) > 0) + { + keys |= Keys.Control; + } + + keys |= (Keys)key; + + return keys; + } + + public static ModKeys KeysToModKeys(Keys key) + { + return key switch + { + Keys.ControlKey => ModKeys.Control, + Keys.Menu => ModKeys.Alt, + Keys.ShiftKey => ModKeys.Shift, + Keys.LWin => ModKeys.Win, + _ => ModKeys.None, + }; + } + + public string FormatKeyboardShortcut(KeyEventArgs keyEvent) + { + var pressedModifiers = keyEvent.Modifiers; + + //Debug.WriteLine("KD: " + e.Modifiers + ", " + e.KeyCode); + + var shortcutString = pressedModifiers > 0 ? pressedModifiers.ToString() : ""; + if (keyEvent.KeyCode == Keys.LWin || WinKeyDown) + { + WinKeyDown = true; + if (!string.IsNullOrEmpty(shortcutString)) + { + shortcutString += ", "; + } + shortcutString += "Win"; + } + + var empty = string.IsNullOrEmpty(shortcutString); + if ((!empty || KeysWithoutModifiers.Contains(keyEvent.KeyCode)) && keyEvent.KeyCode != Keys.ControlKey && keyEvent.KeyCode != Keys.ShiftKey && keyEvent.KeyCode != Keys.Menu && keyEvent.KeyCode != Keys.LWin) + { + if (!empty) + { + shortcutString += " + "; + } + shortcutString += keyEvent.KeyCode.ToString(); + } + + if (string.IsNullOrEmpty(shortcutString)) + { + keyEvent.SuppressKeyPress = true; + } + + return shortcutString; + } + + public static bool ValidateShortcut(string shortcut) + { + var valid = string.IsNullOrWhiteSpace(shortcut) || shortcut.Contains("+") || ShortcutIsAllowedWithoutModifier(shortcut); + + if (!valid) + { + MessageForms.WarningOk("Invalid shortcut. The shortcut should have modifiers and a normal key or be F13-F24."); + } + + return valid; + } + + public static bool ShortcutIsAllowedWithoutModifier(string shortcut) + { + return Enum.TryParse(shortcut, out var key) && KeysWithoutModifiers.Contains(key); + } + + public void HandleKeyboardShortcutUp(KeyEventArgs keyEvent) + { + if (keyEvent.KeyCode == Keys.LWin) + { + WinKeyDown = false; + } + } +} diff --git a/Shared/EventDispatcher/WindowMessageDispatcher.cs b/Shared/EventDispatcher/WindowMessageDispatcher.cs new file mode 100644 index 0000000..ab52712 --- /dev/null +++ b/Shared/EventDispatcher/WindowMessageDispatcher.cs @@ -0,0 +1,86 @@ +using ColorControl.Shared.Services; +using NWin32; + +namespace ColorControl.Shared.EventDispatcher; + +public class WindowMessageEventArgs : EventArgs +{ + public Message Message { get; private set; } + + public WindowMessageEventArgs(Message message) + { + Message = message; + } +} + +public class WindowMessageDispatcher : EventDispatcher +{ + public const string Event_WindowMessage = "WindowMessage"; + public const string Event_WindowMessageHotKey = "WindowMessageHotKey"; + public const string Event_WindowMessageInput = "WindowMessageInput"; + public const string Event_WindowMessageQueryEndSession = "WindowMessageQueryEndSession"; + public const string Event_WindowMessageClose = "WindowMessageClose"; + public const string Event_WindowMessagePowerBroadcast = "WindowMessagePowerBroadcast"; + public const string Event_WindowMessageShowWindow = "WindowMessageShowWindow"; + + private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + private readonly AppContextProvider _appContextProvider; + + public DummyForm MessageForm { get; set; } + + private static Dictionary Messages = new() { + { NativeConstants.WM_HOTKEY, Event_WindowMessageHotKey }, + { NativeConstants.WM_INPUT, Event_WindowMessageInput }, + { NativeConstants.WM_QUERYENDSESSION, Event_WindowMessageQueryEndSession }, + { NativeConstants.WM_CLOSE, Event_WindowMessageClose }, + { NativeConstants.WM_POWERBROADCAST, Event_WindowMessagePowerBroadcast }, + { NativeConstants.WM_SHOWWINDOW, Event_WindowMessageShowWindow } + }; + + public WindowMessageDispatcher(AppContextProvider appContextProvider) + { + MessageForm = new DummyForm(); + MessageForm.OnMessage += MessageForm_OnMessage; + _appContextProvider = appContextProvider; + + _appContextProvider.GetAppContext().MainHandle = MessageForm.Handle; + } + + private void MessageForm_OnMessage(object sender, Message e) + { + if (Messages.TryGetValue(e.Msg, out var eventName)) + { + DispatchEvent(eventName, new WindowMessageEventArgs(e)); + } + } + + public class DummyForm : Form + { + public event EventHandler OnMessage; + + public DummyForm() + { + FormBorderStyle = FormBorderStyle.None; + ShowInTaskbar = false; + Load += DummyForm_Load; + Shown += DummyForm_Shown; + } + + private void DummyForm_Shown(object sender, EventArgs e) + { + Hide(); + } + + protected void DummyForm_Load(object sender, EventArgs e) + { + Size = new Size(0, 0); + } + + protected override void WndProc(ref Message m) + { + OnMessage?.Invoke(this, m); + + base.WndProc(ref m); + } + } +} diff --git a/Shared/Forms/DarkModeUtils.cs b/Shared/Forms/DarkModeUtils.cs index a2af32d..ec37d73 100644 --- a/Shared/Forms/DarkModeUtils.cs +++ b/Shared/Forms/DarkModeUtils.cs @@ -81,6 +81,35 @@ namespace ColorControl.Shared.Forms } } + public static void SetDarkMode(bool darkMode) + { + UseDarkMode = darkMode; + + // Takes care of system context menu + WinApi.SetPreferredAppMode(darkMode ? 1 : 0); + + var backColor = darkMode ? FormUtils.DarkModeBackColor : SystemColors.Control; + var foreColor = darkMode ? FormUtils.DarkModeForeColor : SystemColors.ControlText; + + FormUtils.CurrentBackColor = backColor; + FormUtils.CurrentForeColor = foreColor; + + if (darkMode) + { + _defaultRenderer ??= ToolStripManager.Renderer; + + ToolStripManager.Renderer = new DarkModeToolStripRenderer(); + } + else if (_defaultRenderer != null) + { + ToolStripManager.Renderer = _defaultRenderer; + } + + FormUtils.MenuItemForeColor = FormUtils.CurrentForeColor; + + WinApi.FlushMenuThemes(); + } + public static void UpdateTheme(this Form form, bool? useDarkMode = null, bool onlyIfDark = false) { var toDark = useDarkMode ?? UseDarkMode; @@ -90,7 +119,7 @@ namespace ColorControl.Shared.Forms return; } - UseDarkMode = toDark; + SetDarkMode(toDark); form.SuspendLayout(); @@ -102,36 +131,12 @@ namespace ColorControl.Shared.Forms //var backroundColorValue = settings.GetColorValue(UIColorType.Background); //var isDarkMode = FormUtils.IsColorLight(foregroundColorValue); - // Takes care of system context menu - WinApi.SetPreferredAppMode(toDark ? 1 : 0); - - var backColor = toDark ? FormUtils.DarkModeBackColor : SystemColors.Control; - var foreColor = toDark ? FormUtils.DarkModeForeColor : SystemColors.ControlText; - - FormUtils.CurrentBackColor = backColor; - FormUtils.CurrentForeColor = foreColor; - - SetControlTheme(form, backColor, foreColor); + SetControlTheme(form, FormUtils.CurrentBackColor, FormUtils.CurrentForeColor); var value = toDark ? 1 : 0; // Takes care of title bar WinApi.DwmSetWindowAttribute(form.Handle, DWMWA_USE_IMMERSIVE_DARK_MODE, ref value, 4); - - if (toDark) - { - _defaultRenderer ??= ToolStripManager.Renderer; - - ToolStripManager.Renderer = new DarkModeToolStripRenderer(); - } - else if (_defaultRenderer != null) - { - ToolStripManager.Renderer = _defaultRenderer; - } - - FormUtils.MenuItemForeColor = foreColor; - - WinApi.FlushMenuThemes(); } finally { diff --git a/Shared/Forms/MessageForms.cs b/Shared/Forms/MessageForms.cs index 489d8d7..32d9a94 100644 --- a/Shared/Forms/MessageForms.cs +++ b/Shared/Forms/MessageForms.cs @@ -113,32 +113,33 @@ namespace ColorControl.Shared.Forms public class MessageForms { public static Form MainForm; + public static string Title = null; public static void WarningOk(string text) { - MessageBox.Show(text, MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); + MessageBox.Show(text, Title ?? "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } public static void ErrorOk(string text) { - MessageBox.Show(text, MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(text, Title ?? "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } public static void InfoOk(string text, string title = null, string url = null) { if (url != null) { - MessageBox.Show(text, title ?? MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, 0, url); + MessageBox.Show(text, title ?? Title ?? "Info", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, 0, url); } else { - MessageBox.Show(text, title ?? MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show(text, title ?? Title ?? "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); } } public static DialogResult QuestionYesNo(string text) { - return MessageBox.Show(text, MainForm?.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information); + return MessageBox.Show(text, Title ?? "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Information); } public static List ShowDialog(string caption, IEnumerable labels, Func, string> validateFunc = null)