diff --git a/Src/SwqlStudio/ITabsFactory.cs b/Src/SwqlStudio/ITabsFactory.cs index 26bce8c5e..6e5c6a4dc 100644 --- a/Src/SwqlStudio/ITabsFactory.cs +++ b/Src/SwqlStudio/ITabsFactory.cs @@ -4,12 +4,16 @@ namespace SwqlStudio { internal interface ITabsFactory { - void AddTextToEditor(string text, ConnectionInfo info); + void OpenQueryTab(); + + void OpenQueryTab(string text, ConnectionInfo info); void OpenActivityMonitor(ConnectionInfo connectionInfo); void OpenInvokeTab(ConnectionInfo connectionInfo, Verb verb); void OpenCrudTab(CrudOperation operation, ConnectionInfo connectionInfo, Entity entity); + + void OpenFiles(string[] files); } } \ No newline at end of file diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index a2654756a..dd7c8b1ab 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -67,6 +67,7 @@ private void InitializeComponent() this.noGroupingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.enableAutocompleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.discoverQueryParametersMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.promptToSaveOnCloseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutSWQLStudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); @@ -89,7 +90,6 @@ private void InitializeComponent() this.newFileToolButton = new System.Windows.Forms.ToolStripButton(); this.openFileButton = new System.Windows.Forms.ToolStripButton(); this.saveToolButton = new System.Windows.Forms.ToolStripButton(); - this.promptToSaveOnCloseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.menu.SuspendLayout(); this.mainToolbar.SuspendLayout(); @@ -141,19 +141,20 @@ private void InitializeComponent() // // menuFileNew // - this.menuFileNew.Image = global::SwqlStudio.Properties.Resources.NewFile_16x; + this.menuFileNew.Image = global::SwqlStudio.Properties.Resources.ConnectFilled_16x; this.menuFileNew.Name = "menuFileNew"; this.menuFileNew.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); this.menuFileNew.Size = new System.Drawing.Size(219, 22); - this.menuFileNew.Text = "&New"; + this.menuFileNew.Text = "&New Connection..."; this.menuFileNew.Click += new System.EventHandler(this.menuFileNew_Click); // // menuFileTabPage // + this.menuFileTabPage.Image = global::SwqlStudio.Properties.Resources.NewFile_16x; this.menuFileTabPage.Name = "menuFileTabPage"; this.menuFileTabPage.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T))); this.menuFileTabPage.Size = new System.Drawing.Size(219, 22); - this.menuFileTabPage.Text = "Tab Page"; + this.menuFileTabPage.Text = "New Query &Tab"; this.menuFileTabPage.Click += new System.EventHandler(this.menuFileTabPage_Click); // // menuFileOpen @@ -162,7 +163,7 @@ private void InitializeComponent() this.menuFileOpen.Name = "menuFileOpen"; this.menuFileOpen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); this.menuFileOpen.Size = new System.Drawing.Size(219, 22); - this.menuFileOpen.Text = "&Open"; + this.menuFileOpen.Text = "&Open File..."; this.menuFileOpen.Click += new System.EventHandler(this.menuFileOpen_Click); // // menuFileSave @@ -178,13 +179,13 @@ private void InitializeComponent() // this.menuFileSaveAs.Name = "menuFileSaveAs"; this.menuFileSaveAs.Size = new System.Drawing.Size(219, 22); - this.menuFileSaveAs.Text = "&Save As"; + this.menuFileSaveAs.Text = "&Save As..."; this.menuFileSaveAs.Click += new System.EventHandler(this.menuFileSaveAs_Click); // // menuFileClose // this.menuFileClose.Name = "menuFileClose"; - this.menuFileClose.ShortcutKeyDisplayString = "Ctrl+W, Ctrl-F4"; + this.menuFileClose.ShortcutKeyDisplayString = "Ctrl+W, Ctrl+F4"; this.menuFileClose.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W))); this.menuFileClose.Size = new System.Drawing.Size(219, 22); this.menuFileClose.Text = "&Close"; @@ -330,7 +331,6 @@ private void InitializeComponent() // this.menuQueryExecute.Image = global::SwqlStudio.Properties.Resources.Run_16x; this.menuQueryExecute.Name = "menuQueryExecute"; - this.menuQueryExecute.ShortcutKeyDisplayString = "F5, Ctrl-E"; this.menuQueryExecute.ShortcutKeys = System.Windows.Forms.Keys.F5; this.menuQueryExecute.Size = new System.Drawing.Size(210, 22); this.menuQueryExecute.Text = "&Execute"; @@ -429,6 +429,13 @@ private void InitializeComponent() this.discoverQueryParametersMenuItem.Text = "Discover query parameters"; this.discoverQueryParametersMenuItem.CheckedChanged += new System.EventHandler(this.discoverQueryParametersToolStripMenuItem_CheckedChanged); // + // promptToSaveOnCloseToolStripMenuItem + // + this.promptToSaveOnCloseToolStripMenuItem.Name = "promptToSaveOnCloseToolStripMenuItem"; + this.promptToSaveOnCloseToolStripMenuItem.Size = new System.Drawing.Size(214, 22); + this.promptToSaveOnCloseToolStripMenuItem.Text = "Prompt to save on close"; + this.promptToSaveOnCloseToolStripMenuItem.Click += new System.EventHandler(this.promptToSaveOnCloseToolStripMenuItem_Click); + // // helpToolStripMenuItem // this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -535,8 +542,8 @@ private void InitializeComponent() this.newConnectionButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.newConnectionButton.Name = "newConnectionButton"; this.newConnectionButton.Size = new System.Drawing.Size(23, 22); - this.newConnectionButton.ToolTipText = "New connection"; - this.newConnectionButton.Click += new System.EventHandler(this.newConnectionButton_Click); + this.newConnectionButton.ToolTipText = "New Connection... (Ctrl+N)"; + this.newConnectionButton.Click += new System.EventHandler(this.menuFileNew_Click); // // disconnectToolButton // @@ -555,7 +562,7 @@ private void InitializeComponent() this.refreshToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.refreshToolButton.Name = "refreshToolButton"; this.refreshToolButton.Size = new System.Drawing.Size(23, 22); - this.refreshToolButton.Text = "Refresh server metadata"; + this.refreshToolButton.Text = "Refresh Server Metadata"; this.refreshToolButton.Click += new System.EventHandler(this.refreshToolButton_Click); // // toolStripSeparator2 @@ -595,8 +602,8 @@ private void InitializeComponent() this.newFileToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.newFileToolButton.Name = "newFileToolButton"; this.newFileToolButton.Size = new System.Drawing.Size(23, 22); - this.newFileToolButton.ToolTipText = "New file (Ctrl+N)"; - this.newFileToolButton.Click += new System.EventHandler(this.menuFileNew_Click); + this.newFileToolButton.ToolTipText = "New Query Tab (Ctrl+T)"; + this.newFileToolButton.Click += new System.EventHandler(this.menuFileTabPage_Click); // // openFileButton // @@ -605,7 +612,7 @@ private void InitializeComponent() this.openFileButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.openFileButton.Name = "openFileButton"; this.openFileButton.Size = new System.Drawing.Size(23, 22); - this.openFileButton.ToolTipText = "Open file (Ctrl+O)"; + this.openFileButton.ToolTipText = "Open File... (Ctrl+O)"; this.openFileButton.Click += new System.EventHandler(this.menuFileOpen_Click); // // saveToolButton @@ -618,13 +625,6 @@ private void InitializeComponent() this.saveToolButton.ToolTipText = "Save (Ctrl+S)"; this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); // - // promptToSaveOnCloseToolStripMenuItem - // - this.promptToSaveOnCloseToolStripMenuItem.Name = "promptToSaveOnCloseToolStripMenuItem"; - this.promptToSaveOnCloseToolStripMenuItem.Size = new System.Drawing.Size(214, 22); - this.promptToSaveOnCloseToolStripMenuItem.Text = "Prompt to save on close"; - this.promptToSaveOnCloseToolStripMenuItem.Click += new System.EventHandler(this.promptToSaveOnCloseToolStripMenuItem_Click); - // // MainForm // this.AllowDrop = true; diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 97b50e3e8..c10ae5b70 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -6,7 +6,6 @@ using System.Windows.Forms; using SolarWinds.InformationService.Contract2; using SolarWinds.InformationService.InformationServiceClient; -using SwqlStudio.Metadata; using SwqlStudio.Properties; using SwqlStudio.Subscriptions; using SwqlStudio.Utils; @@ -118,7 +117,16 @@ private void startTimer_Tick(object sender, EventArgs e) private void menuFileNew_Click(object sender, EventArgs e) { - this.filesDock.AddNewQueryTab(); + try + { + ConnectionInfo.DoWithExceptionTranslation(() => connectionsManager.CreateConnection()); + } + catch (Exception ex) + { + log.Error("Failed to connect", ex); + var msg = $"Unable to connect to Information Service.\n{ex.Message}"; + MessageBox.Show(msg, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } private void menuFileOpen_Click(object sender, EventArgs e) @@ -245,19 +253,6 @@ private void menuEditPaste_Click(object sender, EventArgs e) #region Other stuff - private void TextEditorDragEnter(object sender, DragEventArgs e) - { - if (e.Data.GetDataPresent(typeof(Entity))) - e.Effect = DragDropEffects.Copy; - } - - private void TextEditorDragDrop(object sender, DragEventArgs e) - { - Entity entity = e.Data.GetData(typeof(Entity)) as Entity; - if (entity != null) - this.filesDock.GenerateSelectStatement(entity, (e.KeyState & 8) == 8); - } - private void TextEditor_FormClosing(object sender, FormClosingEventArgs e) { // Ask user to save changes @@ -432,11 +427,6 @@ private void connectionsCombobox_SelectedIndexChanged(object sender, EventArgs e } } - private void newConnectionButton_Click(object sender, EventArgs e) - { - this.connectionsManager.CreateConnection(); - } - private void disconnectToolButton_Click(object sender, EventArgs e) { this.SelectedConnection?.Close(); diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index 5dbb5dbe2..113488939 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -160,213 +160,213 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAq - MAAAAk1TRnQBSQFMAgEBDgEAAWwBAgFsAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0QB/wPAAf8D9AH/A9YB/wMvTf8DAAH/AwAB/wE9AWABuRH/ - gAAE/wO0Af8DDQH/Aw0B/wMNAf8Dok3/AwAB/wMAAf8BPQFgAbkB/wMADf+AAAT/A/IB/wMmAf8D6AH/ - AygB/wPoAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAEf8BtwGi - AZMB/wFJAS8BGwH/AUkBLwEbAf8BSQEvARsB/wFJAS8BGwn/AwAB/wE9AWABuQH/AT0BYAG5Af8BSQEv - ARsB/wMACf+AAAT/A/kB/wONAf8DTQH/A1cB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEKAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DZQH/AUkBLwEbAf8BSQEvARsB/wMABf+AAAT/A/0B/wPb - Af8DDQH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BJQH/AZoBgwEZAf8B9gHWAcIB/wGIARgBBQH/AYMBEgEA - Af8BzwG0AaMB/wEKAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BZAH/ - AZoBgwFYCf8DAAH/A2UB/wFJAS8BGwH/AUkBLwEbAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BCgIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNl - Af8BSQEvARsB/wFJAS8BGwH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEl - Af8BmgGDARkB/wH7AewB4wH/AYkBGAEGAf8BgwESAQAB/wHRAcEBtgH/AQoCABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWQB/wGaAYMBWAH/AfsB7AHjAf8BiQFXAUUJ/wMAAf8DZQH/ - AUkBLwEbAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BCgIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2UB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BJQH/AZkBhAEZAf8B/QH3AfMB/wGIARgBBQH/AYMBEgEAAf8B0QHBAbYB/wEK - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFkAf8BmQGEAVgB/wH9AfcB8wH/ - AYgBVwFEAf8BgwFRAT4B/wHRAcEBtgn/AUkBLwEbAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEKAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BSQEvARsJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBFQH/AeYBjgEJAf8B4wEkAQAB/wHj - AR0BAAH/AeIBGQEAAf8B4gEZAQAB/wHiARkBAAH/AcgBCQEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBVAH/AeYBjgFIAf8B4wFjATAB/wHjAVwBJgH/AeIBWAEfAf8B4gFYAR8B/wHi - AVgBHwH/AcgBSAEVCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBJAH/AfYBogEeAf8B9QGdARgB/wH1AZkBEQH/AfMBlQEMAf8BzQEMAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWMB/wH2AaIBXQH/AfUBnQFX - Af8B9QGZAVAB/wHzAZUBSwH/Ac0BSwEXCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhASYB/wHoAZsBHQH/AeYBjgEJAf8B5QGHAQAB/wHkAYEBAAH/AeQBIgEAAf8B4wEdAQAB/wHi - ARkBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWUB/wHoAZsBXAH/AeYBjgFI - Af8B5QGHAT4B/wHkAYEBNAH/AeQBYQEsAf8B4wFcASQB/wHiAVgBHwn/gACA/4AAgP//ACkAAdMB3wHr + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAW + MAAAAk1TRnQBSQFMAgEBDgEAAXwBAgF8AQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0IB/wPAAf8D9AH/A9YB/wMtTf8DAAH/AwAB/wE7AV4BuRH/ + gAAE/wO0Af8DCwH/AwsB/wMLAf8Dok3/AwAB/wMAAf8BOwFeAbkB/wMADf+AAAT/A/IB/wMkAf8D6AH/ + AyYB/wPoAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAEf8BtwGi + AZMB/wFHAS0BGQH/AUcBLQEZAf8BRwEtARkB/wFHAS0BGQn/AwAB/wE7AV4BuQH/ATsBXgG5Af8BRwEt + ARkB/wMACf+AAAT/A/kB/wONAf8DSwH/A1UB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEIAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DYwH/AUcBLQEZAf8BRwEtARkB/wMABf+AAAT/A/0B/wPb + Af8DCwH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BIwH/AZoBgwEXAf8B9gHWAcIB/wGIARYBAwH/AYMBEAEA + Af8BzwG0AaMB/wEIAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BYgH/ + AZoBgwFWCf8DAAH/A2MB/wFHAS0BGQH/AUcBLQEZAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BCAIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNj + Af8BRwEtARkB/wFHAS0BGQH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEj + Af8BmgGDARcB/wH7AewB4wH/AYkBFgEEAf8BgwEQAQAB/wHRAcEBtgH/AQgCABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWIB/wGaAYMBVgH/AfsB7AHjAf8BiQFVAUMJ/wMAAf8DYwH/ + AUcBLQEZAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BCAIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2MB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BIwH/AZkBhAEXAf8B/QH3AfMB/wGIARYBAwH/AYMBEAEAAf8B0QHBAbYB/wEI + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFiAf8BmQGEAVYB/wH9AfcB8wH/ + AYgBVQFCAf8BgwFPATwB/wHRAcEBtgn/AUcBLQEZAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEIAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BRwEtARkJ/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBEwH/AeYBjgEHAf8B4wEiAQAB/wHj + ARsBAAH/AeIBFwEAAf8B4gEXAQAB/wHiARcBAAH/AcgBBwEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBUgH/AeYBjgFGAf8B4wFhAS4B/wHjAVoBJAH/AeIBVgEdAf8B4gFWAR0B/wHi + AVYBHQH/AcgBRgETCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBIgH/AfYBogEcAf8B9QGdARYB/wH1AZkBDwH/AfMBlQEKAf8BzQEKAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWEB/wH2AaIBWwH/AfUBnQFV + Af8B9QGZAU4B/wHzAZUBSQH/Ac0BSQEVCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhASQB/wHoAZsBGwH/AeYBjgEHAf8B5QGHAQAB/wHkAYEBAAH/AeQBIAEAAf8B4wEbAQAB/wHi + ARcBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWMB/wHoAZsBWgH/AeYBjgFG + Af8B5QGHATwB/wHkAYEBMgH/AeQBXwEqAf8B4wFaASIB/wHiAVYBHQn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBJQH/AbIBiAETAf8BuAGSASQB/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNDAf8DwAH/A/QB/wPW - Af8DLgH/A/UJ/wP+Af8D9gH/AVQBrgHbAf8BVAGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBNAEAAf8BnQEuAQAB/wGcASwBAAH/AaQBOgEAAf8BnQEtAQAB/wGdAS0BAAH/AZ8BMwEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/AwEB/wwAAwEB/wOGAf80AAPfAf8D9AH/ATEBqAHmAf8BAQFPAbYB/wEA - AU8BvgH/ASkBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AwwB/wMMAf8DDAH/A6IB/wP6Bf8D/gH/ - A/YB/wFUAa4B2wH/AQABUgHHAf8BAAFSAccB/wFUAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEq - Af8BoAExAQAB/wGhATIBAAH/AZ4BLQEAAf8BygGqATsB/wH2AfEB6AH/Ac0BrwFFAf8BngEtAQAB/wGh - ATIBAAH/AaEBMQEAAf8BugGUASYB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABMQGoAeYB/wEB - AU8BtgH/AQABTwG+Af8BAAFPAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DJQH/A+gB/wMnAf8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABUgHHAf8BAAFSAccB/wEAAVIBxwH/AVQBrgHbAf8D9QH/ - BAABzAGvAYgB/wGlATYBAAH/AaUBNgEAAf8BpQE3AQAB/wGiATEBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - ATMBAAH/AaUBNgEAAf8BpQE2AQAB/wGlATYBAAH/AcoBrQGEAf8UAAMbAf8DAAH/FwAB/wMbAf8wAAEK - AU8BrgH/AQoBTwGuAf8BIgFLAZ0B/wEiAUsBnQH/AQEBTwG2Af8BAQFPAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DTAH/A1YB/wP3Bf8D9AH/AQABUgHHAf8BAAFSAccB/wEAAVIBxwH/AZQBvQHgAf8BAAFS - AccB/wEAAVIBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQE9AQAB/wGqATsBAAH/AaoBOwEAAf8BqgE7 - AQAB/wGnATYBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoATgBAAH/AaoBOgEAAf8BqgE7AQAB/wGqATsBAAH/ - AakBPAEAAf8B8AHpAd4B/xAAAxsB/wMAAf8XAAH/AxsB/xwAA98B/wPfAf8MAAEKAU8BrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/ATEBqAHmAf8BMQGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DDAH/A8kB/wP7 - Bf8D9AH/AQABUgHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AUIBAAH/Aa4BPwEAAf8BrwFAAQAB/wGvAUABAAH/AawBOwEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BPQEA - Af8BrwE/AQAB/wGvAUABAAH/Aa4BQAEAAf8BrwE/AQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABIgFLAZ0B/wHNAfYC/wHJAfYC/wFOAaQB0QH/ - AU4BpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABUgHHAf8D9AH/A/YB/wFU - Aa4B2wH/AVQBrgHbAf8D9AH/A/wF/wHKAakBQgH/AcABjgEAAf8BtQFHAQAB/wGzAUMBAAH/AbQBRQEA - Af8BsgFBAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFCAQAB/wG0AUQBAAH/AbQBRQEAAf8BtAFFAQAB/wG1 - AUUBAAH/AcQBnwEvAf8PAAH/AzQB/xwAAzQB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAASIBSwGdAf8BzQH2Av8BTgGkAdEB/wEeAUsBoQH/AR4BSwGhAf8BTgGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BVAGuAdsB/wFUAa4B2wH/A/UB/wP9Af8D9AH/AQABUgHHAf8D9AH/AVQBrgHb - Af8BAAFSAccB/wEAAVIBxwH/AVQBrgHbAf8D9QH/A/0B/wHJAaYBOQH/AckBmwEQAf8BxQGUAQkB/wG+ - AYkBAAH/AboBgAEAAf8BtwFFAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFHAQAB/wG5AUkBAAH/AbkBSQEA - Af8BuQFJAQAB/wG6AUkBAAH/AcMBmgEjAf8QAAMBAf8DwAH/FAADwAH/AwEB/xAAAdMB3wHrAf8B6AH0 - Av8BKQGoAe4B/wEAAU8BvgH/AQABTwG+Af8BKQGoAe4B/wHNAfYC/wHNAfYC/wEKAU8BrgH/AbUB+gL/ - ASkBqAHuAf8BAAFPAb4B/wEAAU8BxwH/AQABTwHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVQBrgHb - Af8BAAFSAccB/wEAAVIBxwH/AVQBrgHbAf8D9AH/A/QB/wEAAVIBxwH/A/QB/wGUAb0B4AH/AQABUgHH - Af8BAAFSAccB/wEAAVIBxwH/AVQBrgHbAf8D9QH/AdABrwGBAf8BzgGgARUB/wHLAZwBFAH/AcwBnAEU - Af8BygGZAQwB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAEAAf8BzAGoATwB/xAAAxsB/wMBAf8UAAMBAf8DGwH/EAAB6AH0Av8BmAGkAbAB/wEA - AU8BvgH/AQABTwG+Af8BAAFPAb4B/wEAAU8BvgH/ASIBSwGdAf8BIgFLAZ0B/wEKAU8BrgH/AQoBTwGu - Af8BAAFPAb4B/wEAAU8BvgH/AQABTwHHAf8BAAFPAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFUAa4B2wH/ - AQABUgHHAf8BAAFSAccB/wEAAVIBxwH/AQABUgHHAf8BVAGuAdsB/wEAAVIBxwH/AQABUgHHAf8BAAFS - AccB/wEAAVIBxwH/AZQBvQHgAf8BAAFSAccB/wEAAVIBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - AR4B/wHQAaIBFwH/AdABoQEYAf8B0AGhARgB/wHQAZ8BEwH/AcsBpAEoAf8B1AHDAaUB/wHKAaQBKAH/ - Ac0BmwELAf8BzgGcAQ4B/wHOAZwBDgH/Ac4BnAENAf8BzwGdAQ0B/wHaAcMBogH/EAADGwH/AwEB/xQA - AwEB/wMbAf8QAAHoAfQC/wGYAaQBsAH/AQABTwG+Af8BAAFPAb4B/wEAAU8BxwH/AQABTwHHAf8BAAFP - Ab4B/wEpAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAAFSAccB/wEAAVIBxwH/AQABUgHHAf8BAAFSAccB/wEAAVIBxwH/AVQBrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoASwB/wHYAakBHgH/ - AdUBpgEeAf8B1QGmARwB/wHUAaMBFwH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQETAf8B0wGi - ARYB/wHTAaEBFAH/AdUBowETAf8BzQGdARcB/wH0Ae0B5AH/EAADhgH/AwEB/xQAAwEB/wOGAf8QAAHT - Ad8B6wH/AegB9AL/ASkBqAHuAf8BAAFPAb4B/wEAAU8BxwH/AQABTwHHAf8BAAFPAb4B/wEAAU8BvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFS - AccB/wEAAVIBxwH/AQABUgHHAf8BAAFSAccB/wEAAVIBxwH/AVQBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgEtAf8B2gGrASEB/wHZAasBIgH/AdcBpwEbAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEbAf8B1wGnARsB/wHYAacBGQH/AdkBqgEeAf8B2wHBAZ4B/xgAA4YB/wMBAf8MAAMB - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAAFPAb4B/wEAAU8BvgH/AQABTwG+Af8BAAFPAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVIBxwH/AQABUgHH - Af8BAAFSAccB/wEAAVIBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBMwH/Ad8BsQEmAf8B3AGtASEB/wHXAbUBRAH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBHQH/Ad4BrgEg - Af8B3gGxASgB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ASkBqAHuAf8BAAFPAb4B/wEA - AU8BvgH/ASkBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABUgHHAf8BAAFS - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFEAf8B4wG4ATUB/wHjAbQBKQH/Ad0BrgEh - Af8B4QGyASUB/wHiAbYBLwH/AdsBswE7Af8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ - AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx - AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABEQG5Af8BAAEDATIB/wIA - ARQB//UAATIBxwH/AQABzQH8Af8BAAETAYcB/7QAAzsBZQEAAQgBAAH/AzoBYDUAATIBxwH/AQABoAHS - Af8BAAEJASkB/xwAAwEBAgMAAQEbAAEBDAABIgEhASIBMQMAAQFcAAM+AWoBAwGnAQAB/wEAAQwBAAH/ - AQABCAEAAf8DNgFYMQABMgHHAf8BAAHRAfwB/wEAARMBhwH/MwABAQMAAQEQAAHsAdIB7AH/ASkBAAEo - Af8B5gHMAeYB/wMCAQMDEgEZEAABJgEwATIB/wEcASQBJwH/ARMBGAEbAf8BCQEMAQ8B/wIAAQQB/wMA - Af8DAAH/AwAB/wMAAf8cAAM+AWoBAwGnAQAB/wEgAbsBFAH/AQABEAEAAf8BAAENAQAB/wEAAQgBAAH/ - AzUBVy0AATIBxwH/AQABoQHRAf8BAAEJASkB/z8AAQEEAAHtAdgB7QH/AakBBwGoAf8BgAEAATYB/wEs - AQABLAH/AesB0QHrAf8UAAEvAYIBgwH/AZcB2wH1Af8BEgGpAcoB/wESAakBygH/AREBpwHJAf8BCQGf - AcIB/wEAAZYBuQH/AQABjQGwAf8DAAH/HAABAgGkAQAB/wEgAbsBFAH/ASABuwEUAf8BAAEPAQAB/wEA - ARABAAH/AQABDQEAAf8BAAEIAQAB/wMwAUwpAAEyAccB/wEIAeIB/QH/AQABDwGAAf8jAAEBAwABAQMA - AQEDAAEBAwABAQMAAQEDAAEBBAAB6AHRAegB/wGqAQcBqQH/AcwBHgHLAf8BNQEAATUB/wGWAQABlQH/ - ATIBAAExAf8B8AHVAfAB/xAAATcCjAH/AaAB4AH3Af8BKAHNAfEB/wEbAccB7gH/AQ8BwQHrAf8BBAG8 - AegB/wEAAbcB5gH/AQABkgG2Af8DAAH/HAABAwGnAQAB/wEgAbsBFAH/ASABuwEUAf8BqgHUAaIB/wEA - AaABAAH/AQABEAEAAf8BAAENAQAB/wEAAQcBAAH/KQABMgHHAf8BDwHXAfwB/wEAAQ8BgAH/JAABqwHw - AfcB/wGrAeIB5QH/AawBzgHMAf8BrQG7AbUB/wGuAacBnAH/BAAB5AHKAeQB/wGpAQcBqAH/AdMBIgHS - Af8B1AElAdMB/wE2AQABNQH/AZ8BAAGfAf8BjgEAAY0B/wE0AQABMwH/EAABhQKUAf8BpwHjAfgB/wEz - AdMB9AH/ASgBzgHxAf8BHAHIAe4B/wEPAcIB6wH/AQQBvAHoAf8BAwGZAbwB/wMAAf8YAAMCAQMBBQGr - AQAB/wEgAbsBFAH/AaoB1AGiAf8BtwHaAbAB/wGqAdQBogH/AQABkwEAAf8BAAEQAQAB/wEAAQgBAAH/ - JQABFwGQAf8BAAEyAccB/wElAd4B/AH/AQABDwGAAf8BAAEFATEB/zgAAaoBCQGpAf8B0gEhAdEB/wHV - ASYB1QH/Ab0BJwG8Af8B3gGYAd0B/wGPAQABjgH/AZ0BAAGcAf8BNQEAATUB/xAAAYwCmwH/Aa4B5gH6 - Af8BhgHYAfYB/wEzAdQB9AH/ASgBzQHxAf8BHAHHAe4B/wEPAcIB6wH/AQoBoAHBAf8DAAH/GAADBAEF - ARoBuAENAf8BtAHZAa0B/wHFAeIBwAH/AbcB2gGwAf8BtwHaAbAB/wGqAdQBogH/AQABiAEAAf8BAAEI - AQAB/yEAASYBoAH/AQABhwHHAf8BEgHAAfAB/wEHAcsB/gH/AQgBswHdAf8BAAEEAR0B/wEAAQUBMQH/ - GAABqwHwAfcB/wGrAeUB6QH/AawC1QH/AawBxAHBAf8BrQG1AawB/wGuAaQBmAH/BAABqAEGAacB/wHS - ASQB0QH/AbwBJgG7Af8B7wGlAe4B/wH7AZ8B+gH/Ae8BnQHuAf8BlwEJAZYB/wEzAQABMwH/EAABkQGi - AaEB/wGyAegB/AH/AaAB4gH6Af8BhgHYAfYB/wE0AdMB8wH/ASgBzgHxAf8BGwHIAe4B/wEOAaUBxwH/ - AQMBBAEJAf8YAAMCAQMDRAF6AY4BxgGEAf8BuQHcAbMB/wHDAeEBvgH/AcMB4QG+Af8BtwHaAbAB/wGq - AdQBogH/AQABHgEAAf8dAAGAAbEB/wEAAYcByAH/AQkBugH3Af8BCwHCAfkB/wEBAbcB+QH/AR8B1gH7 - Af8BAAGmAegB/wEAAQMBGwH/AQABCAGDAf8wAAGnAQcBpgH/AbwBJgG7Af8B7wGlAe4B/wH7AZsB+gH/ - AfsBmAH6Af8B+wGZAfoB/wHnAZgB5gH/AZEBBQGQAf8QAAGUAaYBpQH/Ab0B7AH8Af8BpQHlAfsB/wGf - AeIB+gH/AYYB2AH2Af8BNAHUAfQB/wEoAc0B8QH/ARIBqQHKAf8BCwEPARIB/yAAA0YBfgGQAccBhgH/ - Ab4B3gG4Af8BwwHhAb4B/wGzAdkBrAH/AZABxwGGAf8DPQFpHQABMgG4Af8BCwHBAfkB/wEHAbcB+QH/ - AZMB7gH+Af8BjwHsAf4B/wEJAbQB8wH/AY0B4wH+Af8BBgG6AeIB/wEAAQUBIgH/HAABqwHwAfcB/wGs - AtUB/wGuAbQBrAH/Aa4BmQGKAf8D/QH/Ac8BiAHPAf8B4gGvAeIB/wH7AasB+gH/AfsBmAH6Af8B+wGY - AfoB/wHqAZAB6QH/Ac8BiAHPAf8B9AHmAfQB/xAAAZQBpgGlAf8BvQHsAfwB/wG9AewB/AH/AbIB6AH8 - Af8BrgHmAfoB/wGnAeQB+QH/AaAB4AH3Af8BlwHbAfUB/wEUARkBHQH/JAADRwGBAZQByQGKAf8BvQHe - AbcB/wGOAcYBhAH/AzABSyEAAYMBuwH/ARABxgH5Af8BIAGKAawB/wEgAYoBrAH/ASABigGsAf8BIAGK - AawB/wEgAYoBrAH/ARkB1QH6Af8BAAEEAR8B/zAAAfAB1AHwAf8BzwGIAc8B/wHuAb4B7gH/AfsBrgH6 - Af8B7AGRAesB/wHPAYgBzwH/AfMB4AHyAf8UAAGUAaYBpQH/AZQBpgGlAf8BkwKlAf8BjwGfAZ4B/wGI - ApcB/wGBAo4B/wEwAoQB/wEmATABMgH/AR0BJAEmAf8oAAM8AWYBlAHJAYoB/wMlATclAAGDAbwB/wET - AdIB+gH/AQEBGwGEAf8MAAEEAZABwQH/AQoBuwHhAf8BAAECARwB/zQAAfIB2wHyAf8BzwGIAc8B/wHj - AawB4wH/Ac8BiAHPAf8B8wHjAfMB/2AAAwEBAgQAAwEBAikAAYgBwQH/AQABnQHQAf8BMQHjAfoB/wEB - AYUBngH/AQgBGwGHAf8BCAEtAZwB/wEJAb8B9AH/AQABjAGqAf8BAAEPATEB/zgAAfIB2wHyAf8BzwGI - Ac8B/wHwAeMB8AH/mQABlAHGAf8BAAGKAcEB/wEAAZoBzQH/ASUB1QH1Af8BKAHpAf4B/wEkAdQB8wH/ - AQEBkgGyAf8BAAEbAYwB/wEAAScBogH/PAAB/gH7Af4B/6EAAZQBxgH/AQABjQHDAf8BAAGLAboB/wEA - AYsBugH/AQABiAG3Af8BAAEqAaAB/wEAAYIBsgH//wCpAAM2AVgBmQIAAf8DMwFT8AADOAFdAdcBmgEB - Af8BmQIAAf8BmQIAAf8DLwFKLAADHgErA1QBrgFZAmQB7AEEAYMBlgH/AQABHQGNAf8BAAEUAYwB/wFO - Al0B8ANWAbMDJQE3mAADOgFhAdcBmgEBAf8B2AGbAQIB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUooAAFb - Al4B0AEAAbAB0QH/AYQB1QHoAf8BoQHrAfYB/wEaAeQC/wEAAb4B8wH/AQABnwHeAf8BAAGLAb4B/wFb - Al4B2VQAAbcBogGTAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIAAf8BCgIA - Af8BCgIAAf8BCgIAAf8BCgIAAf8UAAHYAZsBAwH/AdgBmwECAf8B2AGbAQIB/wGZAgAB/wGZAgAB/wGZ - AgAB/wGZAgAB/wMvAUolAAGPAaoB/wEAAdcC/wGQAeoB+gH/AaEB6wH2Af8BGAHZAfQB/wEAAbwB8gH/ - AQABpwHoAf8BAAGcAdoB/wEAAQoBhAH/FAADMQFNAlIBUQGhAV8CWAHjAV8CWAHjAVICUQGhATECMAFN - BAADMQFNAlIBUQGhAV8CWAHjAV8CWAHjAVICUQGhATECMAFNDAABtwGiAZMB/wH9AfsB+QH/AeEB3AHY - Af8B4AHXAdIB/wHfAc4BwwH/Ad0ByAG7Af8B2wG/Aa0B/wHbAbsBpwH/AdsBuwGnAf8B2wG7AacB/wHP - AbQBowH/AQoCAAH/FAAB2AGbAQIB/wHYAZsBAgH/AekBtAEjAf8B/AHWAa8B/wG1AQoBAAH/AZkCAAH/ - AZkCAAH/AZkCAAH/Ay8BSiEAAZEBrgH/AQAB0gH6Af8BjQHkAfYB/wGhAesB9gH/ARcB1wHzAf8BAAG5 - Ae8B/wEAAacB6AH/AQABnAHaAf8BAAEMAYYB/xAAAzUBVQNkAecBzwG4AakB/wHrAdYByAH/AeUBywG7 - Af8BswGVASYB/wFkAlwB5wNLAY4DZAHnAc8BuAGpAf8B6wHWAcgB/wHlAcsBuwH/AbMBlQEmAf8BZAJc - AecBNQI0AVUIAAG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BJQH/AZoBgwEZ - Af8B9gHWAcIB/wGIARgBBQH/AYMBEgEAAf8BzwG0AaMB/wEKAgAB/xQAAdgBmwECAf8B6gG3AYIB/wH7 - AdgBsgH/Af4B0QGjAf8B+wHYAbIB/wGvAgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMqAUEdAAGVAbAB/wEA - AdIB+gH/AY0B5AH0Af8BoQHrAfYB/wEXAdcB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABDwGI - Af8QAANVAbIB5gHWAcsB/wNZAcICYAFcAdQDYAHUAUwBKgEhAfsDAAH/AwAB/wMAAf8BYQJYAeYCYAFc - AdQDYAHUA1kBwgG5AZwBiAH/A1UBsggAAboBpQGWAf8D/gH/A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/ - AfsB7AHjAf8B+gHnAdsB/wH4AeEB0gH/AfcB2wHJAf8B0AG5AasB/wEKAgAB/xQAAecBswEjAf8B8QHD - AZEB/wH+Ac8BnQL/Ac0BmQH/Af4B0AGfAf8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZAgAB/wGZAgAB/wME - AQUZAAGZAbUB/wEAAdEB+wH/AY4B5AH1Af8BoQHrAfYB/wEXAdcB8gH/AQABuQHuAf8BAAGnAegB/wEA - AZwB2gH/AQABEgGKAf8QAANlAfQE/wNXAd8DHQEqA1wBzQX/Af4B9wL/AfEB5gH/AfoB4wHUAf8B8wHX - AccB/wNKAY0DHQEqA1wB3wHvAdYBxwH/AWQCUgH0CAABvgGpAZoB/wP+Af8BugGmAZgB/wG0AaABkQH/ - A/4B/wGjAY4BJQH/AZoBgwEZAf8B+wHsAeMB/wGJARgBBgH/AYMBEgEAAf8B0QHBAbYB/wEKAgAB/xQA - A0UBfAHlAbIBIgH/AfQBwAGLAv8BzQGZAv8BzQGZAf8B/gHQAaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/ - AZkCAAH/HAABAwGbAbcB/wEAAdAB+QH/AY0B4wH1Af8BoQHrAfYB/wEZAdkB8gH/AQABuQHuAf8BAAGn - AegB/wEAAZwB2gH/AQABFAGNAf8QAANVAbIB8gHmAd4B/wNZAcIDXAHUAWACXAHUA2EB4gHTAbUBogH/ - A00B+gHaAcABrwH/A18B8wNbAdYBYAJcAdQDWQHCAcsBsQGhAf8DVQGyCAABwwGuAZ4B/wP+Af8D/gH/ - A/4B/wP+Af8D/gH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/AfoB5wHbAf8B0QHBAbYB/wEKAgAB/xgA - A0YBfwHkAbABIAH/AfYBxAGQAv8BzQGZAv8BzQGZAf8B/gHQAaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/ - HAABBQGeAboB/wEAAdAB+QH/AY0B4wH0Af8BoQHrAfYB/wEWAdcB8gH/AQABtwHuAf8BAAGnAegB/wEA - AZwB2gH/AQABFgGPAf8QAAM1AVUDZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnA0sBjgNk - AecB7QHhAdcD/wH9Av8B9wHxAf8B2AHEAbcB/wNkAecDNQFVCAAByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BJQH/AZkBhAEZAf8B/QH3AfMB/wGIARgBBQH/AYMBEgEAAf8B0QHBAbYB/wEK - AgAB/xwAA0kBhwHjAa8BHwH/AfYBxAGQAv8BzQGZAv8BzQGZAf8B/gHQAaEB/wHyAckBnQH/AbABAQEA - Af8cAAEGAaIBvAH/AQABzgH3Af8BiwHjAfQB/wGhAesB9gH/ARUB1gHyAf8BAAG3Ae4B/wEAAacB6AH/ - AQABnAHaAf8BAAEXAZIB/xQAAzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNBAADMQFNA1IBoQNfAeMDXwHj - A1IBoQMxAU0MAAHMAbYBpwH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8 - AfIB7AH/AfsB7AHjAf8BCgIAAf8gAANJAYcB4wGvAR8B/wH2AcQBkAL/Ac0BmQH/AfMBwgGOAf8B4wGw - ASAB/wNDAXgcAAESAakBwAH/AQAB1AH6Af8BnAHsAfoB/wGrAe8B+gH/AaYB7QH4Af8BlAHnAfgB/wEY - AdkB9gH/AQABvQHpAf8BAAEjAZcB/1QAAeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBpQGEAf8B5wGX - ARUB/wHmAY4BCQH/AeMBJAEAAf8B4wEdAQAB/wHiARkBAAH/AeIBGQEAAf8B4gEZAQAB/wHIAQkBAAH/ - JAADSQGHAeMBrwEfAf8B7gG9AYoB/wHjAbABIAH/AzQBVCAAAYABswHFAf8BmwHeAesB/wHFAfkB/QH/ - AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BoAHfAeoB/wENAZEBogH/VAAB6gGqAYsC/wHC - AaIB/wH+AcABnwH/Af0BvQGaAf8B+wG1AZAB/wH6AbABiwH/AfgBpwEkAf8B9gGiAR4B/wH1AZ0BGAH/ - AfUBmQERAf8B8wGVAQwB/wHNAQwBAAH/KAADQAFuAeUBsgEkAf8DJgE4JAADOwFjA2AB1gEdAasBugH/ - ARcBowGzAf8BEwGdAa8B/wESAZsBrgH/ARYBogG0Af8DXgHZA0ABb1QAAeoBqgGLAf8B6gGqAYsB/wHq - AaoBiwH/AeoBqgGLAf8B6QGhASYB/wHoAZsBHQH/AeYBjgEJAf8B5QGHAQAB/wHkAYEBAAH/AeQBIgEA - Af8B4wEdAQAB/wHiARkBAAH//wD/AAoAAUIBTQE+BwABPgMAASgDAAFAAwABQAMAAQEBAAEBBgABAhYA - A/+BAAX/AcMCAAHwAR8D/wGBAgABwAEHAfMBnwH/AwABgAEDAecBzwH/AcACAAGAAQMB5wHPAf8EAAEB - AecBzwHnBAABAQHnAc8BwwEBAwABAQHPAecBgQQAAQEB5wHPBQABAQHnAc8FAAEBAecBzwUAAQEB5wHP - AQABAQIAAYABAwHzAZ8BgAETAgABgAEDAv8BwAE/AgAB4AEHAv8B4AF/AgAB8AEfAv8B8AH/AgAC/wH8 - AX8G/wH8AX8E/wH8AX8B/AF/AT8BcwL/AfgBPwH8AX8B+QHgAfABBwHwAR8B/AF/Af8BQQHwAQcB8AEP - AfwBfwKAAfABBwHwAQ8B/AF/AcEBAAHwAQcB4AEPAfgBPwH/AQAB8AEHAeABDwHwAR8BgQEAAfABBwHg - AQ8B4AEPAf8BAAHwAQcB+AEPAeABDwHgAQAB8AEHAfwBHwHgAQ8B/wEBAfABBwH+AT8B4wGPAf8BgwL/ - Af0BfwHgAQ8B/wHHBP8B4AEPAf8B7wT/AfABHwz/AfgH/wHwAX8B8AEHBP8B4AE/AfABBwL/AcABAwHg - AR8B8AEHAcABgQHAAQMB4AEPAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHgAQMB8AEHAYABAAHA - AQMB4AEHAfABBwGAAQABwAEDAfABBwHwAQcBgAEAAcABAwH4AQcB8AEHAcABgQHAAQMB/AEHAfABBwL/ - AcABAwH+AQ8B8AEHAv8BwAEDAf8BHwHwAQcC/wHAAQMQ/ws= + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBIwH/AbIBiAERAf8BuAGSASIB/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNBAf8DwAH/A/QB/wPW + Af8DLAH/A/UJ/wP+Af8D9gH/AVIBrgHbAf8BUgGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBMgEAAf8BnQEsAQAB/wGcASoBAAH/AaQBOAEAAf8BnQErAQAB/wGdASsBAAH/AZ8BMQEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwAB/w8AAf8DhgH/NAAD3wH/A/QB/wEvAagB5gH/AQABTQG2Af8BAAFN + Ab4B/wEnAagB7gH/AegB9AL/AdMB3wHrAf8D+gH/A7QB/wMKAf8DCgH/AwoB/wOiAf8D+gX/A/4B/wP2 + Af8BUgGuAdsB/wEAAVABxwH/AQABUAHHAf8BUgGuAdsB/wP1Af8D/QH/BAAB/AH7AfkB/wG8AZYBKAH/ + AaABLwEAAf8BoQEwAQAB/wGeASsBAAH/AcoBqgE5Af8B9gHxAegB/wHNAa8BQwH/AZ4BKwEAAf8BoQEw + AQAB/wGhAS8BAAH/AboBlAEkAf8B/AH6AfgB/xQAA4YB/wMAAf8XAAH/A4YB/zgAAS8BqAHmAf8BAAFN + AbYB/wEAAU0BvgH/AQABTQG+Af8BmAGkAbAB/wHoAfQC/wP+Af8D8gH/AyMB/wPoAf8DJQH/A+gB/wP+ + Af8D9AH/A/QB/wP0Af8BlAG9AeAB/wEAAVABxwH/AQABUAHHAf8BAAFQAccB/wFSAa4B2wH/A/UB/wQA + AcwBrwGIAf8BpQE0AQAB/wGlATQBAAH/AaUBNQEAAf8BogEvAQAB/wHmAdYBuwX/AesB3gHIAf8BowEx + AQAB/wGlATQBAAH/AaUBNAEAAf8BpQE0AQAB/wHKAa0BhAH/FAADGQH/AwAB/xcAAf8DGQH/MAABCAFN + Aa4B/wEIAU0BrgH/ASABSQGdAf8BIAFJAZ0B/wEAAU0BtgH/AQABTQG2Af8BmAGkAbAB/wHoAfQG/wP5 + Af8DjQH/A0oB/wNUAf8D9wX/A/QB/wEAAVABxwH/AQABUAHHAf8BAAFQAccB/wGUAb0B4AH/AQABUAHH + Af8BAAFQAccB/wGUAb0B4AH/A/YB/wHyAeoB4QH/AakBOwEAAf8BqgE5AQAB/wGqATkBAAH/AaoBOQEA + Af8BpwE0AQAB/wHlAdMBtgX/AeoB3AHDAf8BqAE2AQAB/wGqATgBAAH/AaoBOQEAAf8BqgE5AQAB/wGp + AToBAAH/AfAB6QHeAf8QAAMZAf8DAAH/FwAB/wMZAf8cAAPfAf8D3wH/DAABCAFNAa4B/wG1AfoC/wHN + AfYC/wHNAfYC/wEvAagB5gH/AS8BqAHmAf8B6AH0Av8B0wHfAesF/wP9Af8D2wH/AwoB/wPJAf8D+wX/ + A/QB/wEAAVABxwH/A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AdYBvgGdAf8BsAFA + AQAB/wGuAT0BAAH/Aa8BPgEAAf8BrwE+AQAB/wGsATkBAAH/AeYB1QG2Bf8B6wHcAcQB/wGtATsBAAH/ + Aa8BPQEAAf8BrwE+AQAB/wGuAT4BAAH/Aa8BPQEAAf8B0wG5AZYB/xMAAf8DwAH/FAADwAH/AwAB/xgA + AdMB3wHrAf8B6AH0Av8B6AH0Av8B0wHfAesB/wgAASABSQGdAf8BzQH2Av8ByQH2Av8BTAGkAdEB/wFM + AaQB0QH/AckB9gL/A+UB/wQACP8D9gH/A/QB/wP0Af8D/QX/A/QB/wEAAVABxwH/A/QB/wP2Af8BUgGu + AdsB/wFSAa4B2wH/A/QB/wP8Bf8BygGpAUAB/wHAAY4BAAH/AbUBRQEAAf8BswFBAQAB/wG0AUMBAAH/ + AbIBPwEAAf8B6AHWAbgF/wHsAd4BxQH/AbIBQAEAAf8BtAFCAQAB/wG0AUMBAAH/AbQBQwEAAf8BtQFD + AQAB/wHEAZ8BLQH/DwAB/wMyAf8cAAMyAf8DAAH/EAAD3wH/AegB9AL/AZgBpAGwAf8BmAGkAbAB/wHo + AfQC/wPfAf8EAAEgAUkBnQH/Ac0B9gL/AUwBpAHRAf8BHAFJAaEB/wEcAUkBoQH/AUwBpAHRAf8D9AH/ + A98F/wP+Af8D9gH/AVIBrgHbAf8BUgGuAdsB/wP1Af8D/QH/A/QB/wEAAVABxwH/A/QB/wFSAa4B2wH/ + AQABUAHHAf8BAAFQAccB/wFSAa4B2wH/A/UB/wP9Af8ByQGmATcB/wHJAZsBDgH/AcUBlAEHAf8BvgGJ + AQAB/wG6AYABAAH/AbcBQwEAAf8B6wHZAbsF/wHvAeEByAH/AbcBRQEAAf8BuQFHAQAB/wG5AUcBAAH/ + AbkBRwEAAf8BugFHAQAB/wHDAZoBIQH/EwAB/wPAAf8UAAPAAf8DAAH/EAAB0wHfAesB/wHoAfQC/wEn + AagB7gH/AQABTQG+Af8BAAFNAb4B/wEnAagB7gH/Ac0B9gL/Ac0B9gL/AQgBTQGuAf8BtQH6Av8BJwGo + Ae4B/wEAAU0BvgH/AQABTQHHAf8BAAFNAccB/wGMAaQBvQH/AdwB9AL/A/4B/wP2Af8BUgGuAdsB/wEA + AVABxwH/AQABUAHHAf8BUgGuAdsB/wP0Af8D9AH/AQABUAHHAf8D9AH/AZQBvQHgAf8BAAFQAccB/wEA + AVABxwH/AQABUAHHAf8BUgGuAdsB/wP1Af8B0AGvAYEB/wHOAaABEwH/AcsBnAESAf8BzAGcARIB/wHK + AZkBCgH/AcMBjQEAAf8B5QHUAbUF/wHnAdgBvAH/Ab4BgwEAAf8BwAGHAQAB/wHBAYgBAAH/AcIBigEA + Af8BxgGQAQAB/wHMAagBOgH/EAADGQH/AwAB/xcAAf8DGQH/EAAB6AH0Av8BmAGkAbAB/wEAAU0BvgH/ + AQABTQG+Af8BAAFNAb4B/wEAAU0BvgH/ASABSQGdAf8BIAFJAZ0B/wEIAU0BrgH/AQgBTQGuAf8BAAFN + Ab4B/wEAAU0BvgH/AQABTQHHAf8BAAFNAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFSAa4B2wH/AQABUAHH + Af8BAAFQAccB/wEAAVABxwH/AQABUAHHAf8BUgGuAdsB/wEAAVABxwH/AQABUAHHAf8BAAFQAccB/wEA + AVABxwH/AZQBvQHgAf8BAAFQAccB/wEAAVABxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGmARwB/wHQ + AaIBFQH/AdABoQEWAf8B0AGhARYB/wHQAZ8BEQH/AcsBpAEmAf8B1AHDAaUB/wHKAaQBJgH/Ac0BmwEJ + Af8BzgGcAQwB/wHOAZwBDAH/Ac4BnAELAf8BzwGdAQsB/wHaAcMBogH/EAADGQH/AwAB/xcAAf8DGQH/ + EAAB6AH0Av8BmAGkAbAB/wEAAU0BvgH/AQABTQG+Af8BAAFNAccB/wEAAU0BxwH/AQABTQG+Af8BJwGo + Ae4B/wHqAfYC/wHqAfYC/wP2Af8D9gH/AYwBpAG9Af8BjAGkAb0B/wP0Af8D3wH/A/cB/wGUAb0B4AH/ + AQABUAHHAf8BAAFQAccB/wEAAVABxwH/AQABUAHHAf8BAAFQAccB/wFSAa4B2wH/A/QB/wP0Af8D9AH/ + A/QB/wGUAb0B4AH/AZQBvQHgAf8D9gH/A/4B/wH1Ae8B5wH/AdEBqAEqAf8B2AGpARwB/wHVAaYBHAH/ + AdUBpgEaAf8B1AGjARUB/wHlAccBkQH/AfMB6gHYAf8B5wHLAZkB/wHTAaEBEQH/AdMBogEUAf8B0wGh + ARIB/wHVAaMBEQH/Ac0BnQEVAf8B9AHtAeQB/xAAA4YB/wMAAf8XAAH/A4YB/xAAAdMB3wHrAf8B6AH0 + Av8BJwGoAe4B/wEAAU0BvgH/AQABTQHHAf8BAAFNAccB/wEAAU0BvgH/AQABTQG+Af8BmAGkAbAB/wHo + AfQC/wPfAf8D3wH/AdwB9AL/AdwB9AL/A98B/wQAA/4B/wP3Af8BlAG9AeAB/wEAAVABxwH/AQABUAHH + Af8BAAFQAccB/wEAAVABxwH/AQABUAHHAf8BUgGuAdsB/wP1Af8D/QH/A/4B/wP3Af8D9gH/A/4F/wQA + Ad0ByAGqAf8B3QGyASsB/wHaAasBHwH/AdkBqwEgAf8B1wGnARkB/wHxAeYB0wX/AfUB7gHhAf8B1wGm + ARkB/wHXAacBGQH/AdgBpwEXAf8B2QGqARwB/wHbAcEBngH/GAADhgH/AwAB/w8AAf8DhgH/GAAD3wH/ + AegB9AL/AZgBpAGwAf8BAAFNAb4B/wEAAU0BvgH/AQABTQG+Af8BAAFNAb4B/wGYAaQBsAH/AegB9AL/ + A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVABxwH/AQABUAHHAf8BAAFQAccB/wEA + AVABxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHgAbYBMQH/Ad8BsQEk + Af8B3AGtAR8B/wHXAbUBQgH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBGwH/Ad4BrgEeAf8B3gGxASYB/wHW + AbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/AScBqAHuAf8BAAFNAb4B/wEAAU0BvgH/AScBqAHu + Af8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABUAHHAf8BAAFQAccB/wGUAb0B4AH/ + A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFCAf8B4wG4ATMB/wHjAbQBJwH/Ad0BrgEfAf8B4QGyASMB/wHi + AbYBLQH/AdsBswE5Af8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/AZgBpAGwAf8B6AH0 + Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHxAesB/wHkAdQBvwH/ + Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHrAf8B6AH0Av8B6AH0 + Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABDwG5Af8BAAEBATAB/wIAARIB//UAATABxwH/ + AQABzQH8Af8BAAERAYcB/7QAAzsBZQEAAQYBAAH/AzoBYDUAATABxwH/AQABoAHSAf8BAAEHAScB/xwA + AwEBAgMAAQEbAAEBDAABIgEhASIBMQMAAQFcAAM+AWoBAQGnAQAB/wEAAQoBAAH/AQABBgEAAf8DNgFY + MQABMAHHAf8BAAHRAfwB/wEAAREBhwH/MwABAQMAAQEQAAHsAdIB7AH/AScBAAEmAf8B5gHMAeYB/wMC + AQMDEgEZEAABJAEuATAB/wEaASIBJQH/AREBFgEZAf8BBwEKAQ0B/wIAAQIB/wMAAf8DAAH/AwAB/wMA + Af8cAAM+AWoBAQGnAQAB/wEeAbsBEgH/AQABDgEAAf8BAAELAQAB/wEAAQYBAAH/AzUBVy0AATABxwH/ + AQABoQHRAf8BAAEHAScB/z8AAQEEAAHtAdgB7QH/AakBBQGoAf8BgAEAATQB/wEqAQABKgH/AesB0QHr + Af8UAAEtAYIBgwH/AZcB2wH1Af8BEAGpAcoB/wEQAakBygH/AQ8BpwHJAf8BBwGfAcIB/wEAAZYBuQH/ + AQABjQGwAf8DAAH/HQABpAEAAf8BHgG7ARIB/wEeAbsBEgH/AQABDQEAAf8BAAEOAQAB/wEAAQsBAAH/ + AQABBgEAAf8DMAFMKQABMAHHAf8BBgHiAf0B/wEAAQ0BgAH/IwABAQMAAQEDAAEBAwABAQMAAQEDAAEB + AwABAQQAAegB0QHoAf8BqgEFAakB/wHMARwBywH/ATMBAAEzAf8BlgEAAZUB/wEwAQABLwH/AfAB1QHw + Af8QAAE1AowB/wGgAeAB9wH/ASYBzQHxAf8BGQHHAe4B/wENAcEB6wH/AQIBvAHoAf8BAAG3AeYB/wEA + AZIBtgH/AwAB/xwAAQEBpwEAAf8BHgG7ARIB/wEeAbsBEgH/AaoB1AGiAf8BAAGgAQAB/wEAAQ4BAAH/ + AQABCwEAAf8BAAEFAQAB/ykAATABxwH/AQ0B1wH8Af8BAAENAYAB/yQAAasB8AH3Af8BqwHiAeUB/wGs + Ac4BzAH/Aa0BuwG1Af8BrgGnAZwB/wQAAeQBygHkAf8BqQEFAagB/wHTASAB0gH/AdQBIwHTAf8BNAEA + ATMB/wGfAQABnwH/AY4BAAGNAf8BMgEAATEB/xAAAYUClAH/AacB4wH4Af8BMQHTAfQB/wEmAc4B8QH/ + ARoByAHuAf8BDQHCAesB/wECAbwB6AH/AQEBmQG8Af8DAAH/GAADAgIDAasBAAH/AR4BuwESAf8BqgHU + AaIB/wG3AdoBsAH/AaoB1AGiAf8BAAGTAQAB/wEAAQ4BAAH/AQABBgEAAf8lAAEVAZAB/wEAATABxwH/ + ASMB3gH8Af8BAAENAYAB/wEAAQMBLwH/OAABqgEHAakB/wHSAR8B0QH/AdUBJAHVAf8BvQElAbwB/wHe + AZgB3QH/AY8BAAGOAf8BnQEAAZwB/wEzAQABMwH/EAABjAKbAf8BrgHmAfoB/wGGAdgB9gH/ATEB1AH0 + Af8BJgHNAfEB/wEaAccB7gH/AQ0BwgHrAf8BCAGgAcEB/wMAAf8YAAMEAQUBGAG4AQsB/wG0AdkBrQH/ + AcUB4gHAAf8BtwHaAbAB/wG3AdoBsAH/AaoB1AGiAf8BAAGIAQAB/wEAAQYBAAH/IQABJAGgAf8BAAGH + AccB/wEQAcAB8AH/AQUBywH+Af8BBgGzAd0B/wEAAQIBGwH/AQABAwEvAf8YAAGrAfAB9wH/AasB5QHp + Af8BrALVAf8BrAHEAcEB/wGtAbUBrAH/Aa4BpAGYAf8EAAGoAQQBpwH/AdIBIgHRAf8BvAEkAbsB/wHv + AaUB7gH/AfsBnwH6Af8B7wGdAe4B/wGXAQcBlgH/ATEBAAExAf8QAAGRAaIBoQH/AbIB6AH8Af8BoAHi + AfoB/wGGAdgB9gH/ATIB0wHzAf8BJgHOAfEB/wEZAcgB7gH/AQwBpQHHAf8BAQECAQcB/xgAAwIBAwNE + AXoBjgHGAYQB/wG5AdwBswH/AcMB4QG+Af8BwwHhAb4B/wG3AdoBsAH/AaoB1AGiAf8BAAEcAQAB/x0A + AYABsQH/AQABhwHIAf8BBwG6AfcB/wEJAcIB+QH/AQABtwH5Af8BHQHWAfsB/wEAAaYB6AH/AQABAQEZ + Af8BAAEGAYMB/zAAAacBBQGmAf8BvAEkAbsB/wHvAaUB7gH/AfsBmwH6Af8B+wGYAfoB/wH7AZkB+gH/ + AecBmAHmAf8BkQEDAZAB/xAAAZQBpgGlAf8BvQHsAfwB/wGlAeUB+wH/AZ8B4gH6Af8BhgHYAfYB/wEy + AdQB9AH/ASYBzQHxAf8BEAGpAcoB/wEJAQ0BEAH/IAADRgF+AZABxwGGAf8BvgHeAbgB/wHDAeEBvgH/ + AbMB2QGsAf8BkAHHAYYB/wM9AWkdAAEwAbgB/wEJAcEB+QH/AQUBtwH5Af8BkwHuAf4B/wGPAewB/gH/ + AQcBtAHzAf8BjQHjAf4B/wEEAboB4gH/AQABAwEgAf8cAAGrAfAB9wH/AawC1QH/Aa4BtAGsAf8BrgGZ + AYoB/wP9Af8BzwGIAc8B/wHiAa8B4gH/AfsBqwH6Af8B+wGYAfoB/wH7AZgB+gH/AeoBkAHpAf8BzwGI + Ac8B/wH0AeYB9AH/EAABlAGmAaUB/wG9AewB/AH/Ab0B7AH8Af8BsgHoAfwB/wGuAeYB+gH/AacB5AH5 + Af8BoAHgAfcB/wGXAdsB9QH/ARIBFwEbAf8kAANHAYEBlAHJAYoB/wG9Ad4BtwH/AY4BxgGEAf8DMAFL + IQABgwG7Af8BDgHGAfkB/wEeAYoBrAH/AR4BigGsAf8BHgGKAawB/wEeAYoBrAH/AR4BigGsAf8BFwHV + AfoB/wEAAQIBHQH/MAAB8AHUAfAB/wHPAYgBzwH/Ae4BvgHuAf8B+wGuAfoB/wHsAZEB6wH/Ac8BiAHP + Af8B8wHgAfIB/xQAAZQBpgGlAf8BlAGmAaUB/wGTAqUB/wGPAZ8BngH/AYgClwH/AYECjgH/AS4ChAH/ + ASQBLgEwAf8BGwEiASQB/ygAAzwBZgGUAckBigH/AyUBNyUAAYMBvAH/AREB0gH6Af8BAAEZAYQB/wwA + AQIBkAHBAf8BCAG7AeEB/wIAARoB/zQAAfIB2wHyAf8BzwGIAc8B/wHjAawB4wH/Ac8BiAHPAf8B8wHj + AfMB/2AAAwEBAgQAAwEBAikAAYgBwQH/AQABnQHQAf8BLwHjAfoB/wEAAYUBngH/AQYBGQGHAf8BBgEr + AZwB/wEHAb8B9AH/AQABjAGqAf8BAAENAS8B/zgAAfIB2wHyAf8BzwGIAc8B/wHwAeMB8AH/mQABlAHG + Af8BAAGKAcEB/wEAAZoBzQH/ASMB1QH1Af8BJgHpAf4B/wEiAdQB8wH/AQABkgGyAf8BAAEZAYwB/wEA + ASUBogH/PAAB/gH7Af4B/6EAAZQBxgH/AQABjQHDAf8BAAGLAboB/wEAAYsBugH/AQABiAG3Af8BAAEo + AaAB/wEAAYIBsgH//wCpAAM2AVgBmQIAAf8DMwFT8AADOAFdAdcBmgEAAf8BmQIAAf8BmQIAAf8DLwFK + LAADHgErA1QBrgFZAmQB7AECAYMBlgH/AQABGwGNAf8BAAESAYwB/wFOAl0B8ANWAbMDJQE3mAADOgFh + AdcBmgEAAf8B2AGbAQAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUooAAFbAl4B0AEAAbAB0QH/AYQB1QHo + Af8BoQHrAfYB/wEYAeQC/wEAAb4B8wH/AQABnwHeAf8BAAGLAb4B/wFbAl4B2VQAAbcBogGTAf8BCAIA + Af8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIAAf8BCAIA + Af8UAAHYAZsBAQH/AdgBmwEAAf8B2AGbAQAB/wGZAgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUolAAGP + AaoB/wEAAdcC/wGQAeoB+gH/AaEB6wH2Af8BFgHZAfQB/wEAAbwB8gH/AQABpwHoAf8BAAGcAdoB/wEA + AQgBhAH/FAADMQFNAlIBUQGhAV8CWAHjAV8CWAHjAVICUQGhATECMAFNBAADMQFNAlIBUQGhAV8CWAHj + AV8CWAHjAVICUQGhATECMAFNDAABtwGiAZMB/wH9AfsB+QH/AeEB3AHYAf8B4AHXAdIB/wHfAc4BwwH/ + Ad0ByAG7Af8B2wG/Aa0B/wHbAbsBpwH/AdsBuwGnAf8B2wG7AacB/wHPAbQBowH/AQgCAAH/FAAB2AGb + AQAB/wHYAZsBAAH/AekBtAEhAf8B/AHWAa8B/wG1AQgBAAH/AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiEA + AZEBrgH/AQAB0gH6Af8BjQHkAfYB/wGhAesB9gH/ARUB1wHzAf8BAAG5Ae8B/wEAAacB6AH/AQABnAHa + Af8BAAEKAYYB/xAAAzUBVQNkAecBzwG4AakB/wHrAdYByAH/AeUBywG7Af8BswGVASQB/wFkAlwB5wNL + AY4DZAHnAc8BuAGpAf8B6wHWAcgB/wHlAcsBuwH/AbMBlQEkAf8BZAJcAecBNQI0AVUIAAG3AaIBkwH/ + A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BIwH/AZoBgwEXAf8B9gHWAcIB/wGIARYBAwH/ + AYMBEAEAAf8BzwG0AaMB/wEIAgAB/xQAAdgBmwEAAf8B6gG3AYIB/wH7AdgBsgH/Af4B0QGjAf8B+wHY + AbIB/wGvAgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMqAUEdAAGVAbAB/wEAAdIB+gH/AY0B5AH0Af8BoQHr + AfYB/wEVAdcB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABDQGIAf8QAANVAbIB5gHWAcsB/wNZ + AcICYAFcAdQDYAHUAUwBKgEhAfsDAAH/AwAB/wMAAf8BYQJYAeYCYAFcAdQDYAHUA1kBwgG5AZwBiAH/ + A1UBsggAAboBpQGWAf8D/gH/A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfsB7AHjAf8B+gHnAdsB/wH4 + AeEB0gH/AfcB2wHJAf8B0AG5AasB/wEIAgAB/xQAAecBswEhAf8B8QHDAZEB/wH+Ac8BnQL/Ac0BmQH/ + Af4B0AGfAf8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMEAQUZAAGZAbUB/wEAAdEB+wH/ + AY4B5AH1Af8BoQHrAfYB/wEVAdcB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABEAGKAf8QAANl + AfQE/wNXAd8DHQEqA1wBzQX/Af4B9wL/AfEB5gH/AfoB4wHUAf8B8wHXAccB/wNKAY0DHQEqA1wB3wHv + AdYBxwH/AWQCUgH0CAABvgGpAZoB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGjAY4BIwH/AZoBgwEX + Af8B+wHsAeMB/wGJARYBBAH/AYMBEAEAAf8B0QHBAbYB/wEIAgAB/xQAA0UBfAHlAbIBIAH/AfQBwAGL + Av8BzQGZAv8BzQGZAf8B/gHQAaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/AZkCAAH/HAABAQGbAbcB/wEA + AdAB+QH/AY0B4wH1Af8BoQHrAfYB/wEXAdkB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABEgGN + Af8QAANVAbIB8gHmAd4B/wNZAcIDXAHUAWACXAHUA2EB4gHTAbUBogH/A00B+gHaAcABrwH/A18B8wNb + AdYBYAJcAdQDWQHCAcsBsQGhAf8DVQGyCAABwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbAf8B0QHBAbYB/wEIAgAB/xgAA0YBfwHkAbABHgH/AfYBxAGQ + Av8BzQGZAv8BzQGZAf8B/gHQAaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/HAABAwGeAboB/wEAAdAB+QH/ + AY0B4wH0Af8BoQHrAfYB/wEUAdcB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABFAGPAf8QAAM1 + AVUDZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnA0sBjgNkAecB7QHhAdcD/wH9Av8B9wHx + Af8B2AHEAbcB/wNkAecDNQFVCAAByAGyAaMB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGkAY4BIwH/ + AZkBhAEXAf8B/QH3AfMB/wGIARYBAwH/AYMBEAEAAf8B0QHBAbYB/wEIAgAB/xwAA0kBhwHjAa8BHQH/ + AfYBxAGQAv8BzQGZAv8BzQGZAf8B/gHQAaEB/wHyAckBnQH/AbACAAH/HAABBAGiAbwB/wEAAc4B9wH/ + AYsB4wH0Af8BoQHrAfYB/wETAdYB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABFQGSAf8UAAMx + AU0DUgGhA18B4wNfAeMDUgGhAzEBTQQAAzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/AQgCAAH/ + IAADSQGHAeMBrwEdAf8B9gHEAZAC/wHNAZkB/wHzAcIBjgH/AeMBsAEeAf8DQwF4HAABEAGpAcAB/wEA + AdQB+gH/AZwB7AH6Af8BqwHvAfoB/wGmAe0B+AH/AZQB5wH4Af8BFgHZAfYB/wEAAb0B6QH/AQABIQGX + Af9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHpAaUBhAH/AecBlwETAf8B5gGOAQcB/wHjASIBAAH/ + AeMBGwEAAf8B4gEXAQAB/wHiARcBAAH/AeIBFwEAAf8ByAEHAQAB/yQAA0kBhwHjAa8BHQH/Ae4BvQGK + Af8B4wGwAR4B/wM0AVQgAAGAAbMBxQH/AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5 + Af0B/wHFAfkB/QH/AaAB3wHqAf8BCwGRAaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/ + AfsBtQGQAf8B+gGwAYsB/wH4AacBIgH/AfYBogEcAf8B9QGdARYB/wH1AZkBDwH/AfMBlQEKAf8BzQEK + AQAB/ygAA0ABbgHlAbIBIgH/AyYBOCQAAzsBYwNgAdYBGwGrAboB/wEVAaMBswH/AREBnQGvAf8BEAGb + Aa4B/wEUAaIBtAH/A14B2QNAAW9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEk + Af8B6AGbARsB/wHmAY4BBwH/AeUBhwEAAf8B5AGBAQAB/wHkASABAAH/AeMBGwEAAf8B4gEXAQAB//8A + /wAKAAFCAU0BPgcAAT4DAAEoAwABQAMAAUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIA + AcABBwHzAZ8B/wMAAYABAwHnAc8B/wHAAgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMA + AQEBzwHnAYEEAAEBAecBzwUAAQEB5wHPBQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIA + AYABAwL/AcABPwIAAeABBwL/AeABfwIAAfABHwL/AfAB/wIAAv8B/AF/Bv8B/AF/BP8B/AF/AfwBfwE/ + AXMC/wH4AT8B/AF/AfkB4AHwAQcB8AEfAfwBfwH/AUEB8AEHAfABDwH8AX8CgAHwAQcB8AEPAfwBfwHB + AQAB8AEHAeABDwH4AT8B/wEAAfABBwHgAQ8B8AEfAYEBAAHwAQcB4AEPAeABDwH/AQAB8AEHAfgBDwHg + AQ8B4AEAAfABBwH8AR8B4AEPAf8BAQHwAQcB/gE/AeMBjwH/AYMC/wH9AX8B4AEPAf8BxwT/AeABDwH/ + Ae8E/wHwAR8M/wH4B/8B8AF/AfABBwT/AeABPwHwAQcC/wHAAQMB4AEfAfABBwHAAYEBwAEDAeABDwHw + AQcBgAEAAcABAwHgAQcB8AEHAYABAAHAAQMB4AEDAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHw + AQcB8AEHAYABAAHAAQMB+AEHAfABBwHAAYEBwAEDAfwBBwHwAQcC/wHAAQMB/gEPAfABBwL/AcABAwH/ + AR8B8AEHAv8BwAEDEP8L diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index 63cde9b63..ab789b5f3 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -3,7 +3,6 @@ using System.Data; using System.Drawing; using System.Linq; -using System.Runtime.InteropServices; using System.ServiceModel; using System.ServiceModel.Security; using System.Text; @@ -851,7 +850,7 @@ private void AddTextEditor(string query) var node = _contextMenuNode as TreeNodeWithConnectionInfo; if (node != null) { - TabsFactory.AddTextToEditor(query, node.Connection); + TabsFactory.OpenQueryTab(query, node.Connection); } } } diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index b39775c3a..023380080 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -4,7 +4,6 @@ using System.Windows.Forms; using ScintillaNET; using SolarWinds.InformationService.Contract2; -using SwqlStudio.Metadata; using WeifenLuo.WinFormsUI.Docking; namespace SwqlStudio @@ -12,7 +11,7 @@ namespace SwqlStudio public partial class QueriesDockPanel : DockPanel { private DockContent lastActiveContent = null; - private TabsFactory tabsFactory; + private ITabsFactory tabsFactory; private ObjectExplorer objectExplorer; private DockContent objectExplorerContent; private QueryParameters queryParametersContent; @@ -60,7 +59,15 @@ public QueriesDockPanel() public void CreateTabFromPrevious() { - this.tabsFactory.CreateTabFromPrevious(); + var previousTab = this.ActiveQueryTab; + if (previousTab != null) + { + this.tabsFactory.OpenQueryTab(previousTab.QueryText, previousTab.ConnectionInfo); + } + else + { + this.tabsFactory.OpenQueryTab(); + } } private Control SelectedTabFirstControl() @@ -147,11 +154,6 @@ internal void AddServer(IMetadataProvider provider, ConnectionInfo info) this.objectExplorer.AddServer(provider, info); } - internal void GenerateSelectStatement(Entity table, bool includeInheritedProperties) - { - this.objectExplorer.GenerateSelectStatement(table, includeInheritedProperties); - } - internal void CloseActiveContent() { if (HasActiveContent()) @@ -198,7 +200,7 @@ internal void OpenFiles(string[] files) internal void AddNewQueryTab() { - this.tabsFactory.AddNewQueryTab(); + this.tabsFactory.OpenQueryTab(); } internal void SetAplicationService(TabsFactory tabsFactory) diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index ed1ede048..071a13d53 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -1,9 +1,6 @@ using System; using System.IO; -using System.ServiceModel; -using System.ServiceModel.Security; using System.Windows.Forms; -using SolarWinds.InformationService.Contract2; using SwqlStudio.Metadata; using SwqlStudio.Properties; using WeifenLuo.WinFormsUI.Docking; @@ -29,20 +26,32 @@ internal class TabsFactory : ITabsFactory this.connectionsManager = connectionsManager; } - public void AddTextToEditor(string text, ConnectionInfo info) + public void OpenQueryTab() { - if (info == null) - info = this.applicationService.SelectedConnection; - - if (info == null) - return; + OpenQueryTab(null, null); + } - string title = CreateQueryTitile(); - CreateQueryTab(title, info); - this.dockPanel.ActiveQueryTab.QueryText = text; + public void OpenQueryTab(string text, ConnectionInfo info) + { + try + { + var connection = info ?? ConnectionInfo.DoWithExceptionTranslation(() => connectionsManager.ResolveConnection()); + if (connection != null) + { + string title = CreateQueryTitle(); + var queryTab = CreateQueryTab(title, connection); + queryTab.QueryText = text; + } + } + catch (Exception ex) + { + log.Error("Failed to connect", ex); + var msg = $"Unable to connect to Information Service.\n{ex.Message}"; + MessageBox.Show(msg, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - private string CreateQueryTitile() + private string CreateQueryTitle() { queryTabsCounter++; return "Query" + queryTabsCounter; @@ -94,60 +103,7 @@ public void OpenCrudTab(CrudOperation operation, ConnectionInfo info, Entity ent AddNewTab(crudTab, title); } - internal void AddNewQueryTab() - { - string msg = null; - - try - { - ConnectionInfo info = this.connectionsManager.ResolveConnection(); - if (info== null) - return; - - string title = CreateQueryTitile(); - this.CreateQueryTab(title, info); - } - catch (FaultException ex) - { - log.Error("Failed to connect", ex); - msg = ex.Detail.Message; - } - catch (SecurityNegotiationException ex) - { - log.Error("Failed to connect", ex); - msg = ex.Message; - } - catch (FaultException ex) - { - log.Error("Failed to connect", ex); - msg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message; - } - catch (MessageSecurityException ex) - { - log.Error("Failed to connect", ex); - if (ex.InnerException != null && ex.InnerException is FaultException) - { - msg = (ex.InnerException as FaultException).Message; - } - else - { - msg = ex.Message; - } - } - catch (Exception ex) - { - log.Error("Failed to connect", ex); - msg = ex.Message; - } - - if (msg != null) - { - msg = string.Format("Unable to connect to Information Service. {0}", msg); - MessageBox.Show(msg, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - internal void OpenFiles(string[] files) + public void OpenFiles(string[] files) { var connectionInfo = this.connectionsManager.ResolveConnection(); if (connectionInfo == null) @@ -186,24 +142,6 @@ internal void OpenFiles(string[] files) } } - internal void CreateTabFromPrevious() - { - var tab = this.dockPanel.ActiveConnectionTab; - if (tab != null) - { - var connection = this.connectionsManager.ResolveConnection(); - if (connection == null) - return; - - var swql = this.dockPanel.ActiveQueryTab.QueryText; - this.AddTextToEditor(swql, connection); - } - else - { - AddNewQueryTab(); - } - } - private QueryTab CreateQueryTab(string title, ConnectionInfo info) { var queryTab = new QueryTab(applicationService, serverList, info, applicationService.SubscriptionManager)