├── .gitattributes ├── .gitignore ├── .travis.yml ├── Bin └── sb.exe ├── LICENSE.txt ├── README.md └── Source ├── Main ├── Core │ ├── Cancelable.cs │ ├── Configuration.cs │ ├── ErrorForm.Designer.cs │ ├── ErrorForm.cs │ ├── ErrorForm.resx │ ├── ExplorerContextMenuAdder.cs │ ├── MessageBoxException.cs │ └── Program.cs ├── Main.csproj ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Tasks │ ├── Backup │ │ ├── BackupForm.Designer.cs │ │ ├── BackupForm.cs │ │ ├── BackupForm.resx │ │ └── Backuper.cs │ ├── Configure │ │ ├── ConfigureForm.Designer.cs │ │ ├── ConfigureForm.cs │ │ ├── ConfigureForm.resx │ │ └── Configurer.cs │ ├── EntryGate.cs │ ├── Install │ │ ├── InstallForm.Designer.cs │ │ ├── InstallForm.cs │ │ ├── InstallForm.resx │ │ └── Installer.cs │ ├── Restore │ │ ├── RestoreForm.Designer.cs │ │ ├── RestoreForm.cs │ │ ├── RestoreForm.resx │ │ └── Restorer.cs │ └── Uninstall │ │ ├── UninstallForm.Designer.cs │ │ ├── UninstallForm.cs │ │ ├── UninstallForm.resx │ │ └── Uninstaller.cs ├── bin │ └── Release │ │ └── Main.vshost.exe.manifest └── bookmarks.ico └── SimpleBackup.sln /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Simple Backup - project specific. 3 | ################# 4 | 5 | .svn/ 6 | Deploy/ 7 | 8 | Source/TestConsole/Bin/ 9 | Source/TestConsole2/Bin/ 10 | Source/UnitTests/Bin/ 11 | Source/Main/bin/ 12 | 13 | sb.vshost.exe 14 | sb.vshost.exe.manifest 15 | 16 | 17 | ################# 18 | ## Eclipse 19 | ################# 20 | 21 | *.pydevproject 22 | .project 23 | .metadata 24 | tmp/ 25 | *.tmp 26 | *.bak 27 | *.swp 28 | *~.nib 29 | local.properties 30 | .classpath 31 | .settings/ 32 | .loadpath 33 | 34 | # External tool builders 35 | .externalToolBuilders/ 36 | 37 | # Locally stored "Eclipse launch configurations" 38 | *.launch 39 | 40 | # CDT-specific 41 | .cproject 42 | 43 | # PDT-specific 44 | .buildpath 45 | 46 | 47 | ################# 48 | ## Visual Studio 49 | ################# 50 | 51 | ## Ignore Visual Studio temporary files, build results, and 52 | ## files generated by popular Visual Studio add-ons. 53 | 54 | # User-specific files 55 | *.suo 56 | *.user 57 | *.sln.docstates 58 | 59 | # Build results 60 | 61 | [Dd]ebug/ 62 | x64/ 63 | [Bb]uild/ 64 | [Oo]bj/ 65 | 66 | # MSTest test Results 67 | [Tt]est[Rr]esult*/ 68 | [Bb]uild[Ll]og.* 69 | 70 | *_i.c 71 | *_p.c 72 | *.ilk 73 | *.meta 74 | *.obj 75 | *.pch 76 | *.pgc 77 | *.pgd 78 | *.rsp 79 | *.sbr 80 | *.tlb 81 | *.tli 82 | *.tlh 83 | *.tmp 84 | *.tmp_proj 85 | *.log 86 | *.vspscc 87 | *.vssscc 88 | .builds 89 | *.pidb 90 | *.log 91 | *.scc 92 | 93 | # Visual C++ cache files 94 | ipch/ 95 | *.aps 96 | *.ncb 97 | *.opensdf 98 | *.sdf 99 | *.cachefile 100 | 101 | # Visual Studio profiler 102 | *.psess 103 | *.vsp 104 | *.vspx 105 | 106 | # Guidance Automation Toolkit 107 | *.gpState 108 | 109 | # ReSharper is a .NET coding add-in 110 | _ReSharper*/ 111 | *.[Rr]e[Ss]harper 112 | 113 | # TeamCity is a build add-in 114 | _TeamCity* 115 | 116 | # DotCover is a Code Coverage Tool 117 | *.dotCover 118 | 119 | # NCrunch 120 | *.ncrunch* 121 | .*crunch*.local.xml 122 | 123 | # Installshield output folder 124 | [Ee]xpress/ 125 | 126 | # DocProject is a documentation generator add-in 127 | DocProject/buildhelp/ 128 | DocProject/Help/*.HxT 129 | DocProject/Help/*.HxC 130 | DocProject/Help/*.hhc 131 | DocProject/Help/*.hhk 132 | DocProject/Help/*.hhp 133 | DocProject/Help/Html2 134 | DocProject/Help/html 135 | 136 | # Click-Once directory 137 | publish/ 138 | 139 | # Publish Web Output 140 | *.Publish.xml 141 | *.pubxml 142 | 143 | # NuGet Packages Directory 144 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 145 | #packages/ 146 | 147 | # Windows Azure Build Output 148 | csx 149 | *.build.csdef 150 | 151 | # Windows Store app package directory 152 | AppPackages/ 153 | 154 | # Others 155 | sql/ 156 | *.Cache 157 | ClientBin/ 158 | [Ss]tyle[Cc]op.* 159 | ~$* 160 | *~ 161 | *.dbmdl 162 | *.[Pp]ublish.xml 163 | *.pfx 164 | *.publishsettings 165 | 166 | # RIA/Silverlight projects 167 | Generated_Code/ 168 | 169 | # Backup & report files from converting an old project file to a newer 170 | # Visual Studio version. Backup files are not needed, because we have git ;-) 171 | _UpgradeReport_Files/ 172 | UpgradeLog*.XML 173 | UpgradeLog*.htm 174 | 175 | # SQL Server files 176 | App_Data/*.mdf 177 | App_Data/*.ldf 178 | 179 | ############# 180 | ## Windows detritus 181 | ############# 182 | 183 | # Windows image file caches 184 | Thumbs.db 185 | ehthumbs.db 186 | 187 | # Folder config file 188 | Desktop.ini 189 | 190 | # Recycle Bin used on file shares 191 | $RECYCLE.BIN/ 192 | 193 | # Mac crap 194 | .DS_Store 195 | 196 | 197 | ############# 198 | ## Python 199 | ############# 200 | 201 | *.py[co] 202 | 203 | # Packages 204 | *.egg 205 | *.egg-info 206 | dist/ 207 | build/ 208 | eggs/ 209 | parts/ 210 | var/ 211 | sdist/ 212 | develop-eggs/ 213 | .installed.cfg 214 | 215 | # Installer logs 216 | pip-log.txt 217 | 218 | # Unit test / coverage reports 219 | .coverage 220 | .tox 221 | 222 | #Translations 223 | *.mo 224 | 225 | #Mr Developer 226 | .mr.developer.cfg 227 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: csharp 2 | solution: Source/SimpleBackup.sln -------------------------------------------------------------------------------- /Bin/sb.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UweKeim/SimpleBackup/48e9acc08066c8505e6edc1da4e1429e5c379893/Bin/sb.exe -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Uwe Keim http://uwe.co 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Simple Backup 2 | 3 | A Windows Explorer Context Menu extension to backup and restore folders to temporary storage. 4 | 5 | ![Explorer Context Menu](http://i.imgur.com/8QFdg8J.png) 6 | 7 | ## Introduction 8 | 9 | For testing purposes of our [CMS](http://www.zeta-producer.com) I often do the following steps: 10 | 11 | 1. Copy a whole folder from somewhere onto my local PC. 12 | 1. Do some (modifying) operations on this folder (during my tests). 13 | 1. Delete the folder (after the tests). 14 | 1. Start from item 1. 15 | 16 | To simplify steps 3. and 4., I developed this Simple Backup extensions. 17 | 18 | ## Using the application 19 | 20 | The application consists of one single executable file. Download the file and double-click it to install. 21 | 22 | You're done! 23 | 24 | There are now two new context menu entries "Backup" and "Restore" when you right-click a _folder_ in Windows Explorer: 25 | 26 | - The "Backup" option creates a backup. 27 | - The "Restore" copies back a previously created backup. 28 | 29 | To uninstall, go to Windows Control Panel and select "Simple Backup". 30 | 31 | ## History 32 | 33 | * *2015-05-30* - First release to GitHub. 34 | -------------------------------------------------------------------------------- /Source/Main/Core/Cancelable.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | using System; 4 | using System.ComponentModel; 5 | 6 | public enum CancelMode 7 | { 8 | Continue, 9 | Cancel 10 | } 11 | 12 | public delegate CancelMode Cancelable(object userState); 13 | 14 | public static class CancelHelper 15 | { 16 | private const string Magic = @"3472389472389"; 17 | 18 | public static void CheckThrowCancel(Cancelable cancelable, object userState = null) 19 | { 20 | if (cancelable != null && cancelable(userState) == CancelMode.Cancel) 21 | { 22 | throw new OperationCanceledException(Magic); 23 | } 24 | } 25 | 26 | public static void CheckThrowCancel(BackgroundWorker bw) 27 | { 28 | if (bw != null && bw.IsBusy && bw.CancellationPending) 29 | { 30 | throw new OperationCanceledException(Magic); 31 | } 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Source/Main/Core/Configuration.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | internal sealed class Configuration 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /Source/Main/Core/ErrorForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | partial class ErrorForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.errorLogTextBox = new System.Windows.Forms.TextBox(); 34 | this.quitLink = new System.Windows.Forms.LinkLabel(); 35 | this.buttonContinue = new System.Windows.Forms.Button(); 36 | this.panel1.SuspendLayout(); 37 | this.SuspendLayout(); 38 | // 39 | // panel1 40 | // 41 | this.panel1.Controls.Add(this.errorLogTextBox); 42 | this.panel1.Controls.Add(this.quitLink); 43 | this.panel1.Controls.Add(this.buttonContinue); 44 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 45 | this.panel1.Location = new System.Drawing.Point(0, 0); 46 | this.panel1.Name = "panel1"; 47 | this.panel1.Padding = new System.Windows.Forms.Padding(9); 48 | this.panel1.Size = new System.Drawing.Size(351, 238); 49 | this.panel1.TabIndex = 0; 50 | // 51 | // errorLogTextBox 52 | // 53 | this.errorLogTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 54 | | System.Windows.Forms.AnchorStyles.Left) 55 | | System.Windows.Forms.AnchorStyles.Right))); 56 | this.errorLogTextBox.BackColor = System.Drawing.SystemColors.Window; 57 | this.errorLogTextBox.Location = new System.Drawing.Point(12, 12); 58 | this.errorLogTextBox.Multiline = true; 59 | this.errorLogTextBox.Name = "errorLogTextBox"; 60 | this.errorLogTextBox.ReadOnly = true; 61 | this.errorLogTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 62 | this.errorLogTextBox.Size = new System.Drawing.Size(327, 173); 63 | this.errorLogTextBox.TabIndex = 1; 64 | // 65 | // quitLink 66 | // 67 | this.quitLink.ActiveLinkColor = System.Drawing.Color.Maroon; 68 | this.quitLink.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 69 | this.quitLink.LinkColor = System.Drawing.Color.Maroon; 70 | this.quitLink.Location = new System.Drawing.Point(160, 198); 71 | this.quitLink.Name = "quitLink"; 72 | this.quitLink.Size = new System.Drawing.Size(88, 28); 73 | this.quitLink.TabIndex = 2; 74 | this.quitLink.TabStop = true; 75 | this.quitLink.Text = "Exit"; 76 | this.quitLink.TextAlign = System.Drawing.ContentAlignment.MiddleRight; 77 | this.quitLink.VisitedLinkColor = System.Drawing.Color.Maroon; 78 | this.quitLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.quitLink_LinkClicked); 79 | // 80 | // buttonContinue 81 | // 82 | this.buttonContinue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 83 | this.buttonContinue.DialogResult = System.Windows.Forms.DialogResult.OK; 84 | this.buttonContinue.Location = new System.Drawing.Point(254, 198); 85 | this.buttonContinue.Name = "buttonContinue"; 86 | this.buttonContinue.Size = new System.Drawing.Size(85, 28); 87 | this.buttonContinue.TabIndex = 0; 88 | this.buttonContinue.Text = "Continue"; 89 | this.buttonContinue.UseVisualStyleBackColor = true; 90 | // 91 | // ErrorForm 92 | // 93 | this.AcceptButton = this.buttonContinue; 94 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 95 | this.ClientSize = new System.Drawing.Size(351, 238); 96 | this.Controls.Add(this.panel1); 97 | this.Font = new System.Drawing.Font("Segoe UI", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 98 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 99 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 100 | this.MaximizeBox = false; 101 | this.MinimizeBox = false; 102 | this.Name = "ErrorForm"; 103 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 104 | this.Text = "Error"; 105 | this.Load += new System.EventHandler(this.ErrorForm_Load); 106 | this.panel1.ResumeLayout(false); 107 | this.panel1.PerformLayout(); 108 | this.ResumeLayout(false); 109 | 110 | } 111 | 112 | #endregion 113 | 114 | private System.Windows.Forms.Panel panel1; 115 | private System.Windows.Forms.TextBox errorLogTextBox; 116 | private System.Windows.Forms.LinkLabel quitLink; 117 | private System.Windows.Forms.Button buttonContinue; 118 | } 119 | } -------------------------------------------------------------------------------- /Source/Main/Core/ErrorForm.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | using System; 4 | using System.Windows.Forms; 5 | 6 | public partial class ErrorForm : Form 7 | { 8 | private Exception _exception; 9 | 10 | public static DialogResult DoShow(Exception x) 11 | { 12 | IsErrorFormShowing = true; 13 | try 14 | { 15 | using (var form = new ErrorForm()) 16 | { 17 | form._exception = x; 18 | return form.ShowDialog(ActiveForm); 19 | } 20 | } 21 | finally 22 | { 23 | IsErrorFormShowing = false; 24 | } 25 | } 26 | 27 | public ErrorForm() 28 | { 29 | InitializeComponent(); 30 | } 31 | 32 | public static bool IsErrorFormShowing { get; private set; } 33 | 34 | private void ErrorForm_Load(object sender, EventArgs e) 35 | { 36 | errorLogTextBox.Text = _exception.Message; 37 | } 38 | 39 | private void quitLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 40 | { 41 | Application.Exit(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Source/Main/Core/ErrorForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | 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 249 | IgAAAAAAAAAAAAAAAAAAIrIiOTo6OjACIgAAAAAAAAAAAAAAAAADkyIrIiOjIjoCIgAAAAAAAAAAAAAA 250 | AAACsjkyIrIjk6ACIgAAAAAAAAAAAAAAAACyI6MrIyI6MjACIgAAAAAAAAIAAAIAAAAjKjIiOTOjIgAi 251 | IgAAAAAAACIgACIgAAOjoyKyIikysgAiIgAAAAAAACIgACIgAAIyI5MiKyMiIAIiIgAAAAAAACIgACIg 252 | ACOSOjo7IiIrIAIiIgAAAAAAACIgACIgALIrIjIiMrIyACIiIgAAAAAAACIgACIgAiIyOjk6OTKTACIi 253 | IgAAAAAAACIgACIgCyOTo6MjIiIwAiIiIgAAAAAAACIgACIgAjo6MiOisisgAiIiIgAAAAAAACIgACIg 254 | KyIjIrIjIjIAIiIiIgAAAAAAACIgAiIgIjoykyMisisAIiIiIgAAAAAAACIgAiIAkyI6MikyMiACIiIi 255 | IgAAAAAAACIgAiICI5OjKyI5OTACIiIiIgAAAAAAACIgIiALIrIjoysiIwAiIiIiIgAAAAAAACIgIiAD 256 | oyI5MiIrIgIiIiIiIgAAAAAAAiICIiAiI6OjIrIyMAIiIiIiIgAAAAAAAiIiIgCyOjIjoyo6ICIiIiIi 257 | IgAAAAAAAiIiIgIjkwKyI6MiACIiIiIiIgAAAAAAAiIiIAsiAAACOTIrAiIiIiIiIgAAAAAAAiIiICMi 258 | AiICIjkwAiIAAAIiIgAAAAAAAiIiACKwAiILI6MgAiIAIAIiIgAAAAAAAiIiAiMgIiICOjIAIiICIgIi 259 | IgAAAAAAAiIgCyIAIiADk6MAIiICIgIiIgAAAAAAAiIgAisCIiAiIyAAIiICIgIiIgAAAAAAAiIgAAAC 260 | IgArIiAgIiICIgIiIgAAAAAAAiIgAAAiIgIjKwAgIiICIgIiIgAAAAAAACIiICIiIAsiIgIgAiICIgIi 261 | IgAAAAAAAAIiIiIiAAI7IAIgAiACIgIiIAAAAAAAAAAiIiIgAAAAACIgAAACIgAAAAAAAAAAAAAAIiAA 262 | AAAAAiIiAAAiIAAAAAAAAAAAAAAAAAAAAAAAAiIiIAIiIAAAAAAAAAAAAAAAAAAAAAAAACIiIiIiAAAA 263 | AAAAAAAAAAAAAAAAAAAAAAAiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiAAAAAAAAAAAAAAAAAAAAAA 264 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 265 | AAAAAP///////wAA////////AAD////f//8AAP///wcAfwAA////AcA/AAD///4AcD8AAP///gAcPwAA 266 | ///8AAQ/AAD///wABj8AAP//+AACPwAA///4AAY/AAD///AABj8AAP778AAMPwAA/HHgAAw/AAD8ceAA 267 | GD8AAPxxwAAYPwAA/HHAADA/AAD8cYAAMD8AAPxxgABgPwAA/HGAAGA/AAD8cQAAwD8AAPxhAADAPwAA 268 | /GMAAYA/AAD8YgABgD8AAPxGAAMAPwAA/EYAAgA/AAD4hAAGAD8AAPgMAAQAPwAA+AggDAA/AAD4GPgI 269 | AD8AAPgQiBj4PwAA+DGIGNg/AAD4IQgwiD8AAPhjGDCIPwAA+GIQcIg/AAD4fjBQiD8AAPh8INCIPwAA 270 | /BBgmIg/AAD+AOGZiH8AAP8B/x+P/wAA/8f+Dx//AAD///4GH/8AAP///wA//wAA////wH//AAD////x 271 | //8AAP///////wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAA 272 | AAAAAAAAAAAAAAAA////AICAgADAwMAAAACAAAAA/wAAgIAAAP//AACAAAAA/wAAgIAAAP//AACAAAAA 273 | /wAAAIAAgAD/AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIjACIiIAAA 274 | AAAAAAAAAAIisjIAIiIAAAAAAAAAAAACsiIikwIiAAAAAAAAAAAAoyIysjIwIgAAAAAAAAAAADIrKjIi 275 | kCIAAAAAAAAAAAo5MiMisjAiAAAAACAAAgADIjkyoyICIgAAAAAiACIAIisiOTKyAiIAAAAAIgAiALMj 276 | o6MiICIiAAAAACIAIgIpOjoyKyAiIgAAAAAiACIDoyIyOjICIiIAAAAAIgAiAiOjk6OTAiIiAAAAACIC 277 | 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 347 | mZmZAIuLiwCUpXMAqqqAAJ2xdgCionQAkpKSAIWFhQCYqHcAiIiIAI6OjgCWqXQAlqV4AJildQCCgoIA 348 | mad0AJandgCVqXYAlaV1AJendACYpncAf39/AIGBgQCDg4MAhISEAIaGhgCHh4cAiYmJAJeneACWqHUA 349 | l6h2AJindQCXpnUAlqZ3AJiodgCXqHcAl6d1AJindgCWp3UAl6d2AJimdQCXp3cAlqd3AJimdgCWpnUA 350 | l6Z2AJemdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 351 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 352 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 353 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 354 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 355 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 356 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 357 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 358 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 359 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 360 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 361 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 362 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 363 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 364 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 365 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 366 | AAAAAAAAAAAdMjIyKQAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIy 367 | MjIpAAAAIQQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcyMjIyMjIyMjIAAAAEBAQE 368 | BAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMjIyMjIyMjIyMgAAAAQEBAQAAAAAAAAAAAAA 369 | AAAAAAAAAAAAAAAAAAAAAAAANzIyMjIyMjIyMjIyMjIyAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 370 | AAAAAAAAMjIyMjIyMjIyMjIyMjIyAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3MjIyMjIy 371 | MjIyMjIyMjIyMQAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIyMjIyMjIyMjIyMjIyAAAE 372 | BAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcyMjIyMjIyMjIyMjIyMjIbAAAEBAQAAAAAAAAAAAAA 373 | AAAAIAAAAAAABAAAAAAAADIyMjIyMjIyMjIyMjIyMjIAAAQEBAQAAAAAAAAAAAAAAAAEBAQAAAAgIAQA 374 | AAAANzIyMjIyMjIyMjIyMjIyMhsAAAQEBAQAAAAAAAAAAAAAAAAEBAQAAAAgBAQAAAAAGzIyMjIyMjIy 375 | MjIyMjIyMgAABAQEBAQAAAAAAAAAAAAAAAAEBAQAAAAgBAQAAAA3MjIyMjIyMjIyMjIyMjIyOAAABAQE 376 | BAQAAAAAAAAAAAAAAAAEBAQAAAAgBAQAAAAbMjIyMjIyMjIyMjIyMjIyAAAEBAQEBAQAAAAAAAAAAAAA 377 | AAAEBAQAAAAgIAQAADIyMjIyMjIyMjIyMjIyMjI4AAAEBAQEBAQAAAAAAAAAAAAAAAAEBAQAAAAgBAQA 378 | ADIyMjIyMjIyMjIyMjIyMjIAAAQEBAQEBAQAAAAAAAAAAAAAAAAEBCAAAAAEBCAAADIyMjIyMjIyMjIy 379 | MjIyMjgAAAQEBAQEBAQAAAAAAAAAAAAAAAAEBAQAAAAEBAQAGzIyMjIyMjIyMjIyMjIyMgAABAQEBAQE 380 | BAQAAAAAAAAAAAAAAAAEBAQAACAgBCEAMjIyMjIyMjIyMjIyMjIyLwAABAQEBAQEBAQAAAAAAAAAAAAA 381 | AAAEBAQAAAQEBAAAMjIyMjIyMjIyMjIyMjIyAAAEBAQEBAQEBAQAAAAAAAAAAAAAAAAEBAQAAAQEBAA3 382 | MjIyMjIyMjIyMjIyMjIvAAAEBAQEBAQEBAQAAAAAAAAAAAAAAAAEBAQABAQEAAAyMjIyMjIyMjIyMjIy 383 | MjIAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAEBCAABAQEAAAyMjIyMjIyMjIyMjIyMi8ABAQEBAQEBAQE 384 | BAQAAAAAAAAAAAAAACAgBAAEBAQEADIyMjIyMjIyMjIyMjIyMgAABAQEBAQEBAQEBAQAAAAAAAAAAAAA 385 | ACAEBAQEBAQAADIyMjIyMjIyMjIyMjIyMgAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAQEBAQEBCAAHTIy 386 | MisAMjIyMjIyMjIyAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAACAEIAQEBAAAMjIyAAAAAAA0MjIyMjIy 387 | ACEEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAQEBAQEBAA3LzIpACAgBAAeODIyMjIAAAQEBAAAAAAAIAQE 388 | BAQAAAAAAAAAAAAAAAQEBAQgAAAyMjIAAAQEBAAuMjIyMjIAAAQEIAAABAAAICAEBAQAAAAAAAAAAAAA 389 | AAQEBAQgADcyMjIAIAQEBAArMjIyMgAAIAQEBAAgICAAIAQEBAQAAAAAAAAAAAAAAAQEBAQAADIyMgAA 390 | BAQEAAAyMjIyOQAAIAQEBAAgBAQAIAQEBAQAAAAAAAAAAAAAAAQEBCAAADIyLQAgIAQEAC8yMjIyAAAA 391 | IAQEBAAgBAQAIAQEBAQAAAAAAAAAAAAAACAgBAQAAAAAAAAEBAQAADIyMjI5AAQABAQEBAAgBAQAIAQE 392 | BAQAAAAAAAAAAAAAACAEBAQAAAAAACAEBCAANy8yMjIAACAABAQEBAAgBAQAIAQEBAQAAAAAAAAAAAAA 393 | AAAgBAQgBAAEBAQEBAAAMjIyMjAABAQAAAQEIQAEBAQAICAEBAQAAAAAAAAAAAAAAAAAIAQEBAQEBAQE 394 | AAAANDIyMgAAIAQAAAQEAAAEBCAAIAQEBAAAAAAAAAAAAAAAAAAAAAQgBAQEBAQAAAAAAAAAAAAEBAQA 395 | AAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAQEBAQEAAAAAAQEBAAAAAAA 396 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEBAQEBAAABAQEIAAAAAAAAAAAAAAAAAAAAAAA 397 | AAAAAAAAAAAAAAAAAAAAAAAAAAAgIAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 398 | AAAAAAAAAAAAACAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 399 | BAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 400 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 401 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA 402 | ////3///AAD///8HAH8AAP///wHAPwAA///+AHA/AAD///4AHD8AAP///AAEPwAA///8AAY/AAD///gA 403 | Aj8AAP//+AAGPwAA///wAAY/AAD++/AADD8AAPxx4AAMPwAA/HHgABg/AAD8ccAAGD8AAPxxwAAwPwAA 404 | /HGAADA/AAD8cYAAYD8AAPxxgABgPwAA/HEAAMA/AAD8YQAAwD8AAPxjAAGAPwAA/GIAAYA/AAD8RgAD 405 | AD8AAPxGAAIAPwAA+IQABgA/AAD4DAAEAD8AAPgIIAwAPwAA+Bj4CAA/AAD4EIgY+D8AAPgxiBjYPwAA 406 | +CEIMIg/AAD4YxgwiD8AAPhiEHCIPwAA+H4wUIg/AAD4fCDQiD8AAPwQYJiIPwAA/gDhmYh/AAD/Af8f 407 | j/8AAP/H/g8f/wAA///+Bh//AAD///8AP/8AAP///8B//wAA////8f//AAD///////8AAP///////wAA 408 | ////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQD///8A 409 | gICAAKqqqgCcqnEAkpKSAIaUeQCJiYkAlKF5AJmZmQCOjoAAkqp5AJqoeQCEhIQAjo6OAJendACXonQA 410 | lqV4AJehewCCgoIAhoaGAIuLiwCYqnMAlah4AJmqdwCZqHUAmaZzAJimdgCUpncAl6h2AJeneACZpnkA 411 | lah2AH9/fwCBgYEAg4ODAIeHhwCZp3QAmKh3AJandQCXpnUAlqd3AJeodACYqHYAl6d1AJaodgCYpnUA 412 | l6d2AJandgCXp3cAl6Z2AJamdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 413 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 414 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 415 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 416 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 417 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 418 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 419 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 420 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 421 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 422 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 423 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 424 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 425 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 426 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 427 | AAAAAAAAAAAAAAAAKDMwMAAAAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAADEzMDAwMDAAAAMDAwMAAAAA 428 | AAAAAAAAAAAAAAAAAAAAKTEzMDAwMDA0AAMDAwAAAAAAAAAAAAAAAAAAAAAAADEzMDAwMDAwMDAwAAMD 429 | AAAAAAAAAAAAAAAAAAAAAAAAKTEzMDAwMDAwMDAAAwMAAAAAAAAAAAAAAAAAAAAAACgxMzAwMDAwMDAw 430 | MQADAwAAAAAAAAAAAwAAAAADAAAAKTEzMDAwMDAwMDAAIgMDAAAAAAAAAAAiAwAAIgMAACgxMzAwMDAw 431 | MDAwMQADAwMAAAAAAAAAACIDAAAiAwAAMzAwMDAwMDAwMDAAAwMDAwAAAAAAAAAAIgMAACIDACkwMDAw 432 | MDAwMDAwMwADAwMDAAAAAAAAAAADAwAAIgMAMDAwMDAwMDAwMDAAAwMDAwMAAAAAAAAAACIiAAADAwAw 433 | MDAwMDAwMDAwMwADAwMDAwAAAAAAAAAAAwMAIiIiADAwMDAwMDAwMDAAAwMDAwMDAAAAAAAAAAADIgAD 434 | AwAxMDAwMDAwMDAwMAADAwMDAwMAAAAAAAAAAAMDAAMiADAwMDAwMDAwMDAAAwMDAwMDAwAAAAAAAAAA 435 | AwMiAwAoMDAwMDAwMDAwMAADAwMDAwMDAAAAAAAAACIDIgMDADAwMDAwMDAwMDAAAwMDAwMDAwMAAAAA 436 | AAAAIgMiAwAAMDAAAAAwMDAwMAADAwMDAwMDAwAAAAAAAAAiAwMDADAwAAMDAC0wMDAAAwMDAAADAwMD 437 | AAAAAAAAACIDAyIAMDAAAyIAMDAwLQADAwADAwADAwMAAAAAAAAAIgMDADAwAAMDIgAwMDAAAAMDACID 438 | ACIDAwAAAAAAAAAiAwMAACgAAwMAHjAwLQAAIgMAIgMAIgMDAAAAAAAAAAAiAwAAAAMDAwAwMDAAIgAi 439 | AwAiAwAiAwMAAAAAAAAAACIDAwMDAwMAMTAwHAADAAMDAAMDAAMDAAAAAAAAAAAAAAADAwMiAAAAAAAA 440 | IgMAAAAAIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMAAAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAA 441 | AAAAACIiAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMAAAAAAAAAAAAAAAAAAAAAAAAA 442 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///// 443 | ////////DB///gMP//4Aj//8AE///ABP//gAT/e4AI/zMACP8zABD/MgAQ/zIAIP8yACD/IgBA/yQAQP 444 | 8kAID/CACA/ggBAP4ZwQD+EkIw/hJCSP4kRkj+NIZI/ziKSP8BCkn/w/PP///xn///8B////x/////// 445 | /////ygAAAAYAAAAMAAAAAEACAAAAAAAoAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAP///wD//wAA 446 | gICAAJiodgCZmZkAiZJ7AJGeewCHh4cAiIh7AISIgACbpnoAg4ODAIaPfQCSonkAl6R1AJWmdwCVqXYA 447 | lqd1AJKfeQCYpnYAf39/AIGBgQCCgoIAhoaGAJendwCRoXoAl6h1AJaodgCYpXUAlqZ2AJeodgCWqHUA 448 | mKd2AJendQCXp3YAlqd2AJandwCXpnYAlqZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 449 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 450 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 451 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 452 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 453 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 454 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 455 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 456 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 457 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 458 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 459 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 460 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 461 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 462 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 463 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECUAAAAEAAQAAAAAAAAAAAAAAAAAAAAAJyQkJAAABAQEAAAA 464 | AAAAAAAAAAAAAAAgJCQkJCQmAAQEAAAAAAAAAAAAAAAAAAAnJCQkJCQkJAQEAAAAAAAAAAAAAAAAACAk 465 | JCQkJCQkEwQEAAAAAAAABAAAFgAAABMkJCQkJCQkABYEAAAAAAAABAAAFgAAJCQkJCQkJCQaBAQEAAAA 466 | AAAABAAAFgQAJCQkJCQkJCQAFgQEAAAAAAAABAAABBYlJCQkJCQkJB8EBAQEAAAAAAAABBcABAAkJCQk 467 | JCQkJAAWBAQEAAAAAAAABAAWFgAkJCQkJCQkHwQEBAQEAAAAAAAABAAEBBwkJCQkJCQkABYEBAQEAAAA 468 | AAAABAQEACUkJCQkJCQgFgQEBAQEAAAAAAAWFhYWACQgACQkJCQAFgQEBAQEAAAAAAAWBBYABSUABAAk 469 | JCAABAAAFgQEAAAAAAAWBAQAJAAEBBUkJAAEBAAEAAQEAAAAAAAWBAQAJAAWACQkAAAEAAQEAAQEAAAA 470 | AAAABAQAAAQEACQlAAQEBAAWAAQEAAAAAAAAAAQEBAQAACMABAQAAAQEAAQAAAAAAAAAAAAAAAAAAAAA 471 | BAQAAAQEAAAAAAAAAAAAAAAAAAAAAAAABBYEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 472 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP/zrwD/8McA/+AnAP/gBwD/wAcA7cAnAO2ABwDsgEcA 473 | 7AAHAOUAhwDpAAcA6AEHAOIABwDCQgcAxKLHAMUEpwDFTScA5kinAPDTLwD/8z8A//B/AP///wD///8A 474 | KAAAABAAAAAgAAAAAQAIAAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEA////ANSZPACAgIAA 475 | l6d2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 476 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 477 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 478 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 479 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 480 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 481 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 482 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 483 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 484 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 485 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 486 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 487 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 488 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 489 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 490 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 491 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 492 | AAAAAAAAAAUFBQAABAQAAAAAAAAAAAAFBQUFAAQEAAAAAAAAAAAFBQUFBQUABAAAAAQAAAQABQUFBQUF 493 | AAQAAAAEAAAEAAUFBQUFAAQEAAAABAAEAAAFBQUFBQAEBAAAAAQABAAFBQUFBQAEBAQAAAAEAAQABQUF 494 | BQUABAQEAAAABAQABQUFBQUABAQEBAAAAAQEBQUABQUFAAQABAQAAAAEAAAABAAFAAQAAAAEAAAABAQA 495 | BAAFBQAABAQABAAAAAAEBAAAAAAEAAAEAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAQEBAAAAAAA 496 | //8AAP4zAAD+EwAA/AsAALQLAAC0EwAArBMAAKgjAACoIwAAkEMAAIRTAAC6uwAAlMsAAM9vAAD/bwAA 497 | /x8AAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAKIpJREFUeNrtXXlgVNXV/503k8kC 498 | hE0Frda1LrRaxa2LbRVr1dqqbT8jUIu1KotL1AAJS5K5LwECBLcohADukmBsK22/WrVVaGu1rdYVU0Q/ 499 | ilpZBSGQfead74+MrQt5b2bumzcvM+f3XzL33Xfffef87u+ee9+5gEAgEAgEAoFAIBAIBAKBQCAQCAQC 500 | gUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCASC9IOkCwSpgFLq80T0ZQDHW5Z1 501 | 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 669 | DQPf3PYrcXwhAEGG4Jbm2/JzI/lfZaLRFvgoYgwFwQChFcAmBl7t6eh89o6rbtktvSUQCAQCgUAgEAgE 670 | AoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQpwv8D2oske893xDsAAAAASUVORK5CYIIo 671 | AAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 672 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 673 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 674 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 675 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 676 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 677 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 678 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 679 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgL+ABJindlSWp3V8lqd3S4CAgAIA 680 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 681 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 682 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmWYFl6Z3u5endv+X 683 | p3b/l6d2/5eodtKYp3ZUgICAAoiIiA+AgIB+gICA7oCAgP+AgID/gICA/4CAgP+AgID/gICA8ICAgJKS 684 | kpIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 685 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY 686 | p3Zol6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6h20pindlSAgIACgICAEIGBgX+AgIDvgICA/4CAgP+A 687 | gID/gICA/4CAgP+AgICSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 688 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 689 | AAAAAAAAAKqqgAaXp3bhl6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3bRl6Z1U///AAGA 690 | gIAQgICAgYCAgPeAgID/gICA/4CAgP+AgIDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 691 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 692 | AAAAAAAAAAAAAAAAAAAAAAAAAJindmiXp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 693 | p3b/l6d2/5endtGXpnVT//8AAYKCgjuAgID3gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 694 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 695 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkrZtB5enduGXp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 696 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2qf//AAGAgICAgICA/4CAgP+AgID/AAAAAAAAAAAA 697 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 698 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl6h3aZendv+Xp3b/l6d2/5endv+X 699 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5and0uDg4MjgICA/4CAgP+A 700 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 701 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACStm0Hl6d24pendv+X 702 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5andXqA 703 | gIAEgICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 704 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX 705 | qHdpl6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 706 | p3b/l6d2/5endFGEhIQfgICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 707 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 708 | AAAAAAAAAJK2bQeXp3bil6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 709 | p3b/l6d2/5endv+Xp3b/lqd22aqqVQOBgYF3gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 710 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8BgYGBb39/f46AgIAUAAAAAAAAAAAAAAAAgICAEoCAgIyB 711 | gYFx////AQAAAAAAAAAAAAAAAJeod2mXp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 712 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/lqZ3XIuLiwuAgIDpgICA/4CAgP+AgID/AAAAAAAAAAAA 713 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgYFDgICA/4CAgP+AgICUAAAAAAAAAAAA 714 | AAAAf39/joCAgP+AgID/f39/SgAAAAAAAAAAkrZtB5enduKXp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 715 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Wp3bZqqpVA4GBgXWAgID/gICA/4CAgP+A 716 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIBMgICA/4CAgP+A 717 | gIC0AAAAAAAAAAAAAAAAgICAlICAgP+AgID/f39/bgAAAAAAAAAAmKZ2apendv+Xp3b/l6d2/5endv+X 718 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+WpndcgICADICAgOqA 719 | gID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC 720 | goI7gICA/4CAgP+AgIDFAAAAAAAAAAAAAAAAgICAiYCAgP+AgID/gYGBdwAAAACStm0Hl6d24pendv+X 721 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5emdtiq 722 | qlUDf39/doCAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 723 | AAAAAAAAAAAAAACCgoIrgICA/4CAgP+AgIDVAAAAAAAAAAAAAAAAgICAkYCAgP+AgID/gYGBcQAAAACY 724 | pnZql6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 725 | p3b/l6d2/5amd1yAgIAMgICA6oCAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 726 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAegICA/4CAgP+AgIDhAAAAAAAAAAAAAAAAf39/rICAgP+A 727 | gID/gYGBW5K2bQeXp3bjl6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 728 | p3b/l6d2/5endv+Xp3b/l6Z22KqqVQN/f392gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAA 729 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGhoYTgICA/4CAgP+AgIDrAAAAAAAAAAAA 730 | AAAAgICA14CAgP+AgID/goKCN5apdESXp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 731 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6h2W4CAgAyAgIDqgICA/4CAgP+AgID/gICA/4CAgP+A 732 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJiYkNgICA/4CAgP9/ 733 | f3/yAAAAAAAAAACAgIAUgICA/YCAgP9/f3/6gICACpiod3KXp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 734 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+XpnbYqqpVA4GBgXeAgID/gICA/4CAgP+A 735 | gID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA 736 | gIAKgICA/4CAgP+AgID0AAAAAAAAAACBgYFZgICA/4CAgP+AgIDGAAAAAJeod6yXp3b/l6d2/5endv+X 737 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+XqHZbgICADICAgOqA 738 | gID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 739 | AAAAAAAAAAAAAACJiYkNgICA/4CAgP+AgIDxAAAAAAAAAAB/f3+sgICA/4CAgP+BgYF9gL+ABJendu2X 740 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5enddeq 741 | qlUDgYGBd4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 742 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFhYUXgICA/4CAgP+AgIDpAAAAAICAgBKAgID3gICA/4CAgP+D 743 | g4Mplal2QZendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 744 | p3b/l6d2/5eodluAgIAMgICA64CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAA 745 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDg4MpgICA/4CAgP+AgIDZAAAAAICAgHCA 746 | gID/gICA/4CAgMsAAAAAl6d2mpendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 747 | p3b/l6d2/5endv+Xp3b/l6d116qqVQOBgYF3gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+A 748 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIBEgICA/4CAgP+A 749 | gIDAqqqqA4CAgNuAgID/gICA/4GBgWWionQLl6d28Jendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 750 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/lqd3WoCAgAyAgIDrgICA/4CAgP+AgID/gICA/4CAgP+A 751 | gID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACB 752 | gYFpgICA/4CAgP9/f3+egYGBU4CAgP+AgID/gICA7YuLiwuWpnVkl6d2/5endv+Xp3b/l6d2/5endv+X 753 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3XXqqpVA4CAgHiAgID/gICA/4CAgP+A 754 | gID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 755 | AAAAAAAAAAAAAAB/f3+YgICA/4CAgP+BgYFzgICAy4CAgP+AgID/gICAhf//AAGXp3bTl6d2/5endv+X 756 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Wp3daiYmJDYCAgOuA 757 | gID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 758 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIDNgICA/4CAgP+AgICJgICA/4CAgP+AgID1f39/FpildUqX 759 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endtaq 760 | qlUDgICAeICAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAA 761 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgAqAgID7gICA/4CAgPyAgIDUgICA/4CAgP9/ 762 | f3+QAAAAAJandsOXp3b/l6d2/5endvOXpnWHlqh1VZendn2Xp3bsl6d2/5endv+Xp3b/l6d2/5endv+X 763 | p3b/l6d2/5imdVmJiYkNgICA64CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+A 764 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fzaAgID/gICA/39/f/6A 765 | gID/gICA/4CAgPeEhIQbl6d4QJendv+Xp3b/l6d2+pmndDeAgIACg4ODJ4CAgASYpXUll6d38Zendv+X 766 | p3b/l6d2/5endv+Xp3b/l6d21qqqVQOBgYF5gICA/4CAgP+AgID/gICAz4CAgKOAgIDPgICA/4CAgP+A 767 | gID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGBgVmA 768 | gID/gICA/4CAgP+AgID/gICA/4CAgJIAAAAAl6d1v5endv+Xp3b/l6h2mwAAAAB/f3+ogICA/4CAgMAA 769 | AAAAmKd1lJendv+Xp3b/l6d2/5endv+Xp3b/mKZ1WYmJiQ2AgIDrgICA/4CAgP9/f39sAAAAAAAAAAAA 770 | AAAAf39/bICAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 771 | AAAAAAAAAIGBgW2AgID/gICA/4CAgP+AgID/f39/+oSEhB2WpnU/l6d2/5endv+Xp3b6l6d4IH9/fziA 772 | gID/gICA/4CAgPuSkpIHl6h3eJendv+Xp3b/l6d2/5endv+Xp3bWqqpVA4GBgW+AgID/gICA/39/f7wA 773 | AAAAgYGBb4CAgNiBgYFvAAAAAH9/f7yAgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 774 | AAAAAAAAAAAAAAAAAAAAAAAAAIGBgW+AgID/gICA/4CAgP+AgID/f39/qAAAAACXp3a2l6d2/5endv+X 775 | p3aaAAAAAICAgLeAgID/gICA/4CAgKMAAAAAmKd2tJendv+Xp3b/l6d2/5endv+YpnVZAAAAAICAgIOA 776 | gID/gICA/4CAgIMAAAAAf39/+ICAgP9/f3/4AAAAAICAgIOAgID/gICA/4CAgP+AgID/AAAAAAAAAAAA 777 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGBgV2AgID/gICA/4CAgP+AgID/gICATJeneCCX 778 | p3b9l6d2/5endvmXp3ggf39/OICAgP+AgID/gICA/H9/fyaVpXUwl6d2/pendv+Xp3b/l6d2/5emd9Wq 779 | qlUDAAAAAICAgIGAgID/gICA/4CAgIAAAAAAgICA/4CAgP+AgID/AAAAAICAgICAgID/gICA/4CAgP+A 780 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKCgjOAgID/gICA/4CAgP9/ 781 | f3/+gICADpSlcx+Xp3bcl6d2/5iodo8AAAAAf39/uICAgP+AgID/gICAogAAAACYqHavl6d2/5endv+X 782 | p3b/l6d2/5eod1iJiYkNAAAAAICAgICAgID/gICA/4CAgIAAAAAAgICA/4CAgP+AgID/AAAAAICAgICA 783 | gID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgN/ 784 | f3/ogICA/4CAgP+AgID7qqqqAwAAAACStm0Hl6d2XZ+fgAiAgIBMgICA/4CAgP+AgID8f39/JpeneDGX 785 | p3b+l6d2/5endv+Xp3b/l6Z31YCAgAKAgIB6AAAAAIGBgX+AgID/gICA/4CAgIAAAAAAgICA/4CAgP+A 786 | gID/AAAAAICAgICAgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 787 | AAAAAAAAAAAAAACAgICAgICA/4CAgP+AgID/gYGBZQAAAAAAAAAAAAAAAH9/fzSAgIDtgICA/4CAgP9/ 788 | f3+cAAAAAJendbCXp3b/l6d2/5endv+Xp3b/l6h3WImJiQ1/f3/sgICABICAgHyAgID/gICA/4CAgIAA 789 | AAAAgICA/4CAgP+AgID/AAAAAICAgICAgID/gICA/4CAgP+AgIDwAAAAAAAAAAAAAAAAAAAAAAAAAAAA 790 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLi4sLgICA2YCAgP+AgID/f39//oCAgKmBgYFngICAlICAgPeA 791 | gID/gICA/4CAgOKGhoYTlqd1PZendv6Xp3b/l6d2/5endv+Yp3bUgICAAoCAgHqAgID/h4eHEX9/f26A 792 | gID/gICA/4GBgXuAgIAEgICA/4CAgP+AgID8AAAAAH9/f4KAgID/gICA/4CAgP+AgICSAAAAAAAAAAAA 793 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/JICAgOGAgID/gICA/4CAgP+A 794 | gID/gICA/4CAgP+AgID/gICA64KCgi8AAAAAl6Z3Vpend+SXp3b/l6d2/5endumWpXgzh4eHEX9/f+yA 795 | gID/gICALIGBgUGAgIDwgICA/39/f1SAgIAigICA/4CAgP9/f3/mAAAAAICAgJWAgID/gICA8ICAgJKS 796 | kpIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaGhhWA 797 | gICqf39//oCAgP+AgID/gICA/4CAgP+AgIDFf39/JAAAAAAAAAAAAAAAAJK2bQeYpnVImKZ3TZ2xdg2O 798 | jo4JgICAtoCAgP+AgID/f39/XgAAAAAAAAAAAAAAAAAAAACBgYFpgICA/4CAgP+AgIC2AAAAAAAAAAAA 799 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 800 | AAAAAAAAAAAAAAAAAAAAgICAMICAgICAgICdgICAiICAgEL///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAA 801 | AAAAAAAAAICAgAiAgIDTgICA/4CAgP+AgID/gICAvv///wEAAAAAAAAAAIeHhxGAgIDggICA/4CAgP9/ 802 | f39oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 803 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 804 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIB4gICA/4CAgP+AgID/gICA/4CAgLR/f39ogYGBcYCAgNmA 805 | gID/gICA/39/f+iAgIAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 806 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 807 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Bf39/joCAgP+AgID/gICA/4CAgP+A 808 | gID/gICA/4CAgP+AgID/gICA/YCAgE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 809 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 810 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/f1iA 811 | gIDhgICA/4CAgP+AgID/gICA/4CAgP+AgIDxf39/WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 812 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 813 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 814 | AAAAAAAAAAAAAACZmZkFgYGBR4CAgIGAgICbf39/mICAgGqAgIAUAAAAAAAAAAAAAAAAAAAAAAAAAAAA 815 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 816 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 817 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 818 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 819 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 820 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 821 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 822 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 823 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 824 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 825 | AAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///9///wAA////BwB/AAD///8BwD8AAP///gBw 826 | PwAA///+ABw/AAD///wABD8AAP///AAGPwAA///4AAI/AAD///gABj8AAP//8AAGPwAA/vvwAAw/AAD8 827 | ceAADD8AAPxx4AAYPwAA/HHAABg/AAD8ccAAMD8AAPxxgAAwPwAA/HGAAGA/AAD8cYAAYD8AAPxxAADA 828 | PwAA/GEAAMA/AAD8YwABgD8AAPxiAAGAPwAA/EYAAwA/AAD8RgACAD8AAPiEAAYAPwAA+AwABAA/AAD4 829 | CCAMAD8AAPgY+AgAPwAA+BCIGPg/AAD4MYgY2D8AAPghCDCIPwAA+GMYMIg/AAD4YhBwiD8AAPh+MFCI 830 | PwAA+Hwg0Ig/AAD8EGCYiD8AAP4A4ZmIfwAA/wH/H4//AAD/x/4PH/8AAP///gYf/wAA////AD//AAD/ 831 | ///Af/8AAP////H//wAA////////AAD///////8AAP///////wAAKAAAACAAAABAAAAAAQAgAAAAAACA 832 | EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 833 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 834 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 835 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmqdw+YqHdPlqV4IgAAAAAAAAAAAAAAAAAAAAAA 836 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 837 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcqnESl6d24Zendv+Xp3b8l6d2opqoeSaC 838 | goI/gICAv4CAgP+AgID/gICA/4CAgOmAgIBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 839 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJend4WXp3b/l6d2/5endv+X 840 | p3b/l6d2/JendqKaqHkmgoKCP4CAgMOAgID/gICA/4CAgOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 841 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUoXkTl6Z28pendv+X 842 | p3b/l6d2/5endv+Xp3b/l6d2/5endvyWpnehl6F7G4CAgKqAgID/gICA/wAAAAAAAAAAAAAAAAAAAAAA 843 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJend4WX 844 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3bGg4ODJYCAgP+AgID/AAAAAAAAAAAA 845 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU 846 | oXkTl6Z28pendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endveZmZkFgICA/4CAgP8A 847 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 848 | AAAAAAAAAJandoaXp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/lqd2qIKCgj+A 849 | gID/gICA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLi4sLgICAqX9/f14AAAAAAAAAAIGBgVuA 850 | gICqiYmJDQAAAACUoXkTl6Z28pendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv2U 851 | pncrf39/uICAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/fzSAgID/gICAygAAAAAA 852 | AAAAgICAuoCAgP+BgYFFAAAAAJandoaXp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 853 | p3b/lqd2qIKCgjmAgID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf39/JICAgP+A 854 | gIDbAAAAAAAAAACAgICxgICA/4GBgU+ZpnMUl6Z28pendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 855 | p3b/l6d2/5endv2YqnMqgICAuYCAgP+AgID/gICA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/ 856 | f38WgICA/4CAgOkAAAAAAAAAAICAgMOAgID/gYGBQZemdYeXp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 857 | p3b/l6d2/5endv+Xp3b/l6Z2p4CAgDqAgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAA 858 | AAAAAAAAAICAgAyAgID/gICA8wAAAAD///8BgICA7YCAgP+EhIQdl6d235endv+Xp3b/l6d2/5endv+X 859 | p3b/l6d2/5endv+Xp3b/l6d2/5endv2YqnMqgICAuYCAgP+AgID/gICA/4CAgP8AAAAAAAAAAAAAAAAA 860 | AAAAAAAAAAAAAAAAAAAAkpKSB4CAgP9/f3/4AAAAAIKCgi+AgID/gICA5JKqeRWXp3b+l6d2/5endv+X 861 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6Z2p4CAgDqAgID/gICA/4CAgP+AgID/gICA/wAAAAAA 862 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAKgICA/4CAgPUAAAAAf39/goCAgP9/f3+amKZ1WZendv+X 863 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv2YqnMqgICAuoCAgP+AgID/gICA/4CAgP+A 864 | gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgBiAgID/f39/6KqqqgOAgIDhgICA/4CAgEKW 865 | p3atl6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2poCAgDqAgID/gICA/4CAgP+A 866 | gID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgoKCM4CAgP+AgIDQgICAUoCAgP9/ 867 | f3/al6J0FpendviXp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv2VqHYpgICAuoCAgP+A 868 | gID/gICA/4CAgP+AgID/gICA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgYFdgICA/4CAgKl/ 869 | f3/IgICA/39/f2yWp3V6l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2poKCgjuA 870 | gID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgJKA 871 | gID/f39/vICAgP+AgIDpjo6AEpendueXp3b/l6d2+5endueXp3b/l6d2/5endv+Xp3b/l6d2/5endvyV 872 | qHYpgICAuoCAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 873 | AAAAgICAxoCAgP9/f3/4gICA/39/f3aWp3drl6d2/5endtuXp3gghoaGE5imdkWXp3b5l6d2/5endv+X 874 | p3b/l6d2poKCgjuAgID/gICA/4CAgNWAgIDVgICA/4CAgP+AgID/gICA/wAAAAAAAAAAAAAAAAAAAAAA 875 | AAAAAAAAAAAAAACAgIDpgICA/4CAgP+AgIDrhpR5E5enduOXp3b/mKh2UoCAgImAgID9gICAPpendbCX 876 | p3b/l6d2/5endvyVqHYpgICAu4CAgP+AgIB8hISEHYSEhB2AgIB8gICA/4CAgP+AgID/AAAAAAAAAAAA 877 | AAAAAAAAAAAAAAAAAAAAAAAAAICAgPSAgID/gICA/39/f4KWqHZml6d2/5endtB/f38agICA9n9/f/6A 878 | gIAsl6d2wJendv+Xp3b/l6d1paqqqgOAgID/gICA/46OjgmAgIDrgICA646OjgmAgID/gICA/4CAgP8A 879 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICA4oCAgP+AgID/g4ODJ5endsWXp3b/l6d0UYCAgI+A 880 | gID/f39/rJWoeDWXp3b/l6d2/5endvyZpnko////AYCAgP+AgID/AAAAAICAgP+AgID/AAAAAICAgP+A 881 | gID/gICA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICpgICA/4CAgP2AgIACl6h0LJandXyA 882 | gIAigICA9oCAgP1/f38ul6h2tZendv+Xp3b/l6d1pYCAgDwAAAAAgICA/4CAgP8AAAAAgICA/4CAgP8A 883 | AAAAgICA/4CAgP+AgID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgD5/f3/+gICA/4GBgXWq 884 | qqoDf39/JoCAgNSAgID/gICAopmndDeXp3b/l6d2/5endvyZpnkof39/vICAgAR/f3/6gICA/wAAAACA 885 | gID/gICA/wAAAACAgID/gICA/4CAgOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICA 886 | gID/gICA/4CAgPSAgID9gICA/4CAgNKAgIAQlqd2hpendv6Xp3b/mKZ2ioCAgD6AgID/gICAGICAgNiA 887 | gIDqh4eHEYCAgP+AgIDzi4uLC4CAgP+AgIDpgICAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 888 | AAAAAAAAAIGBgVWAgIDYgICA/4CAgPV/f3+agICAEAAAAAAAAAAAmah1I5mmeSiAgIAsf39/3oCAgP+B 889 | gYFNAAAAAAAAAAB/f39agICA/39/f8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 890 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAQmZmZBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGBgW+A 891 | gID/gICA/4CAgNOAgIBOgYGBW4CAgOmAgID/gICAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 892 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 893 | AAAAAAAAAH9/f4KAgID9gICA/4CAgP+AgID/gICA/4CAgLOAgIACAAAAAAAAAAAAAAAAAAAAAAAAAAAA 894 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 895 | AAAAAAAAAAAAAAAAAAAAAAAAAICAgDCAgICPgICAuYCAgLSBgYFrgICABAAAAAAAAAAAAAAAAAAAAAAA 896 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 897 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 898 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 899 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 900 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////DB///gMP//4Aj//8AE// 901 | /ABP//gAT/e4AI/zMACP8zABD/MgAQ/zIAIP8yACD/IgBA/yQAQP8kAID/CACA/ggBAP4ZwQD+EkIw/h 902 | JCSP4kRkj+NIZI/ziKSP8BCkn/w/PP///xn///8B////x////////////ygAAAAYAAAAMAAAAAEAIAAA 903 | AAAAYAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 904 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 905 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAGXpnaEl6d2sZildUqA 906 | gIAEgYGBW4CAgICAgICAgICAfH9/fyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 907 | AAAAAAAAAAAAAAAAAAAAAAAAAJindlSXp3b/l6d2/5endv+Xp3bJlaZ3TYCAgGCAgIDdgICA/4CAgOAA 908 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAApeodtKX 909 | p3b/l6d2/5endv+Xp3b/l6d2/5and8iRnns6gICA3YCAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 910 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmKd2VJendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+X 911 | p3axgICAiYCAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA 912 | gIACl6h20pendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Wp3WLgICApYCAgP8AAAAAAAAAAAAAAAAA 913 | AAAAAAAAAIeHhxGAgIC/gICAKgAAAAB/f3+KgYGBbwAAAACWqHVVl6d2/5endv+Xp3b/l6d2/5endv+X 914 | p3b/l6d2/5endvWJkns4f39/+oCAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAICAgCKAgID/f39/XgAAAACA 915 | gIDHgICAuYCAgAKXp3bTl6d2/5endv+Xp3b/l6d2/5endv+Xp3b/l6d2/5end46AgICbgICA/4CAgP8A 916 | AAAAAAAAAAAAAAAAAAAAAAAAAICAgBKAgID/gYGBbQAAAACAgIDPgICAspaodVWXp3b/l6d2/5endv+X 917 | p3b/l6d2/5endv+Xp3b/l6d29YmSezh/f3/6gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAICAgAiA 918 | gID/gYGBd5mZmQWAgID1f39/jpandq2Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b/lqZ2jYCAgJuA 919 | gID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAICAgAaAgID/gYGBeYGBgUGAgID/gICAUpenduaX 920 | p3b/l6d2/5endv+Xp3b/l6d2/5endv+Xp3b1iZJ7OH9/f/qAgID/gICA/4CAgP8AAAAAAAAAAAAAAAAA 921 | AAAAAAAAAICAgBCAgID/gICAcH9/f55/f3/ykaF6QZendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endv+W 922 | pnaNgICAm4CAgP+AgID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAIKCgiuAgID/gYGBbYCAgPaA 923 | gICXl6h1mJendv+Xp3b/l6d2/5endv+Xp3b/l6d2/5endvWJkns4f39/+oCAgP+AgID/gICA/4CAgP8A 924 | AAAAAAAAAAAAAAAAAAAAAAAAAIGBgVmAgID/gICAsoCAgP2Gj305lqd29Jendv+Xp3b/l6d2/5endv+X 925 | p3b/l6d2/5eodox/f3+cgICA/4CAgP+AgID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAH9/f45/ 926 | f3/+gICA9H9/f6iWpneBl6d2/peodmySonk/l6d2wJendv+Xp3b/l6d29YmSezh/f3/6gICA84CAgNyA 927 | gID/gICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAICAgLGAgID/f39//oiIezyYqHbvlqd2rYCAgHiA 928 | gIDumKZ2RZendv+Xp3b/l6h2jH9/f5qAgIDugoKCN4CAgFJ/f3+KgICA/4CAgP8AAAAAAAAAAAAAAAAA 929 | AAAAAAAAAICAgLOAgID/gICAvZaodnWXp3b+kp95PYCAgO2AgICxmKZ2eZendv+Xp3b1m6Z6F4CAgMCA 930 | gIDAgICAfoCAgP2BgYFBgICA/4CAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAICAgIeAgID/gICAg5WpdkGX 931 | p3Z9gICAgX9/f/6EiIA+l6d265endv+XqHaMgICAIoCAgL+AgIC/gICAgICAgP+AgIBAgICA/4CAgP8A 932 | AAAAAAAAAAAAAAAAAAAAAAAAAIODgyOAgID1gICA2ICAgESAgIBwgICA+4CAgKSXqHZ7l6d2/5andvSJ 933 | kns4gICAgICAgLqAgIC+gICAgH9/f/6AgIBAgICA/4CAgOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACB 934 | gYFHgICA6oCAgP+AgID/gICAtYCAgAyWpnZQl6d1pZekdUyAgICtgICAooCAgEyBgYFVgICAooCAgOeD 935 | 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 962 | bwAA/28AAP8fAAA= 963 | 964 | 965 | -------------------------------------------------------------------------------- /Source/Main/Core/ExplorerContextMenuAdder.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | using System; 4 | using System.Reflection; 5 | using Microsoft.Win32; 6 | using Tasks.Install; 7 | 8 | internal static class ExplorerContextMenuAdder 9 | { 10 | public static void Register() 11 | { 12 | var key1 = Registry.CurrentUser.CreateSubKey(@"Software\Classes\Directory\shell\Simple Backup - Backup"); 13 | key1.SetValue(null, "Backup - [Simple Backup]"); 14 | 15 | var key2 = key1.CreateSubKey(@"command"); 16 | key2.SetValue(null, $@"""{Installer.InstallationExeFilePath}"" -b ""%1"""); 17 | 18 | key1.Close(); 19 | key2.Close(); 20 | 21 | // -- 22 | 23 | key1 = Registry.CurrentUser.CreateSubKey(@"Software\Classes\Directory\shell\Simple Backup - Restore"); 24 | key1.SetValue(null, "Restore - [Simple Backup]"); 25 | 26 | key2 = key1.CreateSubKey(@"command"); 27 | key2.SetValue(null, $@"""{Installer.InstallationExeFilePath}"" -r ""%1"""); 28 | 29 | key1.Close(); 30 | key2.Close(); 31 | 32 | // -- 33 | 34 | // http://stackoverflow.com/a/11821952/107625 35 | using (var key = Registry.CurrentUser.CreateSubKey( 36 | @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Simple Backup")) 37 | { 38 | var asm = Assembly.GetExecutingAssembly(); 39 | var v = asm.GetName().Version; 40 | 41 | key.SetValue(@"DisplayName", "Simple Backup"); 42 | key.SetValue(@"ApplicationVersion", v.ToString()); 43 | key.SetValue(@"Publisher", "Zeta Software GmbH"); 44 | key.SetValue(@"DisplayIcon", Installer.InstallationExeFilePath); 45 | key.SetValue(@"DisplayVersion", v.ToString(2)); 46 | key.SetValue(@"URLInfoAbout", "https://github.com/UweKeim/SimpleBackup"); 47 | key.SetValue(@"Contact", "info@zeta-producer.com"); 48 | key.SetValue(@"InstallDate", DateTime.Now.ToString(@"yyyyMMdd")); 49 | key.SetValue(@"UninstallString", $@"""{Installer.InstallationExeFilePath}"" -u"); 50 | } 51 | } 52 | 53 | public static void Unregister() 54 | { 55 | try 56 | { 57 | Registry.CurrentUser.DeleteSubKeyTree(@"Software\Classes\Directory\shell\Simple Backup - Backup"); 58 | } 59 | catch (Exception) 60 | { 61 | } 62 | 63 | try 64 | { 65 | Registry.CurrentUser.DeleteSubKeyTree(@"Software\Classes\Directory\shell\Simple Backup - Restore"); 66 | } 67 | catch (Exception) 68 | { 69 | } 70 | 71 | try 72 | { 73 | Registry.CurrentUser.DeleteSubKeyTree( 74 | @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Simple Backup"); 75 | } 76 | catch (Exception) 77 | { 78 | } 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /Source/Main/Core/MessageBoxException.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | using System; 4 | using System.Runtime.Serialization; 5 | 6 | [Serializable] 7 | public class MessageBoxException : Exception 8 | { 9 | public MessageBoxException() 10 | { 11 | } 12 | 13 | public MessageBoxException(string message) : base(message) 14 | { 15 | } 16 | 17 | public MessageBoxException(string message, Exception inner) : base(message, inner) 18 | { 19 | } 20 | 21 | protected MessageBoxException( 22 | SerializationInfo info, 23 | StreamingContext context) : base(info, context) 24 | { 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Source/Main/Core/Program.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Core 2 | { 3 | using System; 4 | using System.Diagnostics; 5 | using System.Threading; 6 | using System.Windows.Forms; 7 | using Tasks; 8 | 9 | internal static class Program 10 | { 11 | [STAThread] 12 | private static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | 17 | Application.ThreadException += applicationThreadException; 18 | Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 19 | AppDomain.CurrentDomain.UnhandledException += currentDomainUnhandledException; 20 | 21 | try 22 | { 23 | Application.Run(EntryGate.DecideForm()); 24 | } 25 | catch (Exception x) 26 | { 27 | HandleException(x); 28 | } 29 | } 30 | 31 | private static void applicationThreadException(object sender, ThreadExceptionEventArgs e) 32 | { 33 | HandleException(e.Exception); 34 | } 35 | 36 | private static void currentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e) 37 | { 38 | HandleException(e.ExceptionObject as Exception); 39 | } 40 | 41 | private static bool _insideHandleException; 42 | 43 | public static void HandleException( 44 | Exception exception) 45 | { 46 | Trace.TraceError( 47 | @"Exception occurred. {0}", 48 | exception.Message); 49 | 50 | if (!_insideHandleException) 51 | { 52 | _insideHandleException = true; 53 | try 54 | { 55 | var messageBoxException = exception as MessageBoxException; 56 | if (messageBoxException != null) 57 | { 58 | var mbx = messageBoxException; 59 | MessageBox.Show(null, mbx.Message, "Simple Backup", MessageBoxButtons.OK, MessageBoxIcon.Warning); 60 | return; 61 | } 62 | 63 | var cancel = exception as OperationCanceledException; 64 | if (cancel != null) return; 65 | 66 | // -- 67 | 68 | if (ErrorForm.IsErrorFormShowing) 69 | { 70 | Trace.TraceInformation( 71 | $@"Error form already showing, not showing again. {exception.Message}"); 72 | } 73 | else 74 | { 75 | var result = ErrorForm.DoShow(exception); 76 | 77 | if (result == DialogResult.Abort) 78 | { 79 | Process.GetCurrentProcess().Kill(); 80 | Application.Exit(); 81 | } 82 | } 83 | } 84 | finally 85 | { 86 | _insideHandleException = false; 87 | } 88 | } 89 | else 90 | { 91 | Trace.TraceError($@"Already inside 'HandleException()', not entering again. {exception.Message}"); 92 | } 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /Source/Main/Main.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1C72AA9A-A5A8-4D8F-BC6F-57E0328C3420} 8 | WinExe 9 | Properties 10 | SimpleBackup.Main 11 | sb 12 | v2.0 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | pdbonly 19 | true 20 | ..\..\Bin\ 21 | TRACE 22 | prompt 23 | 4 24 | 25 | 26 | bookmarks.ico 27 | 28 | 29 | OnBuildSuccess 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Form 44 | 45 | 46 | BackupForm.cs 47 | 48 | 49 | Form 50 | 51 | 52 | ConfigureForm.cs 53 | 54 | 55 | 56 | 57 | Form 58 | 59 | 60 | ErrorForm.cs 61 | 62 | 63 | 64 | Form 65 | 66 | 67 | InstallForm.cs 68 | 69 | 70 | 71 | 72 | Form 73 | 74 | 75 | RestoreForm.cs 76 | 77 | 78 | 79 | 80 | Form 81 | 82 | 83 | UninstallForm.cs 84 | 85 | 86 | BackupForm.cs 87 | 88 | 89 | ConfigureForm.cs 90 | 91 | 92 | ErrorForm.cs 93 | 94 | 95 | InstallForm.cs 96 | 97 | 98 | ResXFileCodeGenerator 99 | Resources.Designer.cs 100 | Designer 101 | 102 | 103 | True 104 | Resources.resx 105 | True 106 | 107 | 108 | RestoreForm.cs 109 | 110 | 111 | UninstallForm.cs 112 | 113 | 114 | SettingsSingleFileGenerator 115 | Settings.Designer.cs 116 | 117 | 118 | True 119 | Settings.settings 120 | True 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | if exist "$(SolutionDir)..\Deploy\Build\sign-bin.cmd" ( 129 | "$(SolutionDir)..\Deploy\Build\sign-bin.cmd" 130 | ) 131 | 132 | 139 | -------------------------------------------------------------------------------- /Source/Main/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Simple Backup")] 8 | [assembly: AssemblyDescription("Windows Explorer Context Menu extension to backup and restore folders to temporary storage")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("https://github.com/UweKeim/SimpleBackup")] 11 | [assembly: AssemblyProduct("Simple Backup")] 12 | [assembly: AssemblyCopyright("Copyright © 2015 Zeta Software GmbH")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("93d579a3-970c-4c05-a8ae-ac22c9725f4d")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.1.0.0")] 35 | [assembly: AssemblyFileVersion("1.1.0.0")] 36 | -------------------------------------------------------------------------------- /Source/Main/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34209 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SimpleBackup.Main.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleBackup.Main.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Source/Main/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Source/Main/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34209 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SimpleBackup.Main.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/Main/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Source/Main/Tasks/Backup/BackupForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Backup 2 | { 3 | partial class BackupForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BackupForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.progressBar = new System.Windows.Forms.ProgressBar(); 34 | this.buttonCancel = new System.Windows.Forms.Button(); 35 | this.processingBackgroundWorker = new System.ComponentModel.BackgroundWorker(); 36 | this.panel1.SuspendLayout(); 37 | this.SuspendLayout(); 38 | // 39 | // panel1 40 | // 41 | this.panel1.Controls.Add(this.progressBar); 42 | this.panel1.Controls.Add(this.buttonCancel); 43 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 44 | this.panel1.Location = new System.Drawing.Point(0, 0); 45 | this.panel1.Name = "panel1"; 46 | this.panel1.Padding = new System.Windows.Forms.Padding(9); 47 | this.panel1.Size = new System.Drawing.Size(304, 86); 48 | this.panel1.TabIndex = 0; 49 | // 50 | // progressBar 51 | // 52 | this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 53 | | System.Windows.Forms.AnchorStyles.Right))); 54 | this.progressBar.Location = new System.Drawing.Point(12, 12); 55 | this.progressBar.Name = "progressBar"; 56 | this.progressBar.Size = new System.Drawing.Size(280, 23); 57 | this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee; 58 | this.progressBar.TabIndex = 1; 59 | // 60 | // buttonCancel 61 | // 62 | this.buttonCancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom; 63 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; 64 | this.buttonCancel.Location = new System.Drawing.Point(109, 46); 65 | this.buttonCancel.Name = "buttonCancel"; 66 | this.buttonCancel.Size = new System.Drawing.Size(85, 28); 67 | this.buttonCancel.TabIndex = 0; 68 | this.buttonCancel.Text = "Cancel"; 69 | this.buttonCancel.UseVisualStyleBackColor = true; 70 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); 71 | // 72 | // processingBackgroundWorker 73 | // 74 | this.processingBackgroundWorker.WorkerReportsProgress = true; 75 | this.processingBackgroundWorker.WorkerSupportsCancellation = true; 76 | this.processingBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.processingBackgroundWorker_DoWork); 77 | this.processingBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.processingBackgroundWorker_RunWorkerCompleted); 78 | // 79 | // BackupForm 80 | // 81 | this.AcceptButton = this.buttonCancel; 82 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 83 | this.CancelButton = this.buttonCancel; 84 | this.ClientSize = new System.Drawing.Size(304, 86); 85 | this.Controls.Add(this.panel1); 86 | this.Font = new System.Drawing.Font("Segoe UI", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 87 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 88 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 89 | this.MaximizeBox = false; 90 | this.MinimizeBox = false; 91 | this.Name = "BackupForm"; 92 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 93 | this.Text = "Backup folder"; 94 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BackupForm_FormClosing); 95 | this.Load += new System.EventHandler(this.BackupForm_Load); 96 | this.Shown += new System.EventHandler(this.BackupForm_Shown); 97 | this.panel1.ResumeLayout(false); 98 | this.ResumeLayout(false); 99 | 100 | } 101 | 102 | #endregion 103 | 104 | private System.Windows.Forms.Panel panel1; 105 | private System.Windows.Forms.Button buttonCancel; 106 | private System.Windows.Forms.ProgressBar progressBar; 107 | private System.ComponentModel.BackgroundWorker processingBackgroundWorker; 108 | } 109 | } 110 | 111 | -------------------------------------------------------------------------------- /Source/Main/Tasks/Backup/BackupForm.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Backup 2 | { 3 | using System; 4 | using System.ComponentModel; 5 | using System.Windows.Forms; 6 | using Core; 7 | 8 | public partial class BackupForm : Form 9 | { 10 | private string _sourceFolderPath; 11 | 12 | public BackupForm() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | public void Initialize(string sourceFolderPath) 18 | { 19 | _sourceFolderPath = sourceFolderPath; 20 | } 21 | 22 | private void BackupForm_Load(object sender, EventArgs e) 23 | { 24 | CenterToScreen(); 25 | } 26 | 27 | private void BackupForm_Shown(object sender, EventArgs e) 28 | { 29 | processingBackgroundWorker.RunWorkerAsync(); 30 | } 31 | 32 | private void processingBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) 33 | { 34 | Backuper.Backup( 35 | _sourceFolderPath, 36 | userState => processingBackgroundWorker.CancellationPending ? CancelMode.Cancel : CancelMode.Continue); 37 | } 38 | 39 | private void processingBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 40 | { 41 | Hide(); 42 | if (e.Error != null) Program.HandleException(e.Error); 43 | 44 | Application.Exit(); 45 | } 46 | 47 | private void buttonCancel_Click(object sender, EventArgs e) 48 | { 49 | buttonCancel.Enabled = false; 50 | processingBackgroundWorker.CancelAsync(); 51 | } 52 | 53 | private void BackupForm_FormClosing(object sender, FormClosingEventArgs e) 54 | { 55 | if (processingBackgroundWorker.CancellationPending) 56 | { 57 | e.Cancel = true; 58 | } 59 | else if (processingBackgroundWorker.IsBusy) 60 | { 61 | processingBackgroundWorker.CancelAsync(); 62 | e.Cancel = true; 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Source/Main/Tasks/Backup/Backuper.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Backup 2 | { 3 | using System; 4 | using System.IO; 5 | using Core; 6 | using Install; 7 | 8 | internal static class Backuper 9 | { 10 | public static string BackupStorageBaseFolderPath => Path.Combine(Installer.InstallationFolderPath, @"Backups"); 11 | 12 | public static void Backup(string sourceFolderPath, Cancelable cancelable) 13 | { 14 | if (sourceFolderPath.StartsWith(BackupStorageBaseFolderPath, StringComparison.InvariantCultureIgnoreCase)) 15 | { 16 | throw new Exception("Path must be outside of Simple Backup folder."); 17 | } 18 | 19 | var src = new DirectoryInfo(sourceFolderPath); 20 | var dst = new DirectoryInfo(Path.Combine(BackupStorageBaseFolderPath, MakeUnique(src))); 21 | 22 | if (dst.Exists) dst.Delete(true); 23 | dst.Create(); 24 | 25 | CopyFilesRecursively(src, dst, cancelable); 26 | } 27 | 28 | public static string MakeUnique(FileSystemInfo src) 29 | { 30 | return $@"{src.Name} ({src.FullName.GetHashCode():X})"; 31 | } 32 | 33 | public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target, Cancelable cancelable) 34 | { 35 | foreach (var dir in source.GetDirectories()) 36 | { 37 | CancelHelper.CheckThrowCancel(cancelable); 38 | CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name), cancelable); 39 | } 40 | 41 | foreach (var file in source.GetFiles()) 42 | { 43 | CancelHelper.CheckThrowCancel(cancelable); 44 | file.CopyTo(Path.Combine(target.FullName, file.Name)); 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Configure/ConfigureForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Configure 2 | { 3 | partial class ConfigureForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigureForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.buttonCancel = new System.Windows.Forms.Button(); 34 | this.buttonOK = new System.Windows.Forms.Button(); 35 | this.panel1.SuspendLayout(); 36 | this.SuspendLayout(); 37 | // 38 | // panel1 39 | // 40 | this.panel1.Controls.Add(this.buttonOK); 41 | this.panel1.Controls.Add(this.buttonCancel); 42 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 43 | this.panel1.Location = new System.Drawing.Point(0, 0); 44 | this.panel1.Name = "panel1"; 45 | this.panel1.Padding = new System.Windows.Forms.Padding(9); 46 | this.panel1.Size = new System.Drawing.Size(395, 237); 47 | this.panel1.TabIndex = 0; 48 | // 49 | // buttonCancel 50 | // 51 | this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 52 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; 53 | this.buttonCancel.Location = new System.Drawing.Point(298, 197); 54 | this.buttonCancel.Name = "buttonCancel"; 55 | this.buttonCancel.Size = new System.Drawing.Size(85, 28); 56 | this.buttonCancel.TabIndex = 1; 57 | this.buttonCancel.Text = "Cancel"; 58 | this.buttonCancel.UseVisualStyleBackColor = true; 59 | // 60 | // buttonOK 61 | // 62 | this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 63 | this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; 64 | this.buttonOK.Location = new System.Drawing.Point(207, 197); 65 | this.buttonOK.Name = "buttonOK"; 66 | this.buttonOK.Size = new System.Drawing.Size(85, 28); 67 | this.buttonOK.TabIndex = 0; 68 | this.buttonOK.Text = "OK"; 69 | this.buttonOK.UseVisualStyleBackColor = true; 70 | // 71 | // ConfigureForm 72 | // 73 | this.AcceptButton = this.buttonOK; 74 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 75 | this.CancelButton = this.buttonCancel; 76 | this.ClientSize = new System.Drawing.Size(395, 237); 77 | this.Controls.Add(this.panel1); 78 | this.Font = new System.Drawing.Font("Segoe UI", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 79 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 80 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 81 | this.Margin = new System.Windows.Forms.Padding(4); 82 | this.MaximizeBox = false; 83 | this.MinimizeBox = false; 84 | this.Name = "ConfigureForm"; 85 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 86 | this.Text = "Configure Simple Backup"; 87 | this.panel1.ResumeLayout(false); 88 | this.ResumeLayout(false); 89 | 90 | } 91 | 92 | #endregion 93 | 94 | private System.Windows.Forms.Panel panel1; 95 | private System.Windows.Forms.Button buttonOK; 96 | private System.Windows.Forms.Button buttonCancel; 97 | } 98 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Configure/ConfigureForm.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Configure 2 | { 3 | using System.Windows.Forms; 4 | 5 | public partial class ConfigureForm : Form 6 | { 7 | public ConfigureForm() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/Main/Tasks/Configure/Configurer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Configure 2 | { 3 | internal class Configurer 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/EntryGate.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Windows.Forms; 6 | using Backup; 7 | using Install; 8 | using Restore; 9 | using Uninstall; 10 | 11 | /// 12 | /// Entscheidet wohin gesprungen werden soll. 13 | /// 14 | internal static class EntryGate 15 | { 16 | public static Form DecideForm() 17 | { 18 | var args = new List(Environment.GetCommandLineArgs()); 19 | 20 | // TODO. 21 | 22 | if (args.Contains(@"-i") || args.Count <= 1 && !Installer.IsInstalled) 23 | { 24 | return new InstallForm(); 25 | } 26 | else if (args.Contains(@"-u") || args.Count <= 1 && Installer.IsInstalled) 27 | { 28 | return new UninstallForm(); 29 | } 30 | else if (args.Contains(@"-b") && args.Count == 3) 31 | { 32 | var r = new BackupForm(); 33 | r.Initialize(args[2]); 34 | return r; 35 | } 36 | else if (args.Contains(@"-r") && args.Count == 3) 37 | { 38 | var r = new RestoreForm(); 39 | r.Initialize(args[2]); 40 | return r; 41 | } 42 | else 43 | { 44 | throw new Exception("Unknown/invalid command line arguments."); 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Install/InstallForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Install 2 | { 3 | partial class InstallForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(InstallForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.progressBar = new System.Windows.Forms.ProgressBar(); 34 | this.processingBackgroundWorker = new System.ComponentModel.BackgroundWorker(); 35 | this.panel1.SuspendLayout(); 36 | this.SuspendLayout(); 37 | // 38 | // panel1 39 | // 40 | this.panel1.Controls.Add(this.progressBar); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Padding = new System.Windows.Forms.Padding(9); 45 | this.panel1.Size = new System.Drawing.Size(304, 48); 46 | this.panel1.TabIndex = 2; 47 | // 48 | // progressBar 49 | // 50 | this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 51 | | System.Windows.Forms.AnchorStyles.Right))); 52 | this.progressBar.Location = new System.Drawing.Point(12, 12); 53 | this.progressBar.Name = "progressBar"; 54 | this.progressBar.Size = new System.Drawing.Size(280, 23); 55 | this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee; 56 | this.progressBar.TabIndex = 1; 57 | // 58 | // processingBackgroundWorker 59 | // 60 | this.processingBackgroundWorker.WorkerReportsProgress = true; 61 | this.processingBackgroundWorker.WorkerSupportsCancellation = true; 62 | this.processingBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.processingBackgroundWorker_DoWork); 63 | this.processingBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.processingBackgroundWorker_RunWorkerCompleted); 64 | // 65 | // InstallForm 66 | // 67 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 68 | this.ClientSize = new System.Drawing.Size(304, 48); 69 | this.Controls.Add(this.panel1); 70 | this.Font = new System.Drawing.Font("Segoe UI", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 71 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 72 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 73 | this.MaximizeBox = false; 74 | this.MinimizeBox = false; 75 | this.Name = "InstallForm"; 76 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 77 | this.Text = "Install Simple Backup"; 78 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.InstallForm_FormClosing); 79 | this.Load += new System.EventHandler(this.InstallForm_Load); 80 | this.Shown += new System.EventHandler(this.InstallForm_Shown); 81 | this.panel1.ResumeLayout(false); 82 | this.ResumeLayout(false); 83 | 84 | } 85 | 86 | #endregion 87 | 88 | private System.Windows.Forms.Panel panel1; 89 | private System.Windows.Forms.ProgressBar progressBar; 90 | private System.ComponentModel.BackgroundWorker processingBackgroundWorker; 91 | } 92 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Install/InstallForm.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Install 2 | { 3 | using System; 4 | using System.ComponentModel; 5 | using System.Windows.Forms; 6 | using Core; 7 | 8 | public partial class InstallForm : Form 9 | { 10 | public InstallForm() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InstallForm_Load(object sender, EventArgs e) 16 | { 17 | CenterToScreen(); 18 | } 19 | 20 | private void InstallForm_Shown(object sender, EventArgs e) 21 | { 22 | processingBackgroundWorker.RunWorkerAsync(); 23 | } 24 | 25 | private void processingBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) 26 | { 27 | Installer.Install( 28 | userState => processingBackgroundWorker.CancellationPending ? CancelMode.Cancel : CancelMode.Continue); 29 | } 30 | 31 | private void processingBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 32 | { 33 | Hide(); 34 | Program.HandleException(e.Error ?? 35 | new MessageBoxException( 36 | "Successfully installed.\r\n\r\nRight-click a folder in Windows Explorer and select 'Backup' or 'Restore'.")); 37 | 38 | Application.Exit(); 39 | } 40 | 41 | private void InstallForm_FormClosing(object sender, FormClosingEventArgs e) 42 | { 43 | if (processingBackgroundWorker.IsBusy) 44 | { 45 | processingBackgroundWorker.CancelAsync(); 46 | e.Cancel = true; 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Install/Installer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Install 2 | { 3 | using System; 4 | using System.IO; 5 | using System.Reflection; 6 | using Core; 7 | 8 | internal static class Installer 9 | { 10 | public static string InstallationFolderPath => 11 | Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Simple Backup"); 12 | 13 | public static string InstallationExeFilePath => Path.Combine(InstallationFolderPath, ExeName); 14 | 15 | private static string ExeName => Path.GetFileName(Assembly.GetEntryAssembly().Location); 16 | 17 | public static bool IsInstalled => File.Exists(InstallationExeFilePath); 18 | 19 | public static void Install( 20 | Cancelable cancelable) 21 | { 22 | if (IsInstalled) return; 23 | 24 | Directory.CreateDirectory(InstallationFolderPath); 25 | 26 | File.Copy( 27 | Assembly.GetEntryAssembly().Location, 28 | InstallationExeFilePath, 29 | true); 30 | 31 | ExplorerContextMenuAdder.Register(); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Restore/RestoreForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Restore 2 | { 3 | partial class RestoreForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RestoreForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.progressBar = new System.Windows.Forms.ProgressBar(); 34 | this.buttonCancel = new System.Windows.Forms.Button(); 35 | this.processingBackgroundWorker = new System.ComponentModel.BackgroundWorker(); 36 | this.panel1.SuspendLayout(); 37 | this.SuspendLayout(); 38 | // 39 | // panel1 40 | // 41 | this.panel1.Controls.Add(this.progressBar); 42 | this.panel1.Controls.Add(this.buttonCancel); 43 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 44 | this.panel1.Location = new System.Drawing.Point(0, 0); 45 | this.panel1.Name = "panel1"; 46 | this.panel1.Padding = new System.Windows.Forms.Padding(9); 47 | this.panel1.Size = new System.Drawing.Size(304, 86); 48 | this.panel1.TabIndex = 1; 49 | // 50 | // progressBar 51 | // 52 | this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 53 | | System.Windows.Forms.AnchorStyles.Right))); 54 | this.progressBar.Location = new System.Drawing.Point(12, 12); 55 | this.progressBar.Name = "progressBar"; 56 | this.progressBar.Size = new System.Drawing.Size(280, 23); 57 | this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee; 58 | this.progressBar.TabIndex = 1; 59 | // 60 | // buttonCancel 61 | // 62 | this.buttonCancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom; 63 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; 64 | this.buttonCancel.Location = new System.Drawing.Point(109, 46); 65 | this.buttonCancel.Name = "buttonCancel"; 66 | this.buttonCancel.Size = new System.Drawing.Size(85, 28); 67 | this.buttonCancel.TabIndex = 0; 68 | this.buttonCancel.Text = "Cancel"; 69 | this.buttonCancel.UseVisualStyleBackColor = true; 70 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); 71 | // 72 | // processingBackgroundWorker 73 | // 74 | this.processingBackgroundWorker.WorkerReportsProgress = true; 75 | this.processingBackgroundWorker.WorkerSupportsCancellation = true; 76 | this.processingBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.processingBackgroundWorker_DoWork); 77 | this.processingBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.processingBackgroundWorker_RunWorkerCompleted); 78 | // 79 | // RestoreForm 80 | // 81 | this.AcceptButton = this.buttonCancel; 82 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 83 | this.CancelButton = this.buttonCancel; 84 | this.ClientSize = new System.Drawing.Size(304, 86); 85 | this.Controls.Add(this.panel1); 86 | this.Font = new System.Drawing.Font("Segoe UI", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 87 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 88 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 89 | this.MaximizeBox = false; 90 | this.MinimizeBox = false; 91 | this.Name = "RestoreForm"; 92 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 93 | this.Text = "Restore folder"; 94 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.RestoreForm_FormClosing); 95 | this.Load += new System.EventHandler(this.RestoreForm_Load); 96 | this.Shown += new System.EventHandler(this.RestoreForm_Shown); 97 | this.panel1.ResumeLayout(false); 98 | this.ResumeLayout(false); 99 | 100 | } 101 | 102 | #endregion 103 | 104 | private System.Windows.Forms.Panel panel1; 105 | private System.Windows.Forms.ProgressBar progressBar; 106 | private System.Windows.Forms.Button buttonCancel; 107 | private System.ComponentModel.BackgroundWorker processingBackgroundWorker; 108 | } 109 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Restore/RestoreForm.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Restore 2 | { 3 | using System; 4 | using System.ComponentModel; 5 | using System.Windows.Forms; 6 | using Core; 7 | 8 | public partial class RestoreForm : Form 9 | { 10 | private string _destinationFolderPath; 11 | 12 | public RestoreForm() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | public void Initialize(string destinationFolderPath) 18 | { 19 | _destinationFolderPath = destinationFolderPath; 20 | } 21 | 22 | private void RestoreForm_Load(object sender, EventArgs e) 23 | { 24 | CenterToScreen(); 25 | } 26 | 27 | private void RestoreForm_Shown(object sender, EventArgs e) 28 | { 29 | processingBackgroundWorker.RunWorkerAsync(); 30 | } 31 | 32 | private void processingBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) 33 | { 34 | Restorer.Restore( 35 | _destinationFolderPath, 36 | userState => processingBackgroundWorker.CancellationPending ? CancelMode.Cancel : CancelMode.Continue); 37 | } 38 | 39 | private void processingBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 40 | { 41 | Hide(); 42 | if (e.Error != null) Program.HandleException(e.Error); 43 | 44 | Application.Exit(); 45 | } 46 | 47 | private void buttonCancel_Click(object sender, EventArgs e) 48 | { 49 | buttonCancel.Enabled = false; 50 | processingBackgroundWorker.CancelAsync(); 51 | } 52 | 53 | private void RestoreForm_FormClosing(object sender, FormClosingEventArgs e) 54 | { 55 | if (processingBackgroundWorker.CancellationPending) 56 | { 57 | e.Cancel = true; 58 | } 59 | else if ( processingBackgroundWorker.IsBusy) 60 | { 61 | processingBackgroundWorker.CancelAsync(); 62 | e.Cancel = true; 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Source/Main/Tasks/Restore/Restorer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Restore 2 | { 3 | using System; 4 | using System.IO; 5 | using Backup; 6 | using Core; 7 | 8 | internal static class Restorer 9 | { 10 | public static void Restore(string destinationFolderPath, Cancelable cancelable) 11 | { 12 | if (destinationFolderPath.StartsWith(Backuper.BackupStorageBaseFolderPath, StringComparison.InvariantCultureIgnoreCase)) 13 | { 14 | throw new Exception("Path must be outside of Simple Backup folder."); 15 | } 16 | 17 | var dst = new DirectoryInfo(destinationFolderPath); 18 | var src = new DirectoryInfo(Path.Combine(Backuper.BackupStorageBaseFolderPath, Backuper.MakeUnique(dst))); 19 | 20 | if (!src.Exists) throw new MessageBoxException("No backup available for this folder."); 21 | deleteDirectoryContents(dst, cancelable); 22 | 23 | Backuper.CopyFilesRecursively(src, dst, cancelable); 24 | } 25 | 26 | private static void deleteDirectoryContents(DirectoryInfo dir, Cancelable cancelable) 27 | { 28 | if (!dir.Exists) return; 29 | 30 | foreach (var directory in dir.GetDirectories()) 31 | { 32 | CancelHelper.CheckThrowCancel(cancelable); 33 | directory.Delete(true); 34 | } 35 | 36 | foreach (var file in dir.GetFiles()) 37 | { 38 | CancelHelper.CheckThrowCancel(cancelable); 39 | file.Delete(); 40 | } 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Uninstall/UninstallForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Uninstall 2 | { 3 | partial class UninstallForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UninstallForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.progressBar = new System.Windows.Forms.ProgressBar(); 34 | this.processingBackgroundWorker = new System.ComponentModel.BackgroundWorker(); 35 | this.panel1.SuspendLayout(); 36 | this.SuspendLayout(); 37 | // 38 | // panel1 39 | // 40 | this.panel1.Controls.Add(this.progressBar); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Padding = new System.Windows.Forms.Padding(9); 45 | this.panel1.Size = new System.Drawing.Size(304, 48); 46 | this.panel1.TabIndex = 1; 47 | // 48 | // progressBar 49 | // 50 | this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 51 | | System.Windows.Forms.AnchorStyles.Right))); 52 | this.progressBar.Location = new System.Drawing.Point(12, 12); 53 | this.progressBar.Name = "progressBar"; 54 | this.progressBar.Size = new System.Drawing.Size(280, 23); 55 | this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee; 56 | this.progressBar.TabIndex = 1; 57 | // 58 | // processingBackgroundWorker 59 | // 60 | this.processingBackgroundWorker.WorkerReportsProgress = true; 61 | this.processingBackgroundWorker.WorkerSupportsCancellation = true; 62 | this.processingBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.processingBackgroundWorker_DoWork); 63 | this.processingBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.processingBackgroundWorker_RunWorkerCompleted); 64 | // 65 | // UninstallForm 66 | // 67 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 68 | this.ClientSize = new System.Drawing.Size(304, 48); 69 | this.Controls.Add(this.panel1); 70 | this.Font = new System.Drawing.Font("Segoe UI", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 71 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 72 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 73 | this.MaximizeBox = false; 74 | this.MinimizeBox = false; 75 | this.Name = "UninstallForm"; 76 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 77 | this.Text = "Uninstall Simple Backup"; 78 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.UninstallForm_FormClosing); 79 | this.Load += new System.EventHandler(this.UninstallForm_Load); 80 | this.Shown += new System.EventHandler(this.UninstallForm_Shown); 81 | this.panel1.ResumeLayout(false); 82 | this.ResumeLayout(false); 83 | 84 | } 85 | 86 | #endregion 87 | 88 | private System.Windows.Forms.Panel panel1; 89 | private System.Windows.Forms.ProgressBar progressBar; 90 | private System.ComponentModel.BackgroundWorker processingBackgroundWorker; 91 | } 92 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Uninstall/UninstallForm.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Uninstall 2 | { 3 | using System; 4 | using System.ComponentModel; 5 | using System.Windows.Forms; 6 | using Core; 7 | 8 | public partial class UninstallForm : Form 9 | { 10 | public UninstallForm() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void UninstallForm_Load(object sender, EventArgs e) 16 | { 17 | CenterToScreen(); 18 | } 19 | 20 | private void UninstallForm_Shown(object sender, EventArgs e) 21 | { 22 | processingBackgroundWorker.RunWorkerAsync(); 23 | } 24 | 25 | private void processingBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) 26 | { 27 | Uninstaller.Uninstall( 28 | userState => processingBackgroundWorker.CancellationPending ? CancelMode.Cancel : CancelMode.Continue); 29 | } 30 | 31 | private void processingBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 32 | { 33 | Hide(); 34 | if (e.Error != null) Program.HandleException(e.Error); 35 | 36 | Application.Exit(); 37 | } 38 | 39 | private void UninstallForm_FormClosing(object sender, FormClosingEventArgs e) 40 | { 41 | if (processingBackgroundWorker.IsBusy) 42 | { 43 | processingBackgroundWorker.CancelAsync(); 44 | e.Cancel = true; 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /Source/Main/Tasks/Uninstall/Uninstaller.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleBackup.Main.Tasks.Uninstall 2 | { 3 | using System; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Runtime.InteropServices; 7 | using Core; 8 | using Install; 9 | 10 | internal static class Uninstaller 11 | { 12 | public static void Uninstall(Cancelable cancelable) 13 | { 14 | ExplorerContextMenuAdder.Unregister(); 15 | 16 | // -- 17 | 18 | var baseFolderPath = Installer.InstallationFolderPath; 19 | if (!Directory.Exists(baseFolderPath)) return; 20 | 21 | foreach (var directory in Directory.GetDirectories(baseFolderPath)) 22 | { 23 | CancelHelper.CheckThrowCancel(cancelable); 24 | Directory.Delete(directory, true); 25 | } 26 | 27 | foreach (var file in Directory.GetFiles(baseFolderPath)) 28 | { 29 | if (!string.Equals(Installer.InstallationExeFilePath, file, StringComparison.InvariantCultureIgnoreCase)) 30 | { 31 | CancelHelper.CheckThrowCancel(cancelable); 32 | File.Delete(file); 33 | } 34 | } 35 | 36 | // -- 37 | 38 | try 39 | { 40 | File.Delete(Installer.InstallationExeFilePath); 41 | } 42 | catch (Exception) 43 | { 44 | postPoneDeleteFile(Installer.InstallationExeFilePath); 45 | } 46 | 47 | try 48 | { 49 | Directory.Delete(Installer.InstallationFolderPath); 50 | } 51 | catch (Exception) 52 | { 53 | postPoneDeleteFile(Installer.InstallationFolderPath); 54 | } 55 | } 56 | 57 | private static void postPoneDeleteFile(string filePath) 58 | { 59 | /* 60 | // http://stackoverflow.com/questions/2245201/how-can-i-make-my-net-application-erase-itself 61 | // http://stackoverflow.com/questions/1305428/self-deletable-application-in-c-sharp-in-one-executable 62 | 63 | var info = new ProcessStartInfo 64 | { 65 | Arguments = string.Format(@"/C choice /C Y /N /D Y /T 3 & Del ""{0}""", filePath), 66 | WindowStyle = ProcessWindowStyle.Hidden, 67 | CreateNoWindow = true, 68 | FileName = @"cmd.exe" 69 | }; 70 | 71 | Process.Start(info); 72 | */ 73 | 74 | // http://stackoverflow.com/a/6077952/107625 75 | if (!NativeMethods.MoveFileEx(filePath, null, MoveFileFlags.DelayUntilReboot)) 76 | { 77 | Trace.TraceWarning(@"Unable to schedule '{0}' for deletion.", filePath); 78 | } 79 | } 80 | 81 | [Flags] 82 | private enum MoveFileFlags 83 | { 84 | None = 0, 85 | ReplaceExisting = 1, 86 | CopyAllowed = 2, 87 | DelayUntilReboot = 4, 88 | WriteThrough = 8, 89 | CreateHardlink = 16, 90 | FailIfNotTrackable = 32, 91 | } 92 | 93 | private static class NativeMethods 94 | { 95 | [DllImport(@"kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 96 | public static extern bool MoveFileEx( 97 | string lpExistingFileName, 98 | string lpNewFileName, 99 | MoveFileFlags dwFlags); 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /Source/Main/bin/Release/Main.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Source/Main/bookmarks.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UweKeim/SimpleBackup/48e9acc08066c8505e6edc1da4e1429e5c379893/Source/Main/bookmarks.ico -------------------------------------------------------------------------------- /Source/SimpleBackup.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.22823.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Main", "Main\Main.csproj", "{1C72AA9A-A5A8-4D8F-BC6F-57E0328C3420}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Release|Any CPU = Release|Any CPU 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {1C72AA9A-A5A8-4D8F-BC6F-57E0328C3420}.Release|Any CPU.ActiveCfg = Release|Any CPU 14 | {1C72AA9A-A5A8-4D8F-BC6F-57E0328C3420}.Release|Any CPU.Build.0 = Release|Any CPU 15 | EndGlobalSection 16 | GlobalSection(SolutionProperties) = preSolution 17 | HideSolutionNode = FALSE 18 | EndGlobalSection 19 | EndGlobal 20 | --------------------------------------------------------------------------------