From 9c3ddfe95e5b802e829c1c153673b3604b22011a Mon Sep 17 00:00:00 2001 From: Lorenz Cuno Klopfenstein Date: Mon, 28 Mar 2011 23:46:36 +0200 Subject: [PATCH] Updated about panel as side panel, with updater. --- OnTopReplica/AboutForm.Designer.cs | 236 ------------- OnTopReplica/AboutForm.cs | 153 --------- OnTopReplica/AboutForm.resx | 309 ------------------ OnTopReplica/OnTopReplica.csproj | 10 - .../SidePanels/AboutPanel.Designer.cs | 1 + OnTopReplica/SidePanels/AboutPanel.cs | 34 ++ 6 files changed, 35 insertions(+), 708 deletions(-) delete mode 100644 OnTopReplica/AboutForm.Designer.cs delete mode 100644 OnTopReplica/AboutForm.cs delete mode 100644 OnTopReplica/AboutForm.resx diff --git a/OnTopReplica/AboutForm.Designer.cs b/OnTopReplica/AboutForm.Designer.cs deleted file mode 100644 index 9dcd3fc..0000000 --- a/OnTopReplica/AboutForm.Designer.cs +++ /dev/null @@ -1,236 +0,0 @@ -namespace OnTopReplica { - partial class AboutForm { - /// - /// 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(AboutForm)); - this.themedLabel1 = new VistaControls.ThemeText.ThemedLabel(); - this.themedLabel2 = new VistaControls.ThemeText.ThemedLabel(); - this.panel1 = new System.Windows.Forms.Panel(); - this.buttonReset = new System.Windows.Forms.Button(); - this.progressBar1 = new VistaControls.ProgressBar(); - this.buttonUpdate = new System.Windows.Forms.Button(); - this.buttonExpander = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.linkLabel2 = new System.Windows.Forms.LinkLabel(); - this.linkLabel1 = new System.Windows.Forms.LinkLabel(); - this.label2 = new System.Windows.Forms.Label(); - this.webBrowser = new System.Windows.Forms.WebBrowser(); - this.toolTip = new System.Windows.Forms.ToolTip(this.components); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // themedLabel1 - // - this.themedLabel1.Font = new System.Drawing.Font("Segoe UI", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.themedLabel1.Location = new System.Drawing.Point(0, 0); - this.themedLabel1.Name = "themedLabel1"; - this.themedLabel1.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); - this.themedLabel1.Size = new System.Drawing.Size(200, 40); - this.themedLabel1.TabIndex = 0; - this.themedLabel1.Text = "OnTopReplica"; - // - // themedLabel2 - // - this.themedLabel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.themedLabel2.Font = new System.Drawing.Font("Segoe UI", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.themedLabel2.GlowSize = 11; - this.themedLabel2.Location = new System.Drawing.Point(200, 0); - this.themedLabel2.Name = "themedLabel2"; - this.themedLabel2.Padding = new System.Windows.Forms.Padding(6, 0, 0, 0); - this.themedLabel2.Size = new System.Drawing.Size(189, 40); - this.themedLabel2.TabIndex = 1; - this.themedLabel2.Text = "v2"; - // - // panel1 - // - this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.panel1.BackgroundImage = global::OnTopReplica.Properties.Resources.back; - this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.panel1.Controls.Add(this.buttonReset); - this.panel1.Controls.Add(this.progressBar1); - this.panel1.Controls.Add(this.buttonUpdate); - this.panel1.Controls.Add(this.buttonExpander); - this.panel1.Controls.Add(this.label1); - this.panel1.Controls.Add(this.linkLabel2); - this.panel1.Controls.Add(this.linkLabel1); - this.panel1.Controls.Add(this.label2); - this.panel1.Location = new System.Drawing.Point(0, 40); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(388, 105); - this.panel1.TabIndex = 10; - // - // buttonReset - // - this.buttonReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonReset.Image = global::OnTopReplica.Properties.Resources.refresh; - this.buttonReset.Location = new System.Drawing.Point(338, 79); - this.buttonReset.Name = "buttonReset"; - this.buttonReset.Size = new System.Drawing.Size(23, 23); - this.buttonReset.TabIndex = 14; - this.buttonReset.UseVisualStyleBackColor = true; - this.buttonReset.Click += new System.EventHandler(this.ResetClick); - // - // progressBar1 - // - this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar1.Location = new System.Drawing.Point(250, 35); - this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(102, 23); - this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee; - this.progressBar1.TabIndex = 3; - this.progressBar1.Visible = false; - // - // buttonUpdate - // - this.buttonUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonUpdate.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.buttonUpdate.Image = global::OnTopReplica.Properties.Resources.xiao_component; - this.buttonUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.buttonUpdate.Location = new System.Drawing.Point(235, 79); - this.buttonUpdate.Name = "buttonUpdate"; - this.buttonUpdate.Size = new System.Drawing.Size(102, 23); - this.buttonUpdate.TabIndex = 2; - this.buttonUpdate.Text = global::OnTopReplica.Strings.AboutUpdatesCheckNow; - this.buttonUpdate.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - this.buttonUpdate.UseVisualStyleBackColor = true; - this.buttonUpdate.Click += new System.EventHandler(this.Update_click); - // - // buttonExpander - // - this.buttonExpander.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonExpander.Image = global::OnTopReplica.Properties.Resources.xiao_down; - this.buttonExpander.Location = new System.Drawing.Point(362, 79); - this.buttonExpander.Name = "buttonExpander"; - this.buttonExpander.Size = new System.Drawing.Size(23, 23); - this.buttonExpander.TabIndex = 4; - this.buttonExpander.UseVisualStyleBackColor = true; - this.buttonExpander.Click += new System.EventHandler(this.Toggle_click); - // - // label1 - // - this.label1.BackColor = System.Drawing.Color.Transparent; - this.label1.Font = new System.Drawing.Font("Segoe UI", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(6, 75); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(199, 31); - this.label1.TabIndex = 13; - this.label1.Text = "OnTopReplica automatically checks for updates. No information is logged at any po" + - "int."; - // - // linkLabel2 - // - this.linkLabel2.AutoSize = true; - this.linkLabel2.BackColor = System.Drawing.Color.Transparent; - this.linkLabel2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; - this.linkLabel2.Location = new System.Drawing.Point(7, 58); - this.linkLabel2.Name = "linkLabel2"; - this.linkLabel2.Size = new System.Drawing.Size(252, 21); - this.linkLabel2.TabIndex = 1; - this.linkLabel2.TabStop = true; - this.linkLabel2.Text = "Homepage: www.codeplex.com/ontopreplica."; - this.linkLabel2.UseCompatibleTextRendering = true; - this.linkLabel2.VisitedLinkColor = System.Drawing.Color.Blue; - // - // linkLabel1 - // - this.linkLabel1.AutoSize = true; - this.linkLabel1.BackColor = System.Drawing.Color.Transparent; - this.linkLabel1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; - this.linkLabel1.LinkColor = System.Drawing.Color.Blue; - this.linkLabel1.Location = new System.Drawing.Point(7, 37); - this.linkLabel1.Name = "linkLabel1"; - this.linkLabel1.Size = new System.Drawing.Size(212, 21); - this.linkLabel1.TabIndex = 0; - this.linkLabel1.TabStop = true; - this.linkLabel1.Text = "Created by: Lorenz Cuno Klopfenstein."; - this.linkLabel1.UseCompatibleTextRendering = true; - this.linkLabel1.VisitedLinkColor = System.Drawing.Color.Blue; - // - // label2 - // - this.label2.BackColor = System.Drawing.Color.Transparent; - this.label2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label2.Location = new System.Drawing.Point(7, 4); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(287, 33); - this.label2.TabIndex = 10; - this.label2.Text = "A lightweight, real-time, always on top thumbnail of a window of your choice."; - // - // webBrowser - // - this.webBrowser.AllowWebBrowserDrop = false; - this.webBrowser.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.webBrowser.Location = new System.Drawing.Point(0, 146); - this.webBrowser.MinimumSize = new System.Drawing.Size(20, 20); - this.webBrowser.Name = "webBrowser"; - this.webBrowser.ScriptErrorsSuppressed = true; - this.webBrowser.Size = new System.Drawing.Size(389, 200); - this.webBrowser.TabIndex = 14; - // - // AboutForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.ClientSize = new System.Drawing.Size(389, 145); - this.Controls.Add(this.webBrowser); - this.Controls.Add(this.themedLabel2); - this.Controls.Add(this.themedLabel1); - this.Controls.Add(this.panel1); - this.DoubleBuffered = true; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.HideTitle = true; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.Name = "AboutForm"; - this.Text = "OnTopReplica"; - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private VistaControls.ThemeText.ThemedLabel themedLabel1; - private VistaControls.ThemeText.ThemedLabel themedLabel2; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button buttonExpander; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.LinkLabel linkLabel2; - private System.Windows.Forms.LinkLabel linkLabel1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Button buttonUpdate; - private System.Windows.Forms.WebBrowser webBrowser; - private System.Windows.Forms.Button buttonReset; - private VistaControls.ProgressBar progressBar1; - private System.Windows.Forms.ToolTip toolTip; - } -} \ No newline at end of file diff --git a/OnTopReplica/AboutForm.cs b/OnTopReplica/AboutForm.cs deleted file mode 100644 index 9121ad0..0000000 --- a/OnTopReplica/AboutForm.cs +++ /dev/null @@ -1,153 +0,0 @@ -using System.Diagnostics; -using System.Windows.Forms; -using VistaControls.Dwm.Helpers; -using System.Drawing; -using System.Runtime.InteropServices; -using OnTopReplica.Properties; -using System.Deployment.Application; -using System; -using VistaControls.TaskDialog; -using System.ComponentModel; -using OnTopReplica.Update; - -namespace OnTopReplica { - public partial class AboutForm : GlassForm { - - public AboutForm() { - InitializeComponent(); - - //Tooltips - toolTip.SetToolTip(buttonExpander, Strings.AboutButtonExpanderTT); - toolTip.SetToolTip(buttonReset, Strings.AboutButtonResetTT); - toolTip.SetToolTip(buttonUpdate, Strings.AboutButtonUpdateTT); - - //Add link areas (localized text) - linkLabel1.LinkArea = new LinkArea(linkLabel1.Text.IndexOf("Lorenz Cuno Klopfenstein"), "Lorenz Cuno Klopfenstein".Length); - int linkStart = linkLabel2.Text.IndexOf("www"); - linkLabel2.LinkArea = new LinkArea(linkStart, linkLabel2.Text.Length - linkStart - 1); - - //Glassify - GlassEnabled = true; - GlassMargins = new VistaControls.Dwm.Margins(0, 0, themedLabel1.Size.Height, 0); - - //Update title - themedLabel2.Text = "v" + Application.ProductVersion.Substring(0, 3); - - //Add update event handling - _updateManager.UpdateCheckCompleted += new EventHandler(UpdateManager_UpdateCheckCompleted); - } - - protected override void OnKeyUp(KeyEventArgs e) { - if (e.KeyCode == Keys.Escape) - this.Close(); - - base.OnKeyUp(e); - } - - private void Lck_click(object sender, LinkLabelLinkClickedEventArgs e) { - Process.Start("http://lorenz.klopfenstein.net"); - } - - private void Homepage_click(object sender, LinkLabelLinkClickedEventArgs e) { - Process.Start("http://www.codeplex.com/ontopreplica"); - } - - private void ShowGenericError(string title, string mainContent, Exception ex) { - TaskDialog.Show(mainContent, title, ex.Message, TaskDialogButton.Close, TaskDialogIcon.Stop); - } - - #region Bottom toggler - - private void Toggle_click(object sender, System.EventArgs e) { - IsExpanded = !IsExpanded; - - //Update icon - buttonExpander.Image = IsExpanded ? Resources.xiao_up : Resources.xiao_down; - } - - bool _isExpanded = false; - bool _isFirstExpansion = true; - public bool IsExpanded { - get { return _isExpanded; } - set { - if(_isExpanded != value) - Size = new Size(Size.Width, Size.Height + ((value) ? webBrowser.Size.Height : -webBrowser.Size.Height)); - - _isExpanded = value; - - if (value && _isFirstExpansion) { - //Load text from resources - webBrowser.DocumentText = Strings.AboutDetails; - - //Register navigation events - webBrowser.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating); - - _isFirstExpansion = false; - } - } - } - - void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { - if (e.Url != null && e.Url.IsAbsoluteUri) { - Process.Start(e.Url.ToString()); - e.Cancel = true; - } - } - - #endregion - - #region Updating - - UpdateManager _updateManager = new UpdateManager(); - - private void Update_click(object sender, System.EventArgs e) { - CheckForUpdate(); - } - - delegate void GuiAction(); - - void UpdateManager_UpdateCheckCompleted(object sender, UpdateCheckCompletedEventArgs e) { - Invoke(new GuiAction(() => { - if (e.Success) { - _updateManager.HandleUpdateCheck(this, e.Information, true); - } - else { - var dlg = new TaskDialog(Strings.ErrorUpdate, Strings.ErrorUpdate, Strings.ErrorUpdateContentGeneric) { - CommonIcon = TaskDialogIcon.Stop, - CommonButtons = TaskDialogButton.OK - }; - dlg.Show(this); - } - - UpdateStopped(); - })); - } - - public void CheckForUpdate() { - //Update GUI - buttonUpdate.Visible = false; - progressBar1.Visible = true; - - _updateManager.CheckForUpdate(); - } - - void UpdateStopped() { - //Reset UI - progressBar1.Visible = false; - buttonUpdate.Visible = true; - } - - #endregion - - private void ResetClick(object sender, EventArgs e) { - var dlg = new TaskDialog(Strings.AskSettingReset, Strings.AskSettingResetTitle, - Strings.AskSettingResetContent); - dlg.CommonButtons = TaskDialogButton.OK | TaskDialogButton.Cancel; - - if (dlg.Show(this).CommonButton == Result.OK) { - Settings.Default.Reset(); - } - } - - } -} diff --git a/OnTopReplica/AboutForm.resx b/OnTopReplica/AboutForm.resx deleted file mode 100644 index 4d116c2..0000000 --- a/OnTopReplica/AboutForm.resx +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - - - AAABAAIAMDAAAAEAIACoJQAAJgAAABAQAAABACAAaAQAAM4lAAAoAAAAMAAAAGAAAAABACAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAOAAAAFwAAACAAAAAnAAAAKwAAACwAAAAsAAAALAAA - ACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAA - ACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAA - ACwAAAAsAAAAKwAAACcAAAAfAAAAFwAAAA0AAAAGAAAABgAAAA4AAAAdAAAALQAAAD0AAABIAAAATgAA - AE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAA - AE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAA - AE8AAABPAAAATwAAAE8AAABPAAAATgAAAEgAAAA9AAAALQAAABwAAAANAAAACwAAABkAAAAwAAAARwAA - AFsAAABpAAAAcAAAAHEAAABxAAAAcQAAAHEAAABxAAAAcQAAAHEAAABxAAAAcQAAAHEAAABxAAAAcQAA - AHEAAABxAAAAcQAAAHEAAABxAAAAcQAAAHEAAABxAAAAcQAAAHEAAABxAAAAcQAAAHEAAABxAAAAcQAA - AHEAAABxAAAAcQAAAHEAAABxAAAAcQAAAHEAAABxAAAAcAAAAGkAAABdAAAASAAAAC8AAAAYAAAAEQAA - ACQAAABBAAAAbAoKC6QYGBiyFhcXtBcXF7QXFxe0FxcXtBcXF7UXFxi0FxcYtBcYGLQXGBi0FxgYtBgY - GLQXGBi0FxcYtBcXF7QXFxe0FxcXtBcXF7QXFxe0FxcXtRcXF7UXFxe1FxcXtBcXF7QXFxe0FxcXtBYX - F7QWFhe0FhYXtBYWFrQWFhe0FxcXtBcXF7QXFxe0FxcXtBcXF7QXFxe0GBgYtQEBAqYAAAB5AAAAXwAA - AEEAAAAkAAAAFwAAACwAAABdOTk3u46IgKWTjIKUkYiAk4yEepKHf3WQhHtyj4B5b45+eG2NfHVrjHly - Z4t5cmeLeXFni3huZot5b2aLe3JoioB3bIuDe3KMiH92jIyCeIyMhXqNjYZ7jo2HfI+Ph36PkId/j5GI - f4+SiX+PkomAj5OLgJCTjIKQk4yCkJSMgpCTi4GQj4h+joyEeo2LgniMjIN5jY+HfY6RiYCPkoqAjn55 - c7IXFxe1AAAAcQAAAFAAAAAuAAAAGwAAADAJCQmJkoyGrJ6ViXCypp2Fv7OskL2yq5G6r6ePt6yljbWr - o4yzqqGLsaefirClnYmupJ2JrqOdia6inYqvpJ2JsqafibSqo4m4raeKu7Gqiryyq4u8s6uLu7OsjLyz - rYy8s62MvbOujb20ro29ta6NvbWujry2ro67tq6OvLaujr23r468ta6OurOsjLiyq4u3sayLubOvjLu0 - so20ramGnpWNdJ+ViGxnZWG9AAAAiQAAAFYAAAAzAAAAHAAAADIREhKSqaGapbK4splz3ePrceDn8nPg - 5/N14OfzduDm83nh5fN84uXyf+Lk8oLj5PKF4+Lyh+Pi8onk4PKM5d/yj+Xf8pPm3/KX6ODynOni8qDq - 4/Kk7OLyqO7i863w4vKy8+Hytvbh87z44fPE+uHzzvvk89776vPs+/Pz+fv58//7/fP/+/7z//v98v/7 - 9/L8++3y9/vi8/b70fPz+b7u1da5u6mim3V/fHe1AAAAkQAAAFkAAAA2AAAAHQAAADMQEBCRsKiirMLO - ybBI3eT/PNnf/z3Z2v8+2df/P9nV/0HZ0/9G2tL/StvQ/0vbzv9O28v/UNzJ/1Pcx/9W3sX/WuHD/13k - wv9i6ML/aO/E/3D1x/99+s7/jP3W/53/4P+y/+r/xf/x/9r/+f/v//3/9//8//n//P/6//r/8v/r/+H/ - 3v+//dr/t/3Z/8L+zv/K/7H/1f2b/9r8jv/X/Yz/0Oa+1r2zsYJ+e3e4AAAAkQAAAFoAAAA3AAAAHQAA - ADMPDw+RtKumr8bSz7Y809n/L9DT/zLQ0f8zz8//NNDL/zfQyf860Mj/PNHF/z3Sw/9A1cH/RdnC/0re - xP9S5cj/W+zN/2by0/9x+Nj/e/3d/4L/4P+L/+T/mf/o/6n/6/+5/+z/xP/n/8f/2/+//8z/tPy//6X5 - tf+Z96//jPar/3j1rP9z97j/gvrD/4X9yf+Q/cv/qvu5/7jtkf+112f/z9mt2cW9u4iAfXm5AAAAkQAA - AFoAAAA3AAAAHQAAADMPDw+Rta6osMfT0Lc40tX/LM/Q/zHQz/8y0c7/NdTO/znXz/8/29H/ROHV/0zo - 2P9T7tz/WvTg/2D54v9l++H/avzf/27+3f90/9v/ev/a/4H/1/+K/tT/kPzL/5H4v/+N87D/he6f/4Dp - k/+B5o3/huWK/4/liP+W5of/muaG/5zihv+e2ob/pNeJ/6ncjP+s5pD/pO6U/5/wlv+h4oX/ytu32si/ - vYuCf3u6AAAAkQAAAFoAAAA2AAAAHQAAADMPDw+Rt6+qscnV0bk+2Nf/M9nV/zrd2P9A4tz/Rejf/0jq - 4P9J6tv/TOrW/07o0P9P5sn/UefD/1Xqwf9c8ML/ZPXC/2v3wP9v8rn/cOqv/27iof9r25X/a9mN/3TZ - jP9924v/gtuH/4fbgv+I2n7/itR6/4nNdP+HxW3/iL5o/4y4YP+St1X/k7ZL/5S1Tv+ZtlX/pL5d/67L - Yv+x123/0uC828rCwI2DgHy7AAAAkAAAAFoAAAA2AAAAHQAAADMPDw+RuLCss8rX07pG4dz/Od7W/zzb - 0f8/2s3/P9jI/0DUwv8/0Ln/Q9G2/0rXuP9S3rr/WuS9/1/kuf9f3rD/X9ai/1/Pl/9hzJD/Zc+M/2zT - if9x1oj/d9eE/37Vg/+D0X//fshz/3m+aP95uGP/e7Nf/3+wXP+FsFb/jLVR/4+8Uv+QwFv/k8Rk/5zF - Zf+hw2D/pMBY/6i7Uv+ps0D/0M+i3M3Hx5CEgX68AAAAkAAAAFoAAAA2AAAAHQAAADMPDw+RubKutMvW - 0rs/ysH/MsS3/zbDtP87x7b/Qc27/0bVwP9L2b//Ttq7/1HWs/9T0Kn/Vcqh/1jImv9dy5X/Y9CS/2nT - kP9u1Yz/cNOG/3DOfv9wx3X/cMJv/3vDcf+GxnH/gsFl/4G/Xv+Iv17/jMNc/5DHXP+QzGH/jM9u/4vL - c/+OwWz/j7lg/5GyVP+SqEn/lqJB/5icOv+WkSr/yMOb3NDMypGFgn+9AAAAkAAAAFoAAAA2AAAAHQAA - ADIPDw+RurOvtszW0bxCxbj/OMa2/0DNu/9F0r3/SdS9/0rSt/9LzKz/TMik/1HLoP9a0aH/Y9ih/2vc - nv9w3Jf/cdqP/3PXiP931YH/etV8/37Vdv+A1HD/hdNq/5XUbv+Z027/icll/4HGYv+Dx1z/hcJU/4K3 - VP99qVX/fJ1J/3yTPP97izT/fIYv/4CDK/+EgSj/iIAn/4uBJv+MfBr/xr2W3dPPzZOHhIG9AAAAkAAA - AFoAAAA2AAAAHQAAADIPDw+RvLWwts7Z071K0L7/Psq0/0LKr/9HzK3/T9Ox/1jdtv9f5bf/Y+q0/2rt - r/9y7Kn/eeqj/4Hmnf+C4pT/gNyK/3/Tfv99zHP/e8Rp/3e7Yf9ysl3/b69h/3e2cf9zuHD/aa9Z/3Gn - Qv94nDT/dI4v/3KGKv90gyb/doIk/3d/I/94fCH/enog/3x4IP+AeCD/g3kg/4d6Iv+Idhf/xLuW3tbR - 0JWHhIG+AAAAkAAAAFoAAAA2AAAAHQAAADIPDw+RvLWxuM/Z075W173/Utq7/1riv/9h6cL/aOzC/23t - v/9s6bP/aeCl/2nVl/9pzIz/bcSB/3C8d/9ts23/Z6lj/2SiXf9hnVv/XZpb/1yZXP9cnFv/ZaVZ/3aw - U/94pjv/cY8n/2+EJP9sgCX/bH4k/3B+I/92gCL/en8f/3p7Hv95eB7/eXcd/3t1Hv9+dR7/gHYf/4R3 - H/+FchX/w7qW3tfT0peHhYK/AAAAkAAAAFoAAAA2AAAAHQAAADIPDw+RvbazuNHb1b9k3r//WNez/1bP - qP9Tx5z/U7+U/1O5jv9Ss4T/UKp2/1Cha/9Tnmb/Wp5j/2ChZP9gn2L/XJld/1yYXP9cmFf/XphQ/2Sa - R/9nmDr/cJkv/32dKf92jyT/an0h/2p9If9ufyD/cn4e/3V+Hf98gB3/fX8c/3t6HP95dhz/eHQb/3lz - HP97cxz/fXQc/4J0Hf+CbxL/wrmV3tjU1JiIhoPAAAAAkAAAAFoAAAA2AAAAHQAAADIPDw+Qvbe1udDY - 0sBPt5b/QauH/0Khff9CnXT/RZ1y/0iecP9Lnm3/S5pn/0yVYv9QlGD/WZlf/2KhXv9ln1n/YplS/2WZ - TP9nmEP/aJQ5/2aNLP9mhST/dI0i/3+WI/9yhx//aXkc/2x7G/9xfhr/dYEa/3qAGv+Agxr/f4AZ/3x7 - Gv95dhr/eHIZ/3hxGv95cRn/fHEa/4ByG/+AbBD/wbiU39nW1pqIhoPAAAAAkAAAAFoAAAA2AAAAHQAA - ADIPDw+Qvrq2utDW0MFJo4D/P5xz/0KVbP9BkWb/RJJl/0eVZ/9LmGb/TZZh/0+TW/9UlFf/X5pU/2ui - U/9uoUz/bZtD/2+YO/9oji//ZIQl/2Z/IP9ugB3/e40e/32QHv9xgRv/a3kY/298F/90gRf/eYMY/36D - F/+Ehhj/g4IY/358GP96dhj/d3IY/3dwGP94bxj/em8Y/31wGf99ag7/wbiU4NzY15uJh4TBAAAAkAAA - AFoAAAA2AAAAHQAAADIPDw6Qv7q3u9DWz8FJnnT/QJdq/0KPZP9Di1//RYxd/0mQXP9Ok1r/UJNW/1OS - Uf9ak0z/aJxI/3ilRP96oT3/b5Qx/2yMKP9pgyH/a4Ac/219Gf9wfhj/eosa/3yOGv9xfxf/bnwW/3J/ - Ff96hBX/fYMW/4GFFv+Hhxb/hYMW/398Ff97dRb/eHIW/3dvFv93bhb/eG4W/3xuF/97aAz/wLiU4N3Z - 2JuJh4TBAAAAkAAAAFoAAAA2AAAAHQAAADIPDg6Qv7u4u9DWz8JLmm3/QpRh/0SNWv9Fh1P/SYhR/0yL - T/9Rjk7/V5RK/12XRv9mmUD/dqI8/4GmNf93mCz/booj/3OKHv9yhBr/cH8V/257FP9ygBb/fY8Y/36P - GP9ygBT/cn4U/3iDFP+AiBT/foUT/4aIFP+IiBT/hYMU/398E/98dhP/eXMU/3hwFP93bRX/d20V/3tt - Ff94Zgr/wLeT4N3Z2p2KiIXBAAAAkAAAAFoAAAA2AAAAHQAAADIODg6QwLy5vNHWz8JOmGP/RpNW/0eK - UP9Igkj/SoJG/1CIQ/9blEL/ZJs+/2qfO/9zoTX/eJ0s/32aJP95kiD/doob/3uMGf92hRb/cYAU/258 - Ev92hRP/g5MV/4WSFf92gxL/eIMS/3+HEv+EjBL/gYcR/4mKEf+IiRL/hIMS/4B8EP98dxH/e3QS/3lx - E/93bhP/eG0T/3lsFP93ZQn/wLeT4d7a252KiIXCAAAAkAAAAFoAAAA2AAAAHQAAADIPDg6QwLy5vNHW - zcNRlFj/SZJN/0yIR/9MgD//VYs8/2CXOv9lmDf/bqU1/3CgL/9tjiX/d5Eg/4OaHv9/khz/e4sX/4KN - Fv96hhT/dIAS/3N/Ef9/ixP/i5kU/4qVFP98hhH/fogR/4WNEf+GjRH/hYkO/4mLD/+IiA//hIEQ/398 - D/99eA//fXYQ/3xzEf96bxL/eW0S/3ptEv93Zgf/wLiS4d7a256LiIbCAAAAkAAAAFoAAAA2AAAAHQAA - ADIPDg6QwLy6vNLVzcNUklD/S5BD/1OOP/9elTr/YZQ0/2WYMf9urC//apgn/2WCIP9wiR7/f5Uc/4qb - Gv+Fkhr/gIsV/4SNE/98hhL/eIEP/3mDEP+GkhL/kp4S/4uWEf+Aig//gosO/4qREP+IjQ//iYsN/4uM - Df+Ihgz/hIEO/4B7Df9/eA3/gXgP/4B1D/9+chD/fW4R/3xtEf95aAb/wbmS4d/c3J+LiYbCAAAAjwAA - AFoAAAA2AAAAHQAAADIPDw+Rwby6vdLVzMRVkUf/WZ89/2WjOv9gjzD/ZKAu/2muLf9ljST/ZH0f/2uE - Hf93jRv/hZYY/4+bF/+Ikhr/gooS/4OMEP99hg7/eoIO/36HDv+NlxD/l6AQ/42VD/+FjQ3/h44N/4+U - D/+IjA7/jYwM/46KDP+JhAr/gn8M/396C/+BeAz/g3gN/4J1Df+Acw7/fm8P/31uD/98awT/wruS4d/c - 3J+LiYbDAAAAkAAAAFoAAAA2AAAAHQAAADIPDw+RwLy7vtPWzMRjo0L/YaY2/1+XMf9lri7/YqQp/1x+ - If9lgB7/aoIc/2+FGv99jRf/i5YV/5KaFv+JkBj/gogP/4OLDf9/hgz/fIML/4OKDP+Umw7/nKEP/42T - Df+Ijgz/jJEM/5CWDf+Liwz/kY4K/4+KC/+Jgwn/gn0K/4B5Cv+CeAv/g3gM/4N2Df+Acw3/f28N/35v - Df9+bgP/w72S4d7c3KCLiYbDAAAAjwAAAFoAAAA2AAAAHQAAADIPDw+Rwr27vdTYzMRfmTv/W6Ew/2a+ - M/9emCj/WHUf/197Hf9ogxv/bIIY/3KFF/+AjhT/jZcT/5KZFv+IjhX/gogM/4WJDP+AhQr/f4UJ/4iO - C/+ang3/naEN/42SC/+LkAv/kZUL/5KUC/+OjAn/lI8J/4+JCf+Jgwj/g30J/4F5CP+DeQj/g3gK/4J2 - C/9/cgz/fm8L/4BxDP+AcQL/xL6R4d/b3KCLiIXEAAAAjwAAAFoAAAA2AAAAHQAAADIPDw+Qwr28vtPU - y8Rgojn/YcEx/1uXKf9Zdx//W3gb/2F8Gf9rgxf/bYEV/3WFE/+DjhL/j5YP/5KXE/+HjBL/g4gK/4WJ - Cf+ChQj/gYYI/46SCP+eoQv/naAL/42RCf+OkQr/lpgK/5ORCf+Sjgj/lI8I/4+JCP+Jggf/g30G/4F6 - Bv+DeQf/gncJ/4F0Cv9+cQr/fW8J/4ByC/+BcwD/xL+R4t3a26GKiIXEAAAAjwAAAFoAAAA2AAAAHQAA - ADIPDw+Qwby8v9XczMVhuDf/VpEl/1qFIv9bfBz/XHcZ/2J7Fv9rgRT/b4AR/3eFEP+FjRD/jpUL/5GV - EP+GihD/g4YH/4WIB/+ChAf/hIYH/5SVB/+hogr/nJ0J/5GRB/+Tkgj/mZgJ/5KPCP+VkAf/lY8H/4+I - B/+Jggb/hH0F/4J6Bf+CeAb/gnYH/350CP97cAj/e3AI/4F0Cv+BdQD/xL+R4t3Y26KKiIXEAAAAjwAA - AFoAAAA2AAAAHQAAADIPDw+Qwb69v9TWy8ZZhCz/Voof/1yJIP9cexn/XHYW/2N5FP9sfxH/bn8O/3mE - Df+EjQz/jZMI/5GUEP+FiQ3/hIUF/4aGBf+ChAb/hocF/5iYBv+jpAb/m5oH/5ORB/+WlQb/mZcH/5KP - Bf+XkQb/lY4F/46HBv+IgQX/hHwE/4N7BP+CeAX/f3UG/3xyBv96bwb/e3EG/4J2Cf+CdwD/xL+Q4tzZ - 26KKiIXEAAAAjwAAAFoAAAA2AAAAHQAAADIPDw6Qw769v9TVy8ZXgin/V4sc/1yKHv9behj/XXQV/2N3 - Ev9rfA//b30N/3mCDP+Eiwv/jJEI/5CSEv+Ehgz/g4QD/4WFBf+CgwX/iokF/5uaBv+jpAX/mJYF/5OQ - Bv+Ylgb/lpMG/5SPBf+YkQb/k4sG/42EBv+HfwT/hHwD/4N7BP+AeAX/fXQE/3pwBf93bgb/enEG/4B2 - CP+CdwD/xMCP49zZ26OKiIXFAAAAjwAAAFoAAAA2AAAAHQAAADIPDw6Qw7++wNXVzMZYgCj/Voob/12K - G/9cehb/XXIT/2J1EP9rew7/bXwM/3iBC/+Eigr/io8H/46RE/+ChAn/gYID/4ODBf+Cggb/jYsF/52c - Bf+iogb/lZMF/5OQBv+YlQb/k48G/5WOBv+Xjwb/kIkG/4uCBv+FfQT/g3wD/4N6Bf9/dQX/enEE/3Vu - BP90bgX/eHEG/393CP+BeQD/xMGO49vZ26SKiIXFAAAAjwAAAFoAAAA2AAAAHQAAADIPDg6RxMC+wNXW - zMZZfib/V4kY/16KGf9behX/W3AS/2JzD/9peQz/bHoL/3eACf+DiQj/io0H/46QFf+Aggj/gIED/4GC - BP+BgQX/j40F/5+dBv+hngX/lI8G/5WQBv+YkwX/kosF/5aOBf+VjAb/j4YF/4iABf+EewP/g3sE/4J4 - Bf9+dAT/d3AE/3JtBP9ybQT/d3IF/3x3B/+AeQD/wb6N49vY26SJiIXGAAAAjwAAAFoAAAA2AAAAHQAA - ADIODg6QxMC/wNbWzMZZfCP/WIYV/16KGP9ceRT/XG8Q/2FxDf9odwz/bXgK/3Z/CP+Bhwj/iYsH/42O - Ff9+gAf/f4AE/3+AA/+CgQT/ko8G/6CeBv+emQb/kowH/5WPBv+VkAX/kYkG/5eMBv+TiQX/jYMF/4d+ - BP+DegP/g3kE/4B2BP98cgT/dW4E/3BrA/9xbQT/dXEF/3t4Bv97dwD/vbqN49za26WJiIXGAAAAjwAA - AFoAAAA2AAAAHQAAADIODg6QxcG/wNbXzcdXeiH/V4QT/16JFv9deRL/W24N/19wDP9ndAv/bHYJ/3V9 - B/+Bhgf/iIkH/4yNFv98fgX/fn4D/35+A/+DgAT/lJEF/6GeBv+alAb/kYkH/5WOBf+SiwX/kIcH/5aK - Bv+QhQX/i4EF/4Z8BP+CeAX/gXYF/35zBP96cAT/c2wE/29qA/9xbQP/dHEE/3t6Bf9zcAD/uriN493a - 26WKiIXGAAAAjwAAAFoAAAA2AAAAHQAAADIPDg6Qx8PBwdbXzcdWeB//V4IS/16IE/9ceRD/WmwN/15u - C/9lcgn/anUH/3V8B/+BhAb/hocG/4uLGP96ewX/fH0E/3x8A/+EgQT/lZMF/6GdBv+Vjwb/kIgF/5ON - Bf+PhwX/kYYG/5OHBf+MggX/ioAE/4R5BP+BdwX/gHUE/3xyBP92bgT/cGsE/29qA/9wbAP/c3ED/3l4 - Bf9taQD/ubWN493a26WKiIbGAAAAjwAAAFoAAAA2AAAAHQAAADIODg6Qx8PCwdjYzsdWdR//VX8P/12G - Ef9cdw7/WWoN/15sCv9jcQj/anMG/3R7Bv9/gwX/hIUG/4mJGf94eAP/ensE/3p6BP+FggT/l5QE/56b - Bf+PigX/j4YG/5CJBf+MgwX/kYUG/5CDBf+KfwT/iH8D/4F3Bf+AdQT/fnME/3pwBP9zbAT/cGoD/29q - A/9vbAP/dHID/3RzBf9nYgD/trOM493a3KaKiIbGAAAAjwAAAFoAAAA2AAAAHQAAADIODg6Qx8TDwdjY - zsdVch3/U3oN/1yEEP9cdg3/WWkL/11rCP9icAf/aXEG/3N5Bv9+gQT/goQH/4aHGf91dgL/eHgF/3l4 - BP+GgwP/mZQF/5uXBf+MhQX/jYYF/42FBP+JgAT/j4ME/4uABP+JfgT/hXsE/390BP9/dAT/fHIE/3du - BP9yawP/b2oD/29rA/9vbAP/c3MD/25tA/9hXQD/tLKM493a3KaKiIbGAAAAjwAAAFoAAAA2AAAAHQAA - ADIODg6QycXEwdnZz8dUbxv/UnYM/1uBDv9cdQv/WWkJ/1tpB/9gbgX/aHEF/3J3Bv97fgP/gIII/4SF - GP9ycwL/dnYF/3h3BP+IhAT/mJQF/5aSBP+IggX/ioMF/4iAA/+IfwT/jYEE/4d9BP+HfgT/gXgE/39z - BP99cgT/enAE/3RtBP9wagP/bmoD/25rA/9wbQP/cXED/2lnAv9cWAD/s7CL497a3KaKiIbGAAAAjwAA - AFoAAAA2AAAAHQAAADIODg6QysfFwdna0MhTbRn/UXIL/1t+Df9bdAr/WGgI/1pnB/9fbAb/Zm8F/3F2 - BP95fAL/f4EK/4KCFv9wcQL/dXQE/3d2BP+JhQT/mJQF/5GMBf+GfwX/hn8E/4N7BP+IfgT/iX4E/4V7 - A/+GfAT/fXQE/31yBP97cQT/d24E/3FrA/9uaQL/bWoC/21qAv9xbwP/bWwD/2RiA/9XVAD/sa6L5N/b - 3KiKiIbHAAAAjwAAAFoAAAA2AAAAGwAAADEODg6PysfFwdjYzsZRaRb/TW0G/1d6Cf9YcQb/VGUE/1dk - BP9caAP/ZGwB/25zAP92eQD/fX8K/31+Ev9sbQD/cXAB/3Z1Af+IhQL/lZEC/4uEAf+BewL/f3gB/393 - Av+EewH/hHoB/4N4Af+CeAH/eG8B/3lvAv93bgH/cmsC/21oAP9rZwD/a2cA/2tpAP9ubQD/ZmUA/2Bd - AP9STgD/rquJ497b3KeKiIbHAAAAjQAAAFgAAAA1AAAAGAAAACwQDw+MysbEv9LRx71WbR3+U3AP/1x7 - EP9ddQ7/WmoN/11pDv9jbQz/anEK/3N4C/96fAr/gYMX/36BGv9wcQj/dXQL/3t7DP+Niw3/l5QN/4qE - Df+Efg3/f3kM/4N8DP+IgAv/hnwM/4h/DP+CeQz/fXQM/310DP95cwz/dW8L/3JtCv9xbQn/cW0K/3Jx - Cv9xcAr/aWgL/2RiCv9WUgf/qaaH2tjV1aGMiojGAAAAiQAAAFIAAAAwAAAAFAAAACQLCwuCv7y4v9XR - y6PMzcDB0tTGzNTWx87V1sfO1NXHztXVx87V1cfP1tbHztjXx87Y18fO2dfIztfWx8zV1MXL1dPDytXU - w8nX1cPJ2NbDydbUw8jW08PI1dPDydbTw8nX1MPJ1tPDytfUxMrW1MTK1tPDytbTxMvW08TL1tTFy9bT - xcvV0sPL1NHDzNPRwszS0cLM0c/CzNHOwszJx7vFxsK7sM3IxJmEgoDGAAAAewAAAEYAAAAoAAAADgAA - ABoAAABTaWhmx9jUzrLg3Nmr4t3br+Ld26/j3tuv497br+Pf26/i39uw4d/br+He26/h3duv4Nvart7a - 2Kzc2Nap29bTqNnV0qfY1NGn2NPRp9jV0abZ1NGm2tTRpdnV0abZ1NKn2dTTqNrW1Kjb1tSo29bUqdzW - 1and2Nap3dnWqd3X1qra1tSq2NTTrNfU0qzX09Ks19PSrNfT0q3W0c+r0MvHp766tr0xMTC4AAAAVwAA - ADUAAAAeAAAACQAAABIAAAAnAAAAZzMzMqtPTk20TEtKs0tLSrRMS0q0TEtKtExLSrRMS0q0S0tKtEtL - SrRLS0q0S0tKs0tKSbNKSUmzS0pIs0pKSbNKSkizSkpIs0pKSLNLSUizS0pJsktKSbJLSkmzS0pJs0tK - SbNLSkmzTEpJs0xKSbNMSkmzTEpJs0xKSbNLSkmzS0pJs0tKSbNLSkmzS0pJs0tJSbNLSkm0TUxLth4d - HaMAAABeAAAAOAAAACUAAAATAAAABQAAAAsAAAAWAAAAIQAAAC0AAAA3AAAAOgAAADoAAAA6AAAAOgAA - ADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAA - ADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAAADsAAAA7AAAAOwAA - ADoAAAA7AAAAOgAAADMAAAArAAAAIQAAABUAAAALAAAAAgAAAAQAAAAJAAAADgAAABMAAAAXAAAAGQAA - ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA - ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA - ABkAAAAZAAAAGQAAABkAAAAZAAAAGAAAABcAAAATAAAADgAAAAgAAAAEAAAAAAAAAAEAAAACAAAABAAA - AAcAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAA - AAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAA - AAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAkAAAAHAAAABAAAAAIAAAABAAAAAAAA - 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA - AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA - 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA - AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA - 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA - AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA - 8gQAAAAAAADyBIAAAAAAAPIEKAAAABAAAAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - ABEAAABAAAAAVwAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABXAAAATAAA - AB8EBAQ+VlRQlXNybqFqamaeZ2dinWZkYJxqaGOdcG5pnXFwa550cm2feXRxn350c597cW+efHVwnU1K - RZgAAQFUFw4NUI+5uMNY4+b0Xt7b9Gbh2PRv59bzf/La9JP84vSx/+r0z//p9Nv/4vTP/930yv/Z9N// - ufKnp5OvAwEEZRkPDk6Eu7nPLtvX/zrbz/9F4Mn/VOrF/2Xuvf9y667/guWe/4nciP+K1Hf/jM5v/5bO - b/+v2HT/paeTuwQCBmIZDxBPirmy0D/Wwf9Q273/W9yt/2vZm/9x0IT/csZw/33Eav99tlT/fqdG/4Cb - QP+FjjH/mZAz/6SfjL0FBQhjGBAST5G6rtFOyqT/VsCS/1mze/9mrGv/ZqFZ/2WXRP9zmDT/bYIh/3V9 - HP96eBn/d28X/4p7Jf+kno3ABQYJYxkTFlCOq5vTPpFi/0eLV/9WlE//b51B/26NKv9tgBn/d4YX/3N+ - Ff+ChhX/gH0W/3ZuFP+FdyH/pZ+OwQYGCWMZFBhQkKiR1EuNRv9dlDr/bZgu/4CWHv98iBT/eoUR/4SQ - Ev+CihD/iYoP/4F9D/97cQ//hHYc/6Wgj8MGBgljGBQZUJasidReozD/Y40i/3OHGP+MlRX/gYgO/4iP - Df+RmA3/jZEM/42JCv+Cewr/gXQK/4l6F/+noo/EBgYJYxgUGlCXroXVWI8f/2J4Ff97iBD/jZIO/4OF - CP+TlQf/mJkI/5WSCP+PiAb/g3oF/31yBf+KfhP/p6OOxQYGCWMZFhtQlaOB1VeCFf9idRD/eoQK/4qM - C/+CggT/mJYF/5iVBv+WkAX/jIQF/4J4BP92bgP/h4AR/6ajjcYGBgljGRYcUJaif9ZYgA//YHAM/3d/ - CP+Ghwv/gIAE/5mVBv+UjQb/kogG/4h9BP99cwT/cGsB/4B+D/+joYzGBgYKYxoXHVCWoH7XU3cG/1tq - Bf9yeAL/fX4I/317AP+TjgH/ioIB/4p+Af+AdQD/dWwA/21pAP90cgn/oJ2MyAcHCmQaGB1RoaiK1maC - HP9teh3/gYYb/4mKIf+Nixr/m5Yb/5KKG/+Uihv/i4Eb/4F7Gv9+exf/fHoi/6WilMcHBwpjBgYHMXp5 - dKCcnZG2mZiNtJqZjbWZl4yzmJaIsJiWiLCYlYiwmZaJsZmVirGYlYqylpSJs5mXjbRqaGadAQEBPQAA - AAUAAAAeAAAAKgAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAArAAAAIwAA - AAoAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAA - rEEAAKxB - - - \ No newline at end of file diff --git a/OnTopReplica/OnTopReplica.csproj b/OnTopReplica/OnTopReplica.csproj index eff838d..9e73b56 100644 --- a/OnTopReplica/OnTopReplica.csproj +++ b/OnTopReplica/OnTopReplica.csproj @@ -100,12 +100,6 @@ - - Form - - - AboutForm.cs - Form @@ -235,10 +229,6 @@ - - AboutForm.cs - Designer - GroupSwitchPanel.cs diff --git a/OnTopReplica/SidePanels/AboutPanel.Designer.cs b/OnTopReplica/SidePanels/AboutPanel.Designer.cs index 4b1ee79..0e5ce74 100644 --- a/OnTopReplica/SidePanels/AboutPanel.Designer.cs +++ b/OnTopReplica/SidePanels/AboutPanel.Designer.cs @@ -100,6 +100,7 @@ this.buttonUpdate.Text = global::OnTopReplica.Strings.AboutUpdatesCheckNow; this.buttonUpdate.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; this.buttonUpdate.UseVisualStyleBackColor = true; + this.buttonUpdate.Click += new System.EventHandler(ButtonUpdate_click); // // lblUpdateDisclaimer // diff --git a/OnTopReplica/SidePanels/AboutPanel.cs b/OnTopReplica/SidePanels/AboutPanel.cs index 222e042..481c71d 100644 --- a/OnTopReplica/SidePanels/AboutPanel.cs +++ b/OnTopReplica/SidePanels/AboutPanel.cs @@ -7,9 +7,14 @@ using System.Text; using System.Windows.Forms; using VistaControls.Dwm; using System.Diagnostics; +using OnTopReplica.Update; +using VistaControls.TaskDialog; namespace OnTopReplica.SidePanels { partial class AboutPanel : SidePanel { + + UpdateManager _updater; + public AboutPanel() { InitializeComponent(); @@ -17,6 +22,10 @@ namespace OnTopReplica.SidePanels { thlabelVersion.Text = string.Format(Strings.AboutVersion, Application.ProductVersion); InternationalizeLinkLabel(linkAuthor, Strings.AboutAuthor, Strings.AboutAuthorContent); InternationalizeLinkLabel(linkCredits, Strings.AboutCreditsSources, Strings.AboutCreditsSourcesContent); + + //Updating + _updater = new UpdateManager(); + _updater.UpdateCheckCompleted += new EventHandler(UpdateCheckCompleted); } private void InternationalizeLinkLabel(LinkLabel label, string text, string linkText) { @@ -59,5 +68,30 @@ namespace OnTopReplica.SidePanels { #endregion + void ButtonUpdate_click(object sender, System.EventArgs e) { + progressUpdate.Visible = true; + + _updater.CheckForUpdate(); + } + + void UpdateCheckCompleted(object sender, UpdateCheckCompletedEventArgs e) { + this.Invoke(new Action(() => { + var topForm = this.TopLevelControl as Form; + + if (e.Success) { + _updater.HandleUpdateCheck(topForm, e.Information, true); + } + else { + var dlg = new TaskDialog(Strings.ErrorUpdate, Strings.ErrorUpdate, Strings.ErrorUpdateContentGeneric) { + CommonIcon = TaskDialogIcon.Stop, + CommonButtons = TaskDialogButton.OK + }; + dlg.Show(topForm); + } + + progressUpdate.Visible = false; + })); + } + } }