diff --git a/AMRPC WatchDog Desktop.sln b/AMRPC WatchDog Desktop.sln index 885c3b0..05698fb 100644 --- a/AMRPC WatchDog Desktop.sln +++ b/AMRPC WatchDog Desktop.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.6.33723.286 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AMRPC WatchDog Desktop", "AMRPC WatchDog Desktop\AMRPC WatchDog Desktop.csproj", "{DBA6E76D-E48D-41E4-B35E-B3A1E5A59CDD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WatchDog", "WatchDog\WatchDog.csproj", "{A64E25E5-88AE-43BE-9F6D-C5A318ADA64F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,10 +11,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DBA6E76D-E48D-41E4-B35E-B3A1E5A59CDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DBA6E76D-E48D-41E4-B35E-B3A1E5A59CDD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DBA6E76D-E48D-41E4-B35E-B3A1E5A59CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DBA6E76D-E48D-41E4-B35E-B3A1E5A59CDD}.Release|Any CPU.Build.0 = Release|Any CPU + {A64E25E5-88AE-43BE-9F6D-C5A318ADA64F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A64E25E5-88AE-43BE-9F6D-C5A318ADA64F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A64E25E5-88AE-43BE-9F6D-C5A318ADA64F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A64E25E5-88AE-43BE-9F6D-C5A318ADA64F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AMRPC WatchDog Desktop/Window.Designer.cs b/AMRPC WatchDog Desktop/Window.Designer.cs deleted file mode 100644 index 0700e45..0000000 --- a/AMRPC WatchDog Desktop/Window.Designer.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System.Drawing; -using System.Windows.Forms; - -namespace AMRPC_WatchDog_Desktop -{ - partial class Window - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Window)); - this._notifyIcon = new System.Windows.Forms.NotifyIcon(this.components); - this._runningStatusLabel = new System.Windows.Forms.Label(); - this._autoStartCheckbox = new System.Windows.Forms.CheckBox(); - this._startMinimizedCheckbox = new System.Windows.Forms.CheckBox(); - this.SuspendLayout(); - // - // _notifyIcon - // - this._notifyIcon.BalloonTipText = "Running in background"; - this._notifyIcon.BalloonTipTitle = "AMRPC WatchDog"; - this._notifyIcon.Icon = ((System.Drawing.Icon) (resources.GetObject("_notifyIcon.Icon"))); - this._notifyIcon.Click += new System.EventHandler(this.Restore); - // - // _runningStatusLabel - // - this._runningStatusLabel.Dock = System.Windows.Forms.DockStyle.Top; - this._runningStatusLabel.Location = new System.Drawing.Point(0, 0); - this._runningStatusLabel.Name = "_runningStatusLabel"; - this._runningStatusLabel.Size = new System.Drawing.Size(382, 96); - this._runningStatusLabel.TabIndex = 0; - this._runningStatusLabel.Text = "Service is running\r\nYou might want to minimize this window to tray."; - this._runningStatusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // _autoStartCheckbox - // - this._autoStartCheckbox.Location = new System.Drawing.Point(110, 129); - this._autoStartCheckbox.Name = "_autoStartCheckbox"; - this._autoStartCheckbox.Size = new System.Drawing.Size(180, 24); - this._autoStartCheckbox.TabIndex = 1; - this._autoStartCheckbox.Text = "Autostart with system"; - this._autoStartCheckbox.UseVisualStyleBackColor = true; - this._autoStartCheckbox.CheckedChanged += new System.EventHandler(this._autoStartCheckbox_CheckedChanged); - // - // _startMinimizedCheckbox - // - this._startMinimizedCheckbox.Location = new System.Drawing.Point(110, 99); - this._startMinimizedCheckbox.Name = "_startMinimizedCheckbox"; - this._startMinimizedCheckbox.Size = new System.Drawing.Size(163, 24); - this._startMinimizedCheckbox.TabIndex = 2; - this._startMinimizedCheckbox.Text = "Start minimized"; - this._startMinimizedCheckbox.UseVisualStyleBackColor = true; - this._startMinimizedCheckbox.CheckedChanged += new System.EventHandler(this._startMinimizedCheckbox_CheckedChanged); - // - // Window - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(382, 153); - this.Controls.Add(this._startMinimizedCheckbox); - this.Controls.Add(this._autoStartCheckbox); - this.Controls.Add(this._runningStatusLabel); - this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MaximumSize = new System.Drawing.Size(400, 200); - this.MinimumSize = new System.Drawing.Size(400, 200); - this.Name = "Window"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "AMRPC WatchDog"; - this.Load += new System.EventHandler(this.Window_Load); - this.Resize += new System.EventHandler((_, __) => - { - if (WindowState == FormWindowState.Minimized) - { - ToTray(); - } - }); - this.ResumeLayout(false); - } - - private System.Windows.Forms.CheckBox _startMinimizedCheckbox; - - private System.Windows.Forms.CheckBox _autoStartCheckbox; - - private System.Windows.Forms.Label _runningStatusLabel; - - #endregion - } -} - diff --git a/AMRPC WatchDog Desktop/Window.cs b/AMRPC WatchDog Desktop/Window.cs deleted file mode 100644 index ba11445..0000000 --- a/AMRPC WatchDog Desktop/Window.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System; -using System.Windows.Forms; -using Microsoft.Win32; - -namespace AMRPC_WatchDog_Desktop -{ - public partial class Window : Form - { - private const string StartupValue = "AMRPC WatchDog"; - private const string StartMinimizedValue = "StartMinimized"; - private readonly RegistryKey _startupRegKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); - private static readonly RegistryKey AppDataRegKey = Application.UserAppDataRegistry; - private static readonly object StartsMinimized = AppDataRegKey.GetValue(StartMinimizedValue); - private readonly bool _startsMinimizedBool = (string) StartsMinimized == "True"; - - private NotifyIcon _notifyIcon; - - public Window(string appVersion) - { - InitializeComponent(); - SetupNotifyIcon(appVersion); - SetupAutostartCheckbox(); - SetupStartMinimized(); - } - - private void SetupNotifyIcon(string appVersion) - { - _notifyIcon.Text = $"AMRPC WatchDog {appVersion}"; - _notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] - { - new MenuItem("Quit", (_, __) => Application.Exit()) - }); - } - - private void SetupAutostartCheckbox() - { - var value = _startupRegKey.GetValue(StartupValue); - _autoStartCheckbox.Checked = value != null; - } - - private void SetupStartMinimized() - { - if (StartsMinimized == null) - { - AppDataRegKey.SetValue(StartMinimizedValue, false); - } - else - { - _startMinimizedCheckbox.Checked = _startsMinimizedBool; - } - } - - private void _autoStartCheckbox_CheckedChanged(object sender, EventArgs e) - { - if (((CheckBox) sender).Checked) - { - _startupRegKey.SetValue(StartupValue, Application.ExecutablePath); - } - else - { - _startupRegKey.DeleteValue(StartupValue); - } - } - - private void _startMinimizedCheckbox_CheckedChanged(object sender, EventArgs e) - { - AppDataRegKey.SetValue(StartMinimizedValue, ((CheckBox) sender).Checked); - } - - private void Restore(object sender, EventArgs e) - { - WindowState = FormWindowState.Normal; - ShowInTaskbar = true; - _notifyIcon.Visible = false; - Show(); - } - - private void Window_Load(object sender, EventArgs e) - { - if (_startsMinimizedBool) - { - ToTray(); - } - } - - private void ToTray() - { - WindowState = FormWindowState.Minimized; - _notifyIcon.Visible = true; - ShowInTaskbar = false; - Hide(); - } - } -} diff --git a/AMRPC WatchDog Desktop/Window.resx b/AMRPC WatchDog Desktop/Window.resx deleted file mode 100644 index 515e236..0000000 --- a/AMRPC WatchDog Desktop/Window.resx +++ /dev/null @@ -1,720 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - - - AAABAAEAAAAAAAEAIACmRAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFv - ck5UAc+id5oAAERgSURBVHja7X37t2VVdaaMjP4b+g9I/9DSnTbp6HB0tMVXDxWwEmMRKWgoKmgh8jJA - FVglr5KCUkIVEEFAhEIRK6hRO/hIJ5qhxsfwgdiGwoCiRGh8I60p03ZVnT7fPufb59tzz7X22uece+5r - rjFmzbX3OffeU/fu75vfnOv1rGdFixYtWrRo0aJFixYtWrRo0aJFixYtWrRo0aJFixYtWrRo0aJFixYt - WrRo0aJFixYtWrRo0aJFixYtWrRo0aJFi7Yq23333fdbfSx+Y9Girbk2OKbMR4sWbc0A/ratt/2bl1z+ - 4TtfcOX9n1V74bue+AC9Gt6Lr4nfX7Roq1z2w5944fue8/zdfzf4j2//8hHYsfu+dfTYdz42+J3bfzj4 - z/ufHjz3vb8++rwPHK08DCSgXx8tWrRV2BjFEdFJAAS/Av+//tWgNly/9OpPv0a/Plq0aKu4vWj3J560 - kd8D/3P/anAE93dfcMG/jZpAtGhrTP4D/LnoDwII+R8t2hqS/8dd99VtIACb91vwkwDw/pD/0aKF/A/5 - H23aNjhmFEFGD1FMLlkB8n9IAFr196L/f7nzmQdC/keby8OnZKCvxcMV8j/aGgc/HqAH7rnm1u98ZM9B - 2Lc//PZPfuWOva+0D2i0pSUBTPIplf/wUAwh/6PNBH7kkBXw79s5+MGH31LZjz9y2eD7H909ABH81WUX - PidIYPnkfyr6U/4H+KPN9OAB5AD/43efU9kP77lg8JMPXdIgAqqBSAdC/kdbQ+BHdH/owGVHCP6n3r+1 - MhAAjSTw4F17Lw0SWLrWq/o/tJD/0WaOOp9+x2WvZ/Qn+GE/OzAigV98bEdFALBnPnn1AHWCIIGll/+c - /BPyP9qSEkBV+HMIAPb0B8+tCIAWJLB0f4fG3P+Q/9EWFXkA5kf3X9xJAL/6xJWV//n/uLIiAaYD8QCG - /I+2BgjgkbvOrUCPAiBTABjBr0YSQPoQJLB08r9r8k+AP9pcCcCrA/zqYxdWoP/X/3l1ZSQBEACMQ4SR - DoT8j7YOCIBGAsD8gcmDGBFpGhII+R9tRRIA6wC//vhbKtAf+czu2qgGQAKYRxAqYLHyP37X0RaiAFgH - sARgSYAThUKWhvyPtooewC4FwDTgN39zRQX6weeurU1JIFKB6VrI/2grngCQBgDkNQF84boWAcTQYMj/ - aGuYAFgHqAnAkAAUwhOf3Dvg5hTxkIb8j7aGCIB1AEsAJIFQAf1//313/gn5H23hBMCRgEYdgAQgKgCv - gSCgAqIWEPI/2hoggJ/e8bpJDSBDAFYFxAzBkP/RVkkk6qMAUAdoFAKFAAafuaIiCI4IRLTy2uTYrz7y - Hz42/oy2JASASTxdNQAOBZYQACymCOd/5zjFJ+R/tGWXoYgq2AykNAUoIQC8J4qBIf+jLVBWIjLg4aCV - niEP+X/wPdsHRfMAxgQAkKcIAIb3IA2I6cF5+W+3/op9/6P1kpIE+jRfD3mu4Od+ANMSQKUKJAXA+7CF - WDy4If+jzTGC6MEdbAAZAI3KO2Q3gE1DFKZ94fqLPg//pRu3Pw7gwxD1aZ78zxKAmRJcKYC/3dFIA2Ij - 0Q75X7Dzb8j/aI0/PsAEwAPsAPQ/fuiao2rI6eGxzRf6ADo8rnmPkj8FflsATNYAjPwHAeA9TAOiDhDy - P9rMsnHy8CDKW9AT1Apyzyj1LfBz0t8qAG9BkBJApQ6GJMA9BKIOMJv8j1N/I+pXzF/t3PuRPQcZ4XOA - x17+1mv/yXsvaQA/Ff0V/FwL0EUAAP/RT11cq4CYD5CR/5nqP1f+hfxf5xEDUp8RPwd8gjxlAD32+kO/ - FPie/O9DAPia5hLhkP+l8r8igZD/6/NhIfgR9ftG/BLjpp/odxEAo3+OALQAiPeAAKoUYGjYRny9P8R9 - 5T9n/oX8X5eRYgQSVPBnjfo82oueoKcSINh1F+BU9C8lACoAjwDW64Mck3+i9YoUpeDPkYAFPz0ATU/g - W9Br5LfRv4sAAH5LAOt7SnBU/6MtEPwAHL2CX01JgAYysMBPRf9WDSCR/wcBRPU/Wg+JiDHz0py/K/KT - CBT4VgGwD/Bb4MPwNQAxNgLpQwCqAPC1QQD9qv/wIIyQ/+sI/JgxN6vsJ+j1ME/0ec8qAaoBBbyN/F3y - vyaAcf7vFQHXLwGMpDukPOW/EkDI/5D9v8UH5Jt/edORrshfAn4lASUDnu/HqK4EoH2+xuit0b80/z/y - 1+c1FMB6nQ4c8j9a0QPSZ5y/K/fX6I/z+wh+JQH2lQyUFAhcRn97KEhuBEAVAPcRXO8E0Hfuf8j/yPsH - 0xb+LPjhYZYESABWGdjIb6O/Wir/DwXgy/+o/kdrRAbkxvOY6KPA98CvJGCNkd/eIwFgPr9HALkRABLA - elYAIf+jzU3650jARn8LfvYBRE0JUmRgo39KATTkfyiAucv/IIB1Jv1zq/imUQAEO9bkE/wpFWANoO9S - ABb8oQBC/kebQfrnon+uCEjQY/edrhRAlUAXAVjwV8t8P3OFrwCEAEIBTEg+5H+0FvjxcNhlvaXRP5UC - lOb/CnxLAhr1vQJgYxIQI39CARD861UBhPyPlnwo7FRfbubRFf1L8n8vBfBIIKcAEPUZ/a0CaNUBnPw/ - FEBM/olmgM8Hv3TIb5oUgGlATv5bJUAPoGvOr96Cn2lATgGs5xpAyP9130br+blrL+8R/N6efQBuFxFg - Ky+rAJ764OWuAkilAh7oPZ+L/gR9Kv9f7wog5P8qYemS/fP7WEq26Y4+uoefZyQCjfQEfmo6MEigpAZQ - QgRWAaQIwBsBiBrAbPI/DlNdIDsv5QPALbrx0CPfxxx/Bb71pdEffa7o06jPfskoAIEPcNOnSIBn/Cn4 - dSTAk/9WAaw3Agj5v0rAv+OPTzrhyg0bbn/rS5/zObU/O/viv4dx//wSQ0WfHgbAf+fv7jj8/Y/eUIEc - wLTRn6DvAj+BTxI4sO2Mwe4Nx1d299mvq+4B6FYF5AqBWgBUIrBmo79NAbry//VIACH/V/gfBuexn3bC - q4++7PeeP0jZhhe+dID3vOf8rQMA+Sef+Yus9wzgJ/DV0yz4c0SArbvhAXrvc2LPf0sCufy/JPp7KYAq - gHr771AAM8l/GIgh5P+C/jAAjQWRNYAKhv6+zaclwc57T3xyb+1hADM8QM9rWpcCYK7PyA/w4x4ivwd+ - 2C1bt7gqIFcDsESQi/5YBdgnBQDw1yMBEMTYx8/KfxJATv7Hyr8ljv6Q+F60T5HA5lPfUPkPXXnRAGC3 - RhKAEfzWFPw5BZCS/qnoT/DzM9pUoGsmIMGvVX8d+++K/hUBAPihAFqB5gVX3v/ZEvnPff9D/i9I+pdE - f42sCjKA2SOBLvBPSwIAvp7gY9MW+znxHi8NSEX9VORX4DPyqwKw0Z+nAHlbga0nAtDnDOAvnfuPQz9D - /i9AlqHoZwmgJA2gQboT7NbbfgkB5MCv0Z9Hd82LAErkPwBPIiiV/+tdAaQO/Syt/of8XyYC4L0uElAC - sJa6nyMA5PU5ArDn93URwLduPqeYALpyfwU/zZ3+awhgcP/2dVoDyBf/UvIf90L+rxAF0KUGUNW3gM/J - /1lSAEsA379t88IIgApA5T+jv6YAWg9Y70XAkuJfSv6H7F/QHwdHbCGXJ4Be/Nsvqr326Ql+XKPK3gX2 - aaO/neFH8PdVACUpAPYFsPk/7qWAr/K/RAF404DXPgG0D/2w0d879guEEKf+LJgAPr5nWwvwtg9gWc/h - vL4KIEcEjP5WATD/76sAUnMBUtFfge8pAAI/pQByRUAQwHpRANNGf9xHwTCKfwuqzuIBxLAdhvQI9i4D - yL5x81t6RX4L+r4pwLwUQCr6wxP8XvS3ZqN/iwRM/r++UoDu3D8V/WPq7zIQAKfofun2fUcwwYeTfbyc - H7MAJxN5buhNAqVEAND/872XuySAqD6tAsiNACgJ2Mq/BX9jK/DPXJHcCmw91gBylf9c9I/i3zIQAA/e - gAHQkO+cq//YgZsGj951ywAepq+PgHrDoA8RlCoAAN+SwGN373ALgR4BKGF5E4G6QM9rD/xe7l+yG9B6 - qQHkFv2koj+ADxsV/0L6L7xIw4U6JIG87a77BP9SEAFJQFUASEAJAOf23br5tW69AtdXveK4XnMAbAoA - 3ycFaBBBYg7A2lYAicKfzPqz0R/9iP7LrAKwYs+Cf7Jwp9sU/CmvgE+B//ED1zZ8QwHs39UiARiG+ViY - VAMB/MOeNx4FsLtGANQU+F4NoAv463ktQGrFXyr6M/Jr9A/wL4Ncw448VAAkAkr+PlZCBE3lsFsUxe4W - +NGH2TRASQCzAb964/lHsSZAIz/Az+jfpQBYCLTRP1UEdMFvzwJYVynA4Jiuqn8q+lcKYHg/ov8KKARa - FVCWEqSJwAf9DRL9b3Ajv0cEORJA/8l7L6nUAAx9gB1fQwLwFgHpCICtB/QBPsGf2xBU9wP49Qe3rqkt - wUrzfkZ/jfxR+V8hwzWqABj9NQ0oIYMmyNtEACDrvRHIb2ioAEZ97cOYBgDUSgK4JgkQ8PAKfiqBXPT3 - hgFTNQAv8qdOBFrrCoDg52IfC34b/a3htdjxdwWoAG7RpUDX6r/em0YVqJEI1FsloMCnArBEQDJgX43g - VwXAekCOBEqBb08CbhCBHQq8f/ua3BEoB35P+lvD/Zj1twLTAFUBpb5EHUwi/iT6e94jAiUBBToLhV0E - YIkgB34dDswRQR3xHSLoUgCrOwWY5Pye7PekvwU+LKT/CiMCHQ4EsDlBSJWAB/wcGRDY+loK9Dn5D4/I - b6894NPjPRb4uUJgX+lf2Reu61QBdkdgVQCYir2aIqCCNVXwS4Gf17AX3/zIL0L6rzAph4fRqgBrmhrk - VIG9l4v4OTKwRhIg4D1loMC3lqoHeErAEoHOAGxFf0MEqZOBlARAChiBWS0EoJ+RQ30V8DPgVxJgH6+z - 6h/SfwUVA/HH+NKN2x+3KgBelUCOCEpSBgU7r0uBr4C3CoDAT9UAUoVAOx8gpwIA9DrKA/Q0QwJWBeiR - 4koAUF0rXQbr2Q7I97G1Vx31O8BvIz/eE3n/ClcBWBNgVYBOCc6ZJQYFeV9vgc++qoBUbUBTAJsKlBAB - hwKVCFprAMZk0CACjwSGBIApxAA8C4I8aBQ/h3WAlQYIPbotJfk13/civwV/5P2rQAl84+r3PkgSKAV+ - X0sBXgH+3XdfnwQ/o78Ffk4F5OYElI4GFIHfIQEuD7ZKAB41D+bDy08CowKfAhRyvSvq58DP9xH8kfev - 8AIPTu8BASgJwJQQuoiBwM6BHkaQax++et0BvfUpIvBIgNE/tzJQ8/8SEqgBn1EBSgJUAkwDfnZg6+Dp - vecNvr1v5wC/d/4dFksEozMb9WfiOiX3pwF/bPK5ylKBv7nq/GtIAgp+SwAeIXjk8OTtexqgVyJIksAQ - 3PVrY7BbBVDNBZC+EsE09YCuYcDGSECOABIqgOA/dN95g19+4IzBjzf9/uAXzz9pMHjV1sHgjNcPnjpp - 89n6t1gaqTwBvP3+uNeK+Ab0CnwLfl7De+AP6b+KlACOAVMSsERQQgIAsH2dBABv+3rdRQSqALwhwWlJ - oIsIWsOBBQSg4MdU4EPve83g5+96SU0Ah47bPCKBPzxr8H9O2vy5T2476/gmKSNqpi11MKs97LUdfUeS - H9EelX2s4lPQ54CvYFfT94NIAvyrlACQl2JUwJJAyghy754CW6/ta5YMLBH0JYAcCaQWCOnmoLk5Ack6 - wNiUKKpdhceR/5n9myvwwx4+7tjBM8e+aPAvLx6pgP/7384dEcGrzxv89E82v2syVj6/hu8JwKOoh7wc - Y/Ka11vQe8D3CEDfj+8xyvlHhBPgXwP1ANjDN9826CICNQI+95r6nFEJ9CUCjwBK9gkoSQca8wE6oj9l - /0/veF0F/qeu+YOaAOo0gDYkANi/bNz8BNICjeQAsBrArAYJTwPIaQAk5HgFeInwXpTPgb4L+DCoCfss - RVul9QAlARAAfR8yUCLw+l1kkAX/3Ttqb9cHYGUgPQBP33VeoN0ivHNdANWAWRloCQDRP0UAv3n5f5+A - 35ABiODKqz5RzaBTA+jgPZBaMOcieh/A54APJcFJPpMUJdqaIYEHrr/zqBKAZwCw9ak+QI1+w9+4rwH+ - h2+5qtXvQwJKBAT/Tz50iZsK8KRgOypQUhT0lgfb3B8E8ON3buwmANq4LlClBsPrT59/3WHusNMF2qWy - FujHwEf9gDv6xiSfNUgCkJuYI0ASgC8hAhpBnuor+OG1b8GPvgd+SwKqAFQJ0J6+Z1tLCSgJeIeFlO4S - ZIf9MOSXUwB1IdASwJgE4EES3zvnbYehBuwknOUAPQyjBSPJP5lRGqhZoySAfA5LhwF+tRwRpKwmgTHY - ta8kQODD0wj+f3r3zjYJjM1LB5gGWCIA+KEKckqgiwSUDLiBqE76mYoALBHATjh9SAhbBp8/8y0DEMFS - qYEc6Al8VPkn+/hHvr8uCoNgek4Z9oggRwjfuW7vBOgK/i4TEoCvgW9JwBABgW/VgNYDmA5QBQD89DkV - kDs3QKM/7JcHLqpWAPYigHHUbxGA2vA9SAtY2MuRga0V8NrN5R3AE/QwyH3O6dflwdHWfBuNOTMl8NSA - EoGSgfZ7EQGiPr0oAHiCv/IS/Ql4SwT0BD9SAJIATcFvfdeZgWoa/VEA7E0ASgQ5EhgqgjotGA/nsUjI - vg7xucax/wTgYVgHQODrUt6I+us4JcADgALh13btv98jgsd33XnE69fkMAS2+q/vubYCu/UKfjcNGEf+ - HBEQ+JYENB0gAcAD9DRLAh4Z8ARhmJ3z7xHAg9te0E0ABD+8mkMCTAsay3QLjDP+FOwK+mPPvfdIG/iR - 60cz0g9EAEVw8IoPPOWRAe3RK246ol77SggE/0P7dlVmCQBgzymALiKwJGDVgE0H1ABy+ArgAnoL/uq9 - 4w1AtAaAmYDvPvnlg/v/0x8NDj/vFd01ADMq0CABgL9BBKO0gCv36D1w2z4BT0OOj2E9/TtPZiZGi/as - 9rJRRAkscYUq4KhBCSEA8NbDPPBr7t9FApoKeCpASYD1AE0JUiSgRrDTE/jI/ek5EejIX546+OL2Vw12 - vvDZR5949olN8HcpAO3L6ECDCOCH9svjzh5c+uYd/08BXWIAPaK9FvcmZB/Aj5YhAisLcQ1lgKIhFhiR - FGA5paDgh8dhpBr5cwqgKw3wVIBXF+AQoXpIf/gUEQDoVv4z+uMsw4d2n1FFfoAf0R/gL47+Ng1oEMGW - NhGM7yEtOOVVbx7kAI9hPER6O/V48SsTo62ZQmG7ODSJHnZKK0gCqqFahXjj9sdJAF/ee1llOQJIEcH3 - brukQQI/uOvCIhJA1Kf3DEAnCdAD+HXU33/B4KdXnVet7hts2lzN84cB6D/63VMGGvVpWfAz8pfUBAB6 - 2FgF1Db8mlu2bhn82dkX//1lr9l4MWzHH590QhPwk4VFEe2jzV0ZpFakeSvYPnXlmw4Q/CQAGgEPEnjo - wGVHCHrreXhIigTQT5GA1gTgAXzrAXr1iPQAPoFOe/r5Z1amgG+BvyT651RABXyjBjQlGP8MTCnWlYb6 - +w/QR1uoSvCWsarcxHJkSwAA/cFbdrSivwV/CvglSgAATykCSwI4oBTAf+r9WwfffOWGKrpb0CMXh8d0 - XvThueqPU3xdg4LoQwQK/pQSkCXH3IAkKvrRVhQp8GFEpPIUAAjg4Hu218CnCoAR+CQCpAFKBpYIVAmk - FAFAbokB92jI7z3wK9g90GfBnwN+VgmcNQG/JQSHCLDkWGd5xph+tBVCBJP9CJQAAGxNA7oUgPWeAvAI - gKD3vAX/g5ccX4OfBOCBfyrgWxVQTABCBAS/pwiG7+OS46YaiFQg2gogAaYBqgBIAFQB8AQ/73nAZ58E - AK99Tw3QW+DDIPtR2Uf0f/zfb26A343+fcGfIgNvSDBHAqoAjK9WIA77+FyRFkRbUYVD+GrYUOW/gJ6e - KQCJAMY+TxBW8PPaEoGCHgaQq4fhOHIaCOAHf76hEf1/9LuvTxLA3IigTxpgLakEttREoGnB0u1LGC1a - AQFgZqGN/iQCrQNYYqAKoGctQIHPPjyAz+uUAfQgA3hEfhAA5P8//YfTavCrAuhSAcUkoJFf72UJoCMd - qEG/Sa43NdKC9r6E0aItqPGBIwEwDUC0t0rApgLwGvlVASgJKOA98APoNuoT/LSvvmlDTQBIA3IpgCWC - mdKArslBKQXQqQQ2CTnY0YJY9RdtmQggpwBsXyM/vWc2HeC1Bb6SAUBPEsCcfhLAqAbQVgBdRFBMCBr9 - O+V/gQpoEMGmpm+lBmcN2kXCaNGWgQAIds8AXo3+VgkwDbDAB6At8B+569wGCSjw1VAAzBHA1HUAO+zn - gd6mB6f9afP1jaeX1QM8IrCkMHyPVQNRG4i2LAoAwM6RgQd+L/oD5Nq3wGcfQAd5wH973/k1+KEAugig - VAVkCSFHBh4xbNpcrgAU/ClFoIQwJBUUCUMNRFs2BZACP4FvVQCADAAT8OoJfusZ7bVfogBSKqBIDejG - H97En97S36oAjwQ2Of2EEuDrw++paiDmDURbuALIGUBLbwFPI9A9A9AR6XltI/+3bj6nGv4rJYBiIjAH - g7jSX/cDyBFCSwWQDLbUIPYVgRkV8Ahh47g//BlaG4iUINqy1QA82U8iSEV9G/G9aO9F/S4FMBP4qQCc - swFapKBkkCWCLU0V4BHBxtMbEb5JApsSamBEAislJdAFZ7oALdC06tpkuAnLgzEE+NUbzz+aMkTkaQ2g - 12tGeO/6wb2vbxhUgBJASR2grxI4etHuygY33TEY3Hb3xIbX1X0UAUuIgKlAV2GQ4N8opsRgVcCYBJAS - LOcR53n1EcOXq6rxj4n16meeds5g86lvqOy0E159lP0u49fBw/ZtPi15nXsN/vqTT66/L/v8LNjUA8Af - zQXIpwC2IGhJoJUCWNAnrCKCXN7vXm/p8CL/eW296evkoUUfb87nBcvID7z1/G/CEDyaS5+DCFZVU/Av - h+V+Pl/b/bLTawJQBdBFAgp+LhVuzAkg+KclgdYIQIcS8EigVgBb2oog5U/707ousBiwjcB/5YYNt999 - 9usGsAPbzqjtY7vOHoAM/NOWo61I+Y9/ISeXggCsMpjVpiEARn+rAKrNQTzw9yKBLU7VX/N+QwIewO19 - C/SNp6cJwRQHl5IE+L2xu9Gtm187sAQA8Kv5RBBtXRCAAj/l+1pOAbAYmCoKKhGoAqhATNDTJO/vJALU - BE5IDf2d1c73c0XBEhWQIgQpDnq7QM3zOQH4sc8iCYAkYAmAhjShWa8INbAmCSAF8nkpABKAHQUoqQN4 - 9YA6+ivwbb+LCPCaSwAZFeABP6UKSg2jDy0SmH/0R94P8NNKCIAWamCdKIASIpiGFJQAuhSARwjcLox9 - N/pPkw5kJ/7khgHPmg78ALv1YxUARUISmCfIVP7fdsJzj3gEoCTw8T3bGj6tBqKtOAKYhggqkG48d6EK - wE4GIuhLRgVqArDgn4IMqu8jC3mSZJACPecPlII952Gn/encSYDfB8U/jwA8FQDw/8OeNx61ZIDaQHNW - Y7QVqwD6kEEN9iERWEKo782hBmAVgE4I6lICqgLmAf42ATgKwFMDtjDokYF6Ne81+745jw5YAuirAmh6 - H2dXLF3NItqSKAD7Wg1yJ/orGVhiqIGt/RkJIAX6VDpQpAByZDD2DQLQHYJb0d+55hRijfh6PwVwz2w6 - MEcSsClAHxWgSsCmBJg7YJ/FaCtAAaT6LimMwW8JwSUBD/glhDD+vjkCsLWArrSgVwrgjRK0RgK2dJs3 - EqAkYBXArDYkgXlMFlIC2PeS5xxVAuijApQI+BrqAvw5sb5hlaQAOdA3wO6B21MFHe/towCsEvBIAP2Z - FID2AVpVACVkYEcDGhFcIr/2x4DuRQDD74kZgyy8TQswHQUgAeRUQEoJeMa6AD9bkMBKTgEE+DCcgadf - U1+Pgauvo6+gttcpAtCf20UAngLwlAB8NQuwlAASKqAh/82Gny4ReKmArQdY4HPjEQU/+p4lVADWDkwk - 9jRSe/KceARQQgI5IrAkEOnAClAAKUJo5f1D7xFBI8pL1K+BbwCe66cIoE8h0M4Y7K0CPAUwlP/c6ru1 - vZfdFjynAGwR0AFxA/hev0MhzGNkoFrxNwS+lwZ4swO7ioLWNB0IElhGBeCmAwb4Gu0bUd5E+IYXMnDv - C9j1Pq+7CMArCHoqAEVAXk+rAEAeFfjtmYDm2HBvO/CWGrBDf14h0AK/yxwSmKUoyK9560uf8zlPBYAA - UiTw/kvPLVICH7ryopoEIhVYMAlcffy2b3oAhF8p1pUCENSpmoCnAnqnAgL+igCGYCcR1ISQUwIpIkiN - /08DfksAMmWYY/B9AeYVAnMqIKUESmoCHB2IeQILJIATL3zfc5QEVpJhOTA8lgOXKAAC3asFqFEJ1OsC - CgjAA79euwSQIoHUEmGvGDgNCSgRjElgVA/oL7F12TgIwKYBXCOQIgGoAHhE+RIlwHkCQQILaPwl45fO - A0If2rerMpwQrPbtfTurA0Pha7tp28jv3T7qw2t/3/muHXz72bWnPbT7jIb9r8s2VYY+NwQpSQFSoLf1 - AJIAVwd6RFBvFDIEIt6noHeJIEUCuvnnRpMW5GYBlgAfw5EFBACbrR4wOEYJ4PoTXzywaUBOCTAdIBHk - SCBmDC4jAdi9AXlUOL1nFeDVAHT2O4jAmiWCr12z2SWAVCrQRQYEvkcEds8A3qMB5C4RSBrgEoEtFvZR - AaWpgEcEDglMAy6dEdiXBN5z/tYkEaRIACMDHMKMouAyEQAjP/vqAXp4qoCqv3d77WvgkwxgQgSeAiD4 - sQ2YJYFpFUBOEVjge9c5AgBBpNRAvi6wyVcA2i9RAQQ8vPY9EhgTwJFXvnaqVCCVBpAA/nzjH7UKgkoE - JAGmAySAHAmwKBgqYIEE8KXb9x3hEWEKehqVgKYD1hP8NRlkUgIlAgDfqgCkALifUgA5IuhKCbzUoAT8 - eu1ZFvz2rEDdB9BLBTwl0EUElgQcFTDLqABHA0pUwC1bt7hKQFVAigSiHrBMCoAqwIv+2lcV0AD/0LtK - gGRgiMCqAEj+nAKwIwG5gqD1KQWg4O+jAlJEkE0J7NFg9U4/W3wlkAJ/CvgpEhAVAN93lqAdDYAB/DSr - Amw6AAKwxcGSekCkAgsiAOz8qwRAFWANBUIAnoVCFgRbZCBqoKUCOkiAKgBkABXwlbNPnUkBlCiBFCFM - SwKWACrgWTWw0SGCzMYfSSLoIgGjAvBZ+hcEm7MCU6mAJQBYSglwdCBSgRVAAFiw4SkAb0RASYBeRwca - aYE3QjAE/cPXXlxtQ27rAaUKgOC33ieAUxp9+F88/6Qa/OyXgL+kKJgkAveY8E3N3X9P6AF+jwA8QnBU - AIwLhmZRAaoEqAIsEWg6AALQmgCVQC4VWJ5dkNcZAXzlqpMHmgZQAZAAPK/gZ78uDlqzdQFTFFT7x6ve - WCsAeFUAngooVwKn9FYBHiH8y4tPavguIgDYkkRgycDd/++sfFGwlAASBcHyyUG+CrCpAK1ECZSQAEYF - YpbgAghA0wCAuYQEtA+gu2pAQT80/ByqgFQdgCTQRQB5FXCK8a+vScAqAesBbnoFe44MckRQk8AY7I2U - wJ4KtHHxKqA0uk6rAmZRAqECFkQAAJ4qAIAZIwPqFfjWlAAsEVgSUAUAIkjVAOAfuPj0TgXgEULbmuBP - KQIvJfDIwPMAOb0C35KBG/29lKB0aHBhKsAfEbAkQMMhL6VKoEQFRFtCAvBUQF9zwa+FwjH4q+gvakDl - v6YBHA7MDQUq8NskcIrj2yogpQhUCaQUge1bElAi0HSgJoLEEeEuCUxDAEukAnRewJUvea47KkAloERg - lYAdGQgVsIwE4KkA2Nf3XDuS+zfum44IbPS/aVtFApoGoA/gY+wfHvbNHW8orgN0q4FTTP+UzsIgPIBN - r30lA2slJMAhOXr3oNDUqMAsBDAHFcD36uzAPvUALx3oSgWiFrAAAoBxRACgpykJ0Ft75B0dKsBEf8p/ - mwIQ/EwBQAJWBZSSwIgATjGKIK8GUnWBLhLwyKBIDeRIwCqBJVIB/VcLjgqCeD9TAagAmwooEVglkKoH - kAAsCYQKWBABfHnnawYkAHoCnwpA7xH4SgI5FVANM45JgArAEgFJgMZagE0F+hKBBT/7TAO6ioMkCCUB - eICc3oIfBpDRWxJgKlCTQJcKmJYErAoQAphmoRDfC/JQFXDVK45zVUBuZKCEBHTfgCCAJSYADguqCrBq - gGC3JKDgB6iraxv9x33UABrAv+LNLRWgqYCnBPoQwkQNpFWAEoKCXusCHuhL0gH6bDqQSgVKlMCUKkD3 - EOwz686OClgV4KUCVgV4qYCCX33MDlwAAZSQwHeu21v3AX4Sw8HLL294Rv9RpN/Zjv5jn0sFqABAAiQC - qAHUBVJkcPC3N3TMGTjFNQU+r230T6mBlBJQ8FMJpNRAIx0oVQJzSgOmXSPAtEFTAasC5pEKsB9rBBaR - Agzti9tfVV17BKDAV9+S/1WuP0kBrAKwKqAqBA5VgI4GUAFUS4NZDxj7aqrw+HM/cPHGyr76pg1VBXrD - C19abSZilUFKBaSIIAV8C/gcAaSIwKYCrZpAjgSmUQEFxcBpNw3hBCGqgFlSAa8gyH5sH7YgBdCHBLzi - oFsEHKsBqwSsCrA1ACUCJQEogYltrO27u19ZPVAv+73nJ9YQ+ApgMnX4lFZtQIGfshIiIPiVDJQEeimB - OauAvtODSRipVEBJIDdHgKlAigCUBHA/0oAFEgBMC4OeUfJr3t+YFjwEOr7ek/5WATRqAWM1oARAr0oA - BDDyExUAEsBD56mAthLwFYDnu8CvwM+pAZsOtAqDKfDPWguYczHQjgwgFQABaCqwe8PxlXXVA3IqQC1G - AxaQAjQI4PzjKg/AWeAz8tvJQ7pKUOcA5BQAyACg55wAz5gKdJEADJ+bewqiLgDAP/HsEzsJIEUGJURg - SaHLPCLgqECSDLpUQI4EMmkAioHTRlWdIEQCsCSQUgH7Np9Wk0AXAeBejAYs0VTglAJQIgDQvGHCFujN - QiAWAhX0XgqgKqACvaMC1JgCkASUACrScuYPlJJAHwXQJxWwoO+lAiwJ9FUBGQKYbk5AWgXYomBKCeRG - BDwSaB4oEm3JUwBLApDYnC0IFaAzB5UElAy8yE/5r8BnIdBLAVJEMAF/sx5gCYAqQElAPUBOr/1pUoKS - omBOBVhbUhUwh9EAOyxIBcBaACynAkprAbxHooo6wJwIADMAc2lABfpxKlB7mTZcL/m1G4OYyT+2HmCt - TgGUBIQItA6g6YCXAsCsAiDgrRLwgK/XADJ9H+tDAlYNFBcE+24askQLhHTJMAC/84XPrlMBVQBWBZAE - rAog2D0SiDrAMqQABH9t4+JgTQLjqM8dg+sFQA4REPC85xUFG+DPpAIpBYDPZxWAVw9IqQAFvqYFlhBy - xPDMsS+qSeDw815RA559veelBEoCDSJIFQT7EMCctgzzhgWxTkAJgCqARJCqBaRUAEmA/ThIZAEEYEmA - KoCGe1AOAC13FG7VAbzpv4mJQFYBeKmArQG0FUCzDoDPTOB3gT9FAp4KsKDnNQA/rRpQ8HskMNWwYGqv - wCVOA1AM9AjAUwEgAKsCugggCoFLSAA5ErAqgIuH9DwBpgGNXYBMHcBG/hwJ1AogQwSpOQFKAFYBKBlo - egBPI/jVLBHAAFglBRIBFQCvbd9TBSkS6KwHdG0ekjtJaOPpcx0OhIoA8HMkYFWAjgakSABWzRisVgdG - /j9XAiAJlIIfxn0EavDbWoDZDsyCvdp5KAd+AX6V/w/7FvyjmYBpAvAKgfAALL0ayaAvERDYnjog8FUF - 8DoHfo8E3LpAn12EluD8AO/ZwmhAHxUAAuhKA5QEYkLQMikAJQKuGVAFwBOD7DwARn47L6BIBRgiSKUB - qTqATQNoJANLDH0MQLZ99aoGPFVAn6oRdKmBzlGCFDnY48U5H2D4s2apA+hogEcAngrIpQEpFTDbkGUQ - QE0AjP5ddQBEU68QmFIAPCLMUwAlowA2BSDQrQpoAr+tACwJqLdKIOUb9u9+p+EfPu7YGvDab/jhe0kG - JQbg06cMYLW+1FKzDKfdKShXB7AkkBsN8FSAB35YjAQsiAByqYBNAfTcQAW+zf3rVYIFhUC1VORPEQEI - QFMBjf45A2Ctr80hgdZrYkoA9j4Jo6+VEESpeUQySyGQERkR2iOAadMAJQP0QTBBAHMmgNIZgSkFUIF+ - GPXrg0MTm4L2BX8q+ncVAQl+mq0H9CWBFhksoU2jHHJkkbq2hhTggXuuuXURhUAvDfAIQEmAFgSwhAqg - uBgoBEC531AA3nmBY+DbAqCSQMrKo/9ozwBLAkxlSAZUBVgzAI+ITI978La/FPbjTb9f+1Rf7wGotk8P - gJd4RHp+D/bxu/rebZcMvvORPQdnnRCEZ8xOCCqpAygBpEgA92NvgAUpAI8EkjUAif61CshEf1UBBLkl - gVzkT4G/2tRkTACaBigR6MzGB7e9oDXCofe813nfs4OXv6yyp675g9r3sZ+/6yW1V/vxOzc2/E/veN3g - 0PteU/vDd55a9eF5Df/M/s2Vp+Fr1eNrYHjfU+/fOnjowGVHJsCarsrOPQOnIQCSgILfGoqMQQALIgAL - /poEnBSgEf1pPVKA0ujfpQAY/ZUIVAHQuoDfxwB2eIBXiYCGZcq0H/z5hpYB2NaeuWVL2wDoW99Y2b++ - 9+ykHbrvvMofHntr+D5qIAEQwGN375i5yo5njARAEvAIoLQOEASwhASACT190oAuBdBQAc6GoMnNQOzE - nwTwv7jlzKwCGIF+5KuNTYZelYAd1XjwkuNdElDfBfyUUQUo+D0CANiVBAB0lwDG4E8B/rDY0Y9c2LiG - HTJkYMH/+N3nVATwlTv2vnLeBODVAd7+hycnFYBHArwXBDBHAsB+/FPVAQwBtMCfUABWBdgNQZUAsOLQ - i/okghT4S9KAlAroSwKM/CkysMBPEYCN/A0CGAMfnsBVIAPcvzxwUe0BfnqakgCJ4JcfOKNFAk/ee8kM - OfakBsAiYFchUEnAUwAeCUQRcM4pgEcCsyoAOw/AmwTkbQTKvB/2+TPfkoz0vG+JAMBXFZBTACQAVQEp - 8Jfk/R74u+R/V/Rnfq4k8Mv9FzRk/iEn8hP4SgQkCZKAEgDA//3bNlcE8OBdey+dhQB0FGAaAvBIQC0I - YIUpAOb+jZmAjP5GBWgqkCIAkgAVAMFNsKuvpgQL4HUUQFWA9q0S8FSARwiltYCUAsiRgFUAFfDH0R/e - i/wW/BbsqgBUCeBrfv3BrZVZEvjBXRdOPRTozQPoqgF4aYAFvCWBIIAlIoASEkgpAJ0IVJICeFuBc6sv - mhIAwW37lhQY9dW0FlCSAkybBuSUQB/w1wrAFOoIeoD2kETyVPRX+9XHRp7vJwHo94cCQB2ABNC3BuDN - BOyjAFJ1ADW8FgQwJwJAARAE0CcF6KoBNMCfIQE9HFQPBOXSXhIA0oAWoIdgp/fAX0oEqREBgPnvTn7e - Uev7jhCwCMiCYCkRNKT/mAg8BXBI8nolgZwd+esJcXgKAATw7Q+//ZOzEAD3BJhWAaQIgHsHxFqAORNA - 3wlBKQLQAmAuDVDwkwAm4J8M4QH83zvnbYfhU6BX74GegNd+SQrgSXqb0xPUfcf61bzhv4b8NwqA0R/g - 9Sr/XeBPpQA6EjAtAehhIUtBAHwtVgMuoQIoLgT2VQBCAno6sEcABCyA/9ibbz366fOvq0kgZVYZ9CGC - xiSh4f+LigSS2BonznhG8NpJOymzE3+SNQABv1UAh5xhv1wKQBKwBADw42dOTwB+ATBHAAA/vSUASwK8 - d9PmP/lSAH8BKcC0BNAaBuS6ACWCIfhJAG35PyGAz+7c/Bg+J1Z/YSsoXJMIUoTQhwgU9KyHpEBPgFjf - xzjzjrPwOCPPM63+2xoAwXu4QwEA7PTaP9yhADgdeJrzArvy/4oAXnZ6gwRyBKDXeB3pReT/S0AAXSTQ - NQqQVAAE/RQEMNkBdvQw4rODCAB+azky8IiBpx/x/+4BH4Dw7GcHJp4GINEApkqqyxRcEkDOdJou+wAn - pvVWw39jBUDwKwkQ2Ap8T/6TDDwCgOH/PSKAflE2l/9PqwDUmP/HJKAVmAJY8CcVQH2dJgCMyYMAvnD9 - RZ/n56Xx/wCZib3hPBLwyECJoCKXBPAfuevcLOgt4BX4eI+SgBIBycB62JG/PLXhPUIgAagC4AQgJQAL - fnuP4D9UoAD6Aaxs/N/m/xb8OQXA12MEYKUqgPdsbykA7T/yF7JAKEEAuoLP3/11ch4dGlID7BFXQgIw - lfrfuvmcGvR46GkEQQ78lgSsAvCMwGcfgFfwq6UIAV9L8Ns0wA4BEvSD+7fXwFcVkFIA+P9+6cbtj/dZ - EGR3AiolAMr/LgWgBBEFwDkRAADmgX8eCiBlNQkUKID89s9NIgCZsVCYSgs06gP8AD7Bz/FvC/4f3nNB - EvyeEuhDBAA4fZcpCWgK0KUAvOiv4PcIAP//vgSgJwN1jv+b/N8bAfAIAO8bFQBj+G8uBAAJDTAAxPNQ - AFXEd1SAAr+LAAB+DgGWbPuE1/SYapCGRwQa9Qn+VPQH6DX6P/3Bc2tP0Gu/Dwko6D3wDz76+oZPEYFV - AJr/56R/Vw2A04H7LAnuE/1TCiCVAtjoHwXAOTQCBjn2LApAtwRLKQCbAtQEMCaBlAIACfTZ900fVhQO - v7Zr//0kAgU/o75Gf0/6M/IT6OrZB3iUCEoVAL5OAV9qlgisCvAKf5T/fRRAXwLg758bgCj4S6r/OQXA - +3xP5P8zt0mxBjJPCaCvAsBrrTkAYwXgSX+CH7vO5GoAnK3Xf7ZXMy2AGugLfkZ/lf4eGWifREAw0VvQ - M+Ir+GjTEkGKBOBT4O+qAYAA8HcsIYBpKv+2+m/zf/WWACL/n5P8B7hU+pfMBrRrAfA+bw5AKu+Hr8Cf - UQAgACgAjPdP98eeEBy+h0r+FPhpCn6rAjwj8NmnKqC3hKCAT0X/Crhjz/7RT12cJYISBWDJoEsBgAC6 - fv/6LHngLyn+KchTBMANQ0L+z7kAaAmgrwLACII3AoB+Tv7XJJAgABQAAd5pwQ/P9MYDvyUAAN2L/vAA - N33KMKRmScESQcoU7PVknSHg6dX0NY8EvHF/AL+rEDgdAUx+112Fv9S4P0CtRNAV/UP+zzEFIEC8AmCJ - Aqjm0BeOABD8AH6tAjqGAac5/80WNwl+PMzwj+6/uCj606zkTwGfnnPzlQRSZgtylgC6TBUCUwE7ApAC - v84CnJYAppX+qaE/qwBs9I/5/3Ms/nnyv48CyM4BcKK/EgGjP0kgtRCo7wmwfB8Kh1rtx+cB8Al+EgCu - PQWg0d9TAFhj74Hf80oIWrG3BNCI1hnQD/52R/ueKAFVASr5uwqBSgBYh9BFANNW/b3obwlATd8X8n/O - E4BIAABJiQLIFgCl8OcBH/e6FEBzBOD0nie/NAubBD4jvyqALvCrClDwE/jah1fA6xJbr2/X7lvwWwIA - 4FOmSsCqAKsALAHkioBdBNAF/mmiP/o28luSiOW/SzD8p+DvGgq0+wEw/1cFwHkA6ktrAKoAtABY8gfX - uoaC30Z/BT52vUmRgBLA0/dsm8j+cR/Ax8o69ZYILCkccubtW7DW5oH+M1eMjH0hAiUBuxaAJGCjfwkB - pGZgzgJ+nfrrKQB9zUb/AP8cwA9gedG/VAG4+X9i8k+qBuBNBFL5zzUAJX9wm9bgs1CVMPqTBGz0Bwnk - wK8koFHf9gFuEIEFvKcCuBY/BX438hP8akYNVKBOqAA7CpCrAXgEMPIjFaDgV+CXTvfNgd+L/rAo/i2B - /GeOnCIAe1y4Rn93/N+MAGg6oMOANgVoFwBP75X/a+HPRn+Cn9Gf4C+J/koCAPlPPnRJw9OoANRSRGDX - 7hcrAI8AMirApgB9RgFIAPjb6izLXMGva7afnfZr5b/1ajH1d5nlv5cCNMb/TfHPM60BeHMAbP5fmu9Z - VVN/HiP/YQA9iIDg7yKBSu7TjPz3gH9ovCGn+lTun1MADQJIAd8hABYEU0OCqfzfIwBsT4bnQ8f57Sk/ - fab5epHfKgBP+kf0XyL5z+hfQgKtEQBvAZBU/r1ioFUAXfl/6TCPzf1TBEAFANCrCmAKQJ+sAYxTAE8B - WEIoIQJv484sCXSkAY2hQScN8AggtSEICQDFVDwvOcnflfOnIn9KAViLyv8yy39LANgfz6v+e/I/tQgo - NQIwjfxnw8NqwU8CwM9TFWAVgAd+gr7uj4kgBX4vBVDw6178JQrgN38zAje9C/wEAdg0oAv8KQLA3zsV - 9UskvwLZA38O+LQTL3xfVP7nLf81+ucUQEr+t6r/CfB7swC96K8EgF2A+8p/Fv+86K/Df1UBUpSANSoB - Ar+VBogKoP3iYzu6iWD/BQ0SsKf3FKkATw1khgSrDUTuOy8r/w/LjsAeAWAH5FnAT9B3gT9FArHrzxLK - f/pSBZCU/6b6n5P/dimwEgCjf5/pvyr/vejPyE8PcKOfAn4y/x9HfhJAiQog4KtNPMfXCv7DBYXAKvqL - GrCgd+W/EADTAKs8bPTXcwGUAN598ssHOdB3DfPlwJ8yfu3Vx2/75qynE0frkP9e9O9SAN7in396987s - KkBLAroluI3+feS/qhpNSarP45AAC4D0KRXwszsurUnAI4N6SNBRBLXtv6ClApQQckrAVQGJuQG5WYGI - 6rpLsI38Kv89BUACUMBff+KLa29P96X3gN9X/kfhbwkIgMNkCv7ULMBUAXCaqb8N6W+OA1MCQGpRPtur - OfNPFQAIAMYUQEkgpwII/BLQZ8EvBEDAc/tu3LdKoDMNcEjAWxdgVwlWG4c4k5By4CcB4JwDBbt6r8hn - gW8X+eSifkj/JW3tKbLT5v+pzT+8hUD2WDC7FyCPApsQwOkzTf5pkJIT/akAPPCrkQRUBaSMRFCTAaO+ - 5x1CsEqgiAjMhCEr/S0B2A1ECXweCqqnAysB4OATAt6L+F3A75vv0yD9Q/YvQfTHvPq+w39WAXhj/5T/ - qfwfOwFX4HdOBOIhoDwCrM9x1Pr/svKfKQDAXqIAAPY+4LfAb6kCA3xGfgW/Pcord6KPB347pdfbJ0AJ - QA8TYeT3jgbnoST4e6eAz9V5tFkifr070NBX1z2mf0ebQf5bEsgdD+7Kf839vSnA4y3AGymAyH89CBQE - 0E/+N+sadj4CPpeC31qOBEgABLj2u9QAQF71beQXq0An/rCTFuSO9fJW9aU2CeGhInqKECW/Bb8lgLvP - fl0jt/eA70X/XM5vgW/7kfevEPnv5f/e2L8SgDfttyYCcyCoEgCjfx/5740AwOroP/5sSgIq/3MKQFWA - AjxFBHXk7wF+SwTeyT45IugCvu4ZqAeK6tFi9rQhWwDEARwe6D3Zb/tdKqCO9oj+437k/QuW/yU1gKT8 - d6I/bTLMt9MlAB4JPov8d4cAx5+JllMAJIAnb31riwTYV9DnFAFAzHsNEuiwnBLwiMCe+wfA06c2DKUC - OHTrG10iSEV/FAC9aN+V75cC35JAgH8Z5H+fJcDe1F8b/VsG4KsJATD6A/gwTjmdRgHg/2ZJSUmgRP6T - CKgAYE/ee4lLAB4xEPi4JsC1nwO/GsHtqYIU8HNnCOjBoiSB6mix4c9uRP/xIaQkAPy9c7l+KeAt0DXq - 02KZ7xLLfwDFk/85IsjKfwFYUgGMQV/n/WMC0OivBDDr1l8pBdBFAgp8egKfZgGv/b7ArwqCQyCWqIEU - CZAAuODHAz+OEIPVBDAmAQ/42PzEEgDyfwJdo3yfQl8q2rN/9XHnHiH4R89qVP0XKv9L83+szsPrOekP - oFdKgKAX34r+V7y5MoIf/X47//iTgCwBcOVhyn7xrgsaqYCtA1jQp9ICAt56fH969hX87OfUQEMZ3Hlq - wyvYrefBIQQ/fj4BD6uJgMeODz2W/3ryf+YKvxP5A/wLJIAH7rnm1lT0RzQmAWA83iMAK/9T0b+u9FvZ - L32PAPofP1VGAKkaAKN/F/hzRKBgt9cKeNunJ/iVBLqIwJIA7nnAZ/QHmOvor8Afg74ihTHw4XX4z0Z8 - b4luaXHPSn6Anzn/6G8Y4F8W+V86Acgr/j18y1Ut4LekvyECgN8SADwIapoCkBKA1iUsCXhG6a++kv/G - l5CBAr+LCAhCSwLar2YMjn0F/DHYrQIg0FXyKwlQ/vPn0nuKgNGf1f8SsOeAH+BfgfIf0dCbAkwVQAVg - JwBZ+Q/wU2Kr/G+Bfgz8R96xq+pbAqBNI//1/wmC0wlACv5cGgCQq3UB3zOC3l4T8DkDyC0RWPBrXwmh - xADsp/ee1yIB5vy8h/eQAPD3ngb0uSIfgY8ZfjHOv2AC4CYZapiFZ+W/l/8j94fPFf9c2e8YwW8JAOCd - rvo7md/APQBLCoAAuFUAXuRvEcE7L0teK+gV/DkiIAAtEVgjCagKyJEAoz/lPwnAIwKAnp7RH8W/aYCf - M4KfozwB/gWSgG6PnUoBPAXA6E/5b6M/UwCAH/0K5GNfkcI46sMD9PQHL7+8Bj/602z8AcLwdgAuHQGw - kT+nAp68fU8b9EoGcq8CPX2BCiDwFfzsE/hqFcDHvivyE/RqvIefoZ4EgBmZ0xT0ssAXyR/gXwHVfxv9 - 6b38HwrAFv9s7t8C/xj47Kv8B+BVAXx9z7U993kfbUnt7QBMAnjs7h2dkT8r/4cArkAPYFvAZ3xDBYyv - rRF0uVQgZaoEushAwQ9ws89ob/t4Bhj9+0b3HPAR9fn3jUr/Mst/TMxJjQDAA/xQACQAgF/H/m30pykJ - wB7at6sFfniCnwoAnlN/ux+M5mm/IACSm13+SyMRANT4jCng1wSgwBdwN8jAksLYCHrvGgCjVyLwIrEl - hZRZ8APwXuT/6VXnuUSghoAAj6XYs4A+ov4KawCJVv+ZAnAfPo3+mJBjFQAIQOW/Bb8Cv5L3uPeONPjR - V/DDSqb+6mvIIfE13NJM9/sH4GmlUb8GvkMCLvALiEABr8D/8bWXdoIfoEY/B34lAQJe+/weCn4P8Ph9 - 8BrEX837nxLwCnyM7U9OEgrwLwvwVR578p9Lca0CQA6o+T/lv0Z8GmW/gh/R35IAjaAnCXTL/8Exuo0Z - TzEm8LnBpwKf4K/9/l2tvJ9qAPajG/bUPgX+XoQg5hGB9Z4RwB4REODsK/Bp+N4gGxIAPP7euIdr9VBk - eP0rZ586FeCt3OfmnQH8FSb/q916BPwAvaoAL/pT/hPwjP6M/Bb89J6p/KflVv7pPd3CTPf3t8C3oE9J - fQW9RwIpnzOAqcsr+Gh9iIBeIz3ACxJQVUHww+zPJRGoYS7G1KAfR/w28CPXX/YJQLrzL/N/yn9VAJyX - bxUAx/696J8CPhVAigQ0+qfk/wT8g2O4gCkF+IYNgc8+AI1reHy+KvIPPwOieAv8w3vwNHttycDeI8hT - ZEAAlhBCjgiY2xP4GvX5XnwmAh+eEd4DPn4f8JT+OZC3bBjtkeProaH29KBoK0T+1+Af78LL4p8FvyUA - fL0Hfo8EcgoAoLcpAAjAW/mnkr+a3SeVfQv0f7738sY9BT19ZWPQN8BvQG7vKdhTZPDD3VfXoEffA7k1 - gt5el5JBtWBnHPUZ5SnzVfoT+N5n4N8Fn/nzZ75lkAJ76/4Q9Ij2o4k8jPAB/FVR/ddDOGFckacr8/Rk - Hhb/FPDffff1NdC/c93eIunv5f8wrvxrPjjNqctazSfIK9CLp+G6AXwDeoJbQe6RQMosIRD88DDcI8BI - BjSPDPoQgRbzGPnpeY+f6clLdlbX9Pj74vvhmuDH+/D3w98hG+Ul0kPiW6UWUn8VyH+Cv+7LijxvWW59 - Nt9Q/qciv4IfffVqj161p/Y2+ntTf3VefwV8AbgFewX0IYAr4N8+AjPv2f4swLegt+An8PWekoAlg5wR - /BrVLQkw6qsp+JFeweNvC0/g4/eO9+Bvgb/Vo1fc1AI6IzwBr5V8ztnH3yuKe6tE/rc35zi/Af7GtFxD - AIz+iPoKenjk+QT8wzfua4Ce9xX8VgF4K/9UueTA7wFf+2oKdnh8NvTpn9p7S9b/7yv2ueC3fWsEvoI/ - RQSar1vwe6av8fvid6zgV+DDK/jxf8L/H/UXgBzPCoDelvCjvwtnXIbEX4Xyv0UAY/B7q/JIAgB/dUrP - vl3NyD8GOrySQUoFKAGoAkD0tyv/NO8H8QDk+P4W9H1Mwe8B3OsT8LgGYOh5nz4FfI8EAEBeKyjVeyTQ - ZXgfPg/Br0YiwO+bv39E/Md33Xnk4BUfeOord+x9pTf5imCfAD7k/apUAJDQFvg0nY9vx+W5PLcihzHo - oQAqwEvfmo38lcTkgycEgIfQG/tX4iLhKPDp8fMJ8EfvuqUFegCWHu/1gE4DeGzf8wp+gpt9vadG0KtX - 0Ntr5uw2f/eM31PBj9+tehhfw++c4P/arv3362KcCcgD6GsG/FwZ1zx+a2drYo5XmScJVPJ/CHiSgAd6 - ayngawSC/8bV732wGX2ahT+mHWoKfgKbQJ/FUoC3wLfmkUAK9N61JQILfO8+jZ/he+e87XDK8Ht+7M23 - HtWozyHXmKCzxuU/D8jQDTltYa4RlU2BDgRQyX8QAOV+Bwko+Flgqo3gH5sd+9fPbcGP76WRPGVQA9MC - XoGfIwPPCMicn5fh+wHM+B16oMffrgL/8HWAH++F/eOO+2/W4dbI5dcBATDqp4CfMkYPEoCCHA8T7vEh - VKC3QJ+wSfRvf24QA9MM/mwC9+Gbb2t4a9+//MOte/ic9DkjsLRfAn5GYethAGyX7zJ+L4IZPhXx8RqN - ER/An6zCi6i/bob/wPbIs13gOxGZEUUj9gPX33kUYMM1+vQEv/bpcwaAwrx5/5YA8HNrwhn2CU4Funrt - 433Wl5oCzXo1As7ztj+LeT/Xu0/D/xc5Pn6P7YU4keOvqzoAHgIPiASrfbjtg04AAegEGe9NY4j8XWv+ - cR8P8LQ/Y6mM4OL/n9cpIOYsRRYemFMgp0eUx+8Vkb4J+klNJeT+OlYCABweDDwgs9iDd+29dJav1SGn - 9AM5KQji/bN+5rVk/P3D4++J3w/H7u3vbrJLUkT8qAckgMZCEMd7U+Y/RJOHLGddq/vyJOCPS/P7lo1P - N0cYJkNdaquX4HWxVO53Hm2dpwNdQM0BeNqvLSGD0s+d6q9nKyfBaNF6pg25aOxH17UUWaNFixYtWrRo - 0aJFixYtWrRo0aJFixYtWrRo0aJFixYtWrRo0aJFixYtWrRo0aJFixYtWrRo0aJFixYt2opv/x95XOia - wJXAHwAAAABJRU5ErkJggg== - - - - - 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 - wJXAHwAAAABJRU5ErkJggg== - - - \ No newline at end of file diff --git a/AMRPC WatchDog Desktop/icon.ico b/AMRPC WatchDog Desktop/icon.ico deleted file mode 100644 index 68030fb..0000000 Binary files a/AMRPC WatchDog Desktop/icon.ico and /dev/null differ diff --git a/AMRPC WatchDog Desktop/App.config b/WatchDog/App.config similarity index 100% rename from AMRPC WatchDog Desktop/App.config rename to WatchDog/App.config diff --git a/AMRPC WatchDog Desktop/Messenger.cs b/WatchDog/Messenger.cs similarity index 95% rename from AMRPC WatchDog Desktop/Messenger.cs rename to WatchDog/Messenger.cs index 77c18f9..5f13636 100644 --- a/AMRPC WatchDog Desktop/Messenger.cs +++ b/WatchDog/Messenger.cs @@ -1,9 +1,8 @@ using Newtonsoft.Json; -using WebSocketSharp; using WebSocketSharp.Server; +using WebSocketSharp; - -namespace AMRPC_WatchDog_Desktop +namespace WatchDog { internal class Messenger { @@ -25,7 +24,7 @@ public void Reconfigure() _server = null; _sender = null; } - + _sender = new Sender { Payload = _payload }; _payload.PropertyChanged += _sender.OnPayloadChanged; _sender.Messenger = this; @@ -33,10 +32,10 @@ public void Reconfigure() _server = new WebSocketServer(9632); _server.AddWebSocketService("/watchdog", () => _sender); _server.Start(); - + } } - + internal class Sender : WebSocketBehavior { public Payload Payload; @@ -46,7 +45,7 @@ protected override void OnMessage(MessageEventArgs e) { AnswerAsType(Payload.ResponseTypes.Response); } - + public void OnPayloadChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { AnswerAsType(Payload.ResponseTypes.Event); @@ -65,4 +64,4 @@ private void AnswerAsType(string answerType) Payload.type = original; } } -} \ No newline at end of file +} diff --git a/AMRPC WatchDog Desktop/Payload.cs b/WatchDog/Payload.cs similarity index 97% rename from AMRPC WatchDog Desktop/Payload.cs rename to WatchDog/Payload.cs index 9fb924c..61073d7 100644 --- a/AMRPC WatchDog Desktop/Payload.cs +++ b/WatchDog/Payload.cs @@ -2,7 +2,7 @@ using System.Runtime.CompilerServices; -namespace AMRPC_WatchDog_Desktop +namespace WatchDog { public class Payload { @@ -17,7 +17,7 @@ public static class ResponseTypes public const string Response = "res"; public const string Event = "event"; } - + public static class PlayingStatuses { public const string Playing = "playing"; @@ -52,7 +52,7 @@ public double endTime NotifyPropertyChanged(); } } - + public double duration { get => _duration; @@ -81,4 +81,4 @@ public void ResetToInitialState() type = ResponseTypes.Event; } } -} \ No newline at end of file +} diff --git a/AMRPC WatchDog Desktop/Program.cs b/WatchDog/Program.cs similarity index 74% rename from AMRPC WatchDog Desktop/Program.cs rename to WatchDog/Program.cs index 3237152..233e99b 100644 --- a/AMRPC WatchDog Desktop/Program.cs +++ b/WatchDog/Program.cs @@ -1,21 +1,24 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using System.Windows.Forms; -namespace AMRPC_WatchDog_Desktop +namespace WatchDog { internal static class Program { - private const string AppVersion = "v0.4.2"; + private const string AppVersion = "v0.4.3"; [STAThread] private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - + new Provider(); - + // var window = new Window(AppVersion); // window.FormBorderStyle = FormBorderStyle.FixedSingle; Application.Run(); diff --git a/AMRPC WatchDog Desktop/Properties/AssemblyInfo.cs b/WatchDog/Properties/AssemblyInfo.cs similarity index 80% rename from AMRPC WatchDog Desktop/Properties/AssemblyInfo.cs rename to WatchDog/Properties/AssemblyInfo.cs index 69ee107..e4c5a94 100644 --- a/AMRPC WatchDog Desktop/Properties/AssemblyInfo.cs +++ b/WatchDog/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("AMRPC WatchDog Desktop")] +[assembly: AssemblyTitle("WatchDog")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("ZephraOSS")] -[assembly: AssemblyProduct("AMRPC WatchDog Desktop")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WatchDog")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("dba6e76d-e48d-41e4-b35e-b3a1e5a59cdd")] +[assembly: Guid("a64e25e5-88ae-43be-9f6d-c5a318ada64f")] // Version information for an assembly consists of the following four values: // @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.1.0")] -[assembly: AssemblyFileVersion("0.1.0")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AMRPC WatchDog Desktop/Properties/Resources.Designer.cs b/WatchDog/Properties/Resources.Designer.cs similarity index 93% rename from AMRPC WatchDog Desktop/Properties/Resources.Designer.cs rename to WatchDog/Properties/Resources.Designer.cs index ae2cc96..c9119fe 100644 --- a/AMRPC WatchDog Desktop/Properties/Resources.Designer.cs +++ b/WatchDog/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace AMRPC_WatchDog_Desktop.Properties +namespace WatchDog.Properties { @@ -44,7 +44,7 @@ internal Resources() { if ((resourceMan == null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AMRPC_WatchDog_Desktop.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WatchDog.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/AMRPC WatchDog Desktop/Properties/Resources.resx b/WatchDog/Properties/Resources.resx similarity index 100% rename from AMRPC WatchDog Desktop/Properties/Resources.resx rename to WatchDog/Properties/Resources.resx diff --git a/AMRPC WatchDog Desktop/Properties/Settings.Designer.cs b/WatchDog/Properties/Settings.Designer.cs similarity index 95% rename from AMRPC WatchDog Desktop/Properties/Settings.Designer.cs rename to WatchDog/Properties/Settings.Designer.cs index e0829ad..6c67327 100644 --- a/AMRPC WatchDog Desktop/Properties/Settings.Designer.cs +++ b/WatchDog/Properties/Settings.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace AMRPC_WatchDog_Desktop.Properties +namespace WatchDog.Properties { diff --git a/AMRPC WatchDog Desktop/Properties/Settings.settings b/WatchDog/Properties/Settings.settings similarity index 100% rename from AMRPC WatchDog Desktop/Properties/Settings.settings rename to WatchDog/Properties/Settings.settings diff --git a/AMRPC WatchDog Desktop/Provider.cs b/WatchDog/Provider.cs similarity index 95% rename from AMRPC WatchDog Desktop/Provider.cs rename to WatchDog/Provider.cs index e8783db..6dea2e9 100644 --- a/AMRPC WatchDog Desktop/Provider.cs +++ b/WatchDog/Provider.cs @@ -4,8 +4,7 @@ using System.Threading.Tasks; using Windows.Media.Control; - -namespace AMRPC_WatchDog_Desktop +namespace WatchDog { internal class Provider { @@ -17,7 +16,7 @@ internal class Provider private Messenger _messenger; private readonly Payload _payload; - public Provider() + public Provider() { _payload = new Payload(); _messenger = new Messenger(_payload); @@ -29,7 +28,7 @@ public Provider() private async void UpdateSessionManager() { if (_sessionManager != null) return; - + _sessionManager = await GlobalSystemMediaTransportControlsSessionManager.RequestAsync(); _sessionManager.SessionsChanged += OnSessionsChanged; GetAMPSession(); @@ -43,7 +42,7 @@ private void UpdateAMPSession() private void GetAMPSession() { - if (_sessionManager != null) + if (_sessionManager != null) { GlobalSystemMediaTransportControlsSession newSession = FindAMPSession(); SetAMPSession(newSession); @@ -54,7 +53,8 @@ private void GetAMPSession() _ampSession.MediaPropertiesChanged += OnMediaPropertiesChanged; _ampSession.PlaybackInfoChanged += OnPlaybackInfoChanged; OnMediaPropertiesChanged(null, null); - } else + } + else { _payload.ResetToInitialState(); } @@ -65,9 +65,9 @@ private void OnPlaybackInfoChanged(GlobalSystemMediaTransportControlsSession sen var playbackInfo = _ampSession.GetPlaybackInfo(); var timelineProperties = _ampSession.GetTimelineProperties(); - _payload.playerState = playbackInfo.PlaybackStatus.ToString().ToLower() == Payload.PlayingStatuses.Playing + _payload.playerState = playbackInfo.PlaybackStatus.ToString().ToLower() == Payload.PlayingStatuses.Playing ? Payload.PlayingStatuses.Playing : Payload.PlayingStatuses.Paused; - + _payload.endTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + (timelineProperties.EndTime.TotalMilliseconds - timelineProperties.Position.TotalMilliseconds); _payload.duration = timelineProperties.EndTime.TotalSeconds - timelineProperties.StartTime.TotalSeconds; @@ -100,7 +100,7 @@ private void SetAMPSession(GlobalSystemMediaTransportControlsSession newSession) if (newSession == null && _ampSession != null) { _ampSession = null; - } + } else if (_ampSession == null) { _ampSession = newSession; @@ -121,7 +121,7 @@ private GlobalSystemMediaTransportControlsSession FindAMPSession() return null; } - private void OnSessionsChanged(object sender, SessionsChangedEventArgs e) + private void OnSessionsChanged(object sender, SessionsChangedEventArgs e) { UpdateAMPSession(); } @@ -129,4 +129,4 @@ private void OnSessionsChanged(object sender, SessionsChangedEventArgs e) private static async Task GetMediaProperties(GlobalSystemMediaTransportControlsSession AMPSession) => AMPSession == null ? null : await AMPSession.TryGetMediaPropertiesAsync(); } -} \ No newline at end of file +} diff --git a/AMRPC WatchDog Desktop/AMRPC WatchDog Desktop.csproj b/WatchDog/WatchDog.csproj similarity index 88% rename from AMRPC WatchDog Desktop/AMRPC WatchDog Desktop.csproj rename to WatchDog/WatchDog.csproj index a99d0e6..5e918a4 100644 --- a/AMRPC WatchDog Desktop/AMRPC WatchDog Desktop.csproj +++ b/WatchDog/WatchDog.csproj @@ -4,9 +4,9 @@ Debug AnyCPU - {DBA6E76D-E48D-41E4-B35E-B3A1E5A59CDD} + {A64E25E5-88AE-43BE-9F6D-C5A318ADA64F} WinExe - AMRPC_WatchDog_Desktop + WatchDog watchdog v4.8 512 @@ -46,20 +46,11 @@ - - - - Form - - - Window.cs - + - - Window.cs - + ResXFileCodeGenerator Resources.Designer.cs @@ -93,8 +84,5 @@ 1.0.3-rc11 - - - \ No newline at end of file