mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-18 14:39:32 +08:00
Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ff00e59ba | ||
|
|
850a342e38 | ||
|
|
1caba06aca | ||
|
|
a115196cee | ||
|
|
5f451de94e | ||
|
|
a4921fc564 | ||
|
|
7d1d03e8cd | ||
|
|
92c18a45ba | ||
|
|
a61fb5c6d6 | ||
|
|
e1deaf73ea | ||
|
|
7d6d602477 | ||
|
|
b0439adee4 | ||
|
|
0a7c88a853 | ||
|
|
b735e6d3e4 | ||
|
|
960ecba12a | ||
|
|
3988820db9 | ||
|
|
22ea7055c9 | ||
|
|
edba3fbea0 | ||
|
|
51e4bc7eae | ||
|
|
3e680235ee | ||
|
|
d2459de700 | ||
|
|
f9f265b409 | ||
|
|
c218f0362e | ||
|
|
fb68ed099e | ||
|
|
01133b3d9f | ||
|
|
52461b758b | ||
|
|
3bc5ceede4 | ||
|
|
a3c9c667b4 | ||
|
|
73f71050a0 | ||
|
|
94d901ec4c | ||
|
|
9e67f36615 | ||
|
|
bf6f166d8f | ||
|
|
1de5ab43d6 | ||
|
|
39dd75dbde | ||
|
|
b509f75c17 | ||
|
|
877649b80a | ||
|
|
b5846f2286 | ||
|
|
80dd98e7fb | ||
|
|
80f35cea71 |
@@ -1,4 +1,34 @@
|
||||
1.70 (2013-02-22):
|
||||
1.71 Beta 1 (2013-03-04):
|
||||
Added feature MR-329 - Create Option to disable the "Quick: " prefix
|
||||
Fixed issue MR-67 - Sort does not recursively sort
|
||||
Fixed issue MR-117 - Remote Session Info Window / Tab does not populate
|
||||
Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view
|
||||
Fixed issue MR-130 - Issues duplicating folders
|
||||
Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU
|
||||
Fixed issue MR-158 - Password field not accepting Pipe
|
||||
Fixed issue MR-330 - Portable version saves log to user's profile folder
|
||||
Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?'
|
||||
Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance
|
||||
Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog
|
||||
Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name
|
||||
Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss.
|
||||
Improved appearance and discoverability of the connection search box.
|
||||
If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled.
|
||||
If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode.
|
||||
|
||||
1.70 Release Candidate 3 (XXXX-XX-XX):
|
||||
Fixed issue MR-339 - Connection group collapses with just one click
|
||||
Fixed issue MR-340 - Object reference not set to an instance of an object.
|
||||
Fixed issue MR-344 - Move "Always show panel tabs" option
|
||||
Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long.
|
||||
Fixed tabs not closing on double-click when the active tab is a PuTTY connection.
|
||||
|
||||
1.70 Release Candidate 2 (2013-02-25):
|
||||
Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab
|
||||
Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG
|
||||
Re-enabled PuTTYNG integration enhancements on Windows 8
|
||||
|
||||
1.70 Release Candidate 1 (2013-02-22):
|
||||
Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId
|
||||
Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed.
|
||||
Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP
|
||||
|
||||
Binary file not shown.
BIN
Installer/Dependencies/PuTTYNG.pdb
Normal file
BIN
Installer/Dependencies/PuTTYNG.pdb
Normal file
Binary file not shown.
@@ -25,11 +25,18 @@ Namespace App
|
||||
|
||||
Public Class Update
|
||||
Public Shared ReadOnly URL As String = "http://update.mremoteng.org/"
|
||||
#If DEBUG Then
|
||||
Public Shared ReadOnly File As String = "update-debug.txt"
|
||||
#Else
|
||||
Public Shared ReadOnly File As String = "update.txt"
|
||||
#End If
|
||||
Public Shared ReadOnly Property File As String
|
||||
Get
|
||||
Select Case My.Settings.UpdateChannel.ToLowerInvariant()
|
||||
Case "beta"
|
||||
Return "update-beta.txt"
|
||||
Case "debug"
|
||||
Return "update-debug.txt"
|
||||
Case Else
|
||||
Return "update.txt"
|
||||
End Select
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
|
||||
Public Class Connections
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
Imports log4net
|
||||
Imports mRemoteNG.Messages
|
||||
Imports mRemoteNG.Connection
|
||||
Imports mRemoteNG.Config.Settings
|
||||
Imports mRemoteNG.Tools
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports System.IO
|
||||
@@ -452,30 +451,55 @@ Namespace App
|
||||
End Sub
|
||||
|
||||
Public Shared Sub CreateLogger()
|
||||
log4net.Config.XmlConfigurator.Configure(New FileInfo("mRemoteNG.exe.config"))
|
||||
Log = log4net.LogManager.GetLogger("mRemoteNG.Log")
|
||||
Log.InfoFormat("{0} started.", My.Application.Info.ProductName)
|
||||
Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs)
|
||||
Try
|
||||
Dim servicePack As Integer
|
||||
For Each managementObject As ManagementObject In New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get()
|
||||
servicePack = managementObject.GetPropertyValue("ServicePackMajorVersion")
|
||||
If servicePack = 0 Then
|
||||
Log.InfoFormat("{0} {1}", managementObject.GetPropertyValue("Caption").Trim, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
Else
|
||||
Log.InfoFormat("{0} Service Pack {1} {2}", managementObject.GetPropertyValue("Caption").Trim, servicePack.ToString, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message)
|
||||
End Try
|
||||
Log.InfoFormat("Microsoft .NET Framework {0}", System.Environment.Version.ToString)
|
||||
log4net.Config.XmlConfigurator.Configure()
|
||||
|
||||
Dim logFilePath As String
|
||||
#If Not PORTABLE Then
|
||||
Log.InfoFormat("{0} {1}", My.Application.Info.ProductName.ToString, My.Application.Info.Version.ToString)
|
||||
logFilePath = Path.Combine(GetFolderPath(SpecialFolder.LocalApplicationData), Application.ProductName)
|
||||
#Else
|
||||
log.InfoFormat("{0} {1} {2}", My.Application.Info.ProductName.ToString, My.Application.Info.Version.ToString, My.Language.strLabelPortableEdition)
|
||||
logFilePath = Application.StartupPath
|
||||
#End If
|
||||
Log.InfoFormat("System Culture: {0}/{1}", Threading.Thread.CurrentThread.CurrentUICulture.Name, Threading.Thread.CurrentThread.CurrentUICulture.NativeName)
|
||||
Dim logFileName As String = Path.ChangeExtension(Application.ProductName, ".log")
|
||||
Dim logFile As String = Path.Combine(logFilePath, logFileName)
|
||||
|
||||
Dim repository As Repository.ILoggerRepository = LogManager.GetRepository()
|
||||
Dim appenders As Appender.IAppender() = repository.GetAppenders()
|
||||
Dim fileAppender As Appender.FileAppender
|
||||
For Each appender As Appender.IAppender In appenders
|
||||
fileAppender = TryCast(appender, Appender.FileAppender)
|
||||
If Not (fileAppender Is Nothing OrElse Not fileAppender.Name = "LogFileAppender") Then
|
||||
fileAppender.File = logFile
|
||||
fileAppender.ActivateOptions()
|
||||
End If
|
||||
Next
|
||||
|
||||
Log = LogManager.GetLogger("Logger")
|
||||
|
||||
If My.Settings.WriteLogFile Then
|
||||
#If Not PORTABLE Then
|
||||
Log.InfoFormat("{0} {1} starting.", Application.ProductName, Application.ProductVersion)
|
||||
#Else
|
||||
Log.InfoFormat("{0} {1} {2} starting.", Application.ProductName, Application.ProductVersion, My.Language.strLabelPortableEdition)
|
||||
#End If
|
||||
Log.InfoFormat("Command Line: {0}", Environment.GetCommandLineArgs)
|
||||
|
||||
Try
|
||||
Dim servicePack As Integer
|
||||
For Each managementObject As ManagementObject In New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get()
|
||||
servicePack = managementObject.GetPropertyValue("ServicePackMajorVersion")
|
||||
If servicePack = 0 Then
|
||||
Log.InfoFormat("{0} {1}", managementObject.GetPropertyValue("Caption").Trim, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
Else
|
||||
Log.InfoFormat("{0} Service Pack {1} {2}", managementObject.GetPropertyValue("Caption").Trim, servicePack.ToString, managementObject.GetPropertyValue("OSArchitecture"))
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Log.WarnFormat("Error retrieving operating system information from WMI. {0}", ex.Message)
|
||||
End Try
|
||||
|
||||
Log.InfoFormat("Microsoft .NET CLR {0}", Version.ToString)
|
||||
Log.InfoFormat("System Culture: {0}/{1}", Thread.CurrentThread.CurrentUICulture.Name, Thread.CurrentThread.CurrentUICulture.NativeName)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Shared Sub UpdateCheck()
|
||||
@@ -1482,7 +1506,12 @@ Namespace App
|
||||
If Not String.IsNullOrEmpty(Uri.Host) Then
|
||||
Dim newConnectionInfo As New Connection.Info
|
||||
|
||||
newConnectionInfo.Name = String.Format(My.Language.strQuick, Uri.Host)
|
||||
If My.Settings.IdentifyQuickConnectTabs Then
|
||||
newConnectionInfo.Name = String.Format(My.Language.strQuick, Uri.Host)
|
||||
Else
|
||||
newConnectionInfo.Name = Uri.Host
|
||||
End If
|
||||
|
||||
newConnectionInfo.Protocol = Protocol
|
||||
newConnectionInfo.Hostname = Uri.Host
|
||||
If Uri.Port = -1 Then
|
||||
|
||||
@@ -5,6 +5,7 @@ Imports mRemoteNG.App.Runtime
|
||||
Imports System.Data
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.IO
|
||||
Imports PSTaskDialog
|
||||
|
||||
Namespace Config
|
||||
Namespace Connections
|
||||
@@ -206,7 +207,12 @@ Namespace Config
|
||||
sqlRd.Read()
|
||||
End If
|
||||
|
||||
Me.confVersion = Convert.ToDouble(sqlRd.Item("confVersion"), CultureInfo.InvariantCulture)
|
||||
confVersion = Convert.ToDouble(sqlRd.Item("confVersion"), CultureInfo.InvariantCulture)
|
||||
Const maxSupportedSchemaVersion As Double = 2.4
|
||||
If confVersion > maxSupportedSchemaVersion Then
|
||||
cTaskDialog.ShowTaskDialogBox(frmMain, Application.ProductName, "Incompatible database schema", String.Format("The database schema on the server is not supported. Please upgrade to a newer version of {0}.", Application.ProductName), String.Format("Schema Version: {1}{0}Highest Supported Version: {2}", vbNewLine, confVersion.ToString(), maxSupportedSchemaVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||
Throw New Exception(String.Format("Incompatible database schema (schema version {0}).", confVersion))
|
||||
End If
|
||||
|
||||
Dim rootNode As TreeNode
|
||||
rootNode = New TreeNode(sqlRd.Item("Name"))
|
||||
@@ -235,6 +241,8 @@ Namespace Config
|
||||
|
||||
sqlRd.Close()
|
||||
|
||||
Windows.treeForm.tvConnections.BeginUpdate()
|
||||
|
||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||
AddNodesFromSQL(rootNode)
|
||||
'AddNodeFromXml(xDom.DocumentElement, Me._RootTreeNode)
|
||||
@@ -248,6 +256,8 @@ Namespace Config
|
||||
End If
|
||||
Next
|
||||
|
||||
Windows.treeForm.tvConnections.EndUpdate()
|
||||
|
||||
'open connections from last mremote session
|
||||
If My.Settings.OpenConsFromLastSession = True And My.Settings.NoReconnect = False Then
|
||||
For Each conI As Connection.Info In Me._ConnectionList
|
||||
@@ -265,10 +275,12 @@ Namespace Config
|
||||
|
||||
App.Runtime.IsConnectionsFileLoaded = True
|
||||
'App.Runtime.Windows.treeForm.InitialRefresh()
|
||||
|
||||
sqlCon.Close()
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strLoadFromSqlFailed & vbNewLine & ex.Message, True)
|
||||
Finally
|
||||
If sqlCon IsNot Nothing Then
|
||||
sqlCon.Close()
|
||||
End If
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -644,6 +656,12 @@ Namespace Config
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, My.Language.strOldConffile)
|
||||
End If
|
||||
|
||||
Const maxSupportedConfVersion As Double = 2.4
|
||||
If confVersion > maxSupportedConfVersion Then
|
||||
cTaskDialog.ShowTaskDialogBox(frmMain, Application.ProductName, "Incompatible connection file format", String.Format("The format of this connection file is not supported. Please upgrade to a newer version of {0}.", Application.ProductName), String.Format("{1}{0}File Format Version: {2}{0}Highest Supported Version: {3}", vbNewLine, ConnectionFileName, confVersion.ToString(), maxSupportedConfVersion.ToString()), "", "", "", "", eTaskDialogButtons.OK, eSysIcons.Error, Nothing)
|
||||
Throw New Exception(String.Format("Incompatible connection file format (file format version {0}).", confVersion))
|
||||
End If
|
||||
|
||||
' SECTION 2. Initialize the treeview control.
|
||||
Dim rootNode As TreeNode
|
||||
|
||||
@@ -693,6 +711,8 @@ Namespace Config
|
||||
Me._RootTreeNode.SelectedImageIndex = Images.Enums.TreeImage.Root
|
||||
End If
|
||||
|
||||
Windows.treeForm.tvConnections.BeginUpdate()
|
||||
|
||||
' SECTION 3. Populate the TreeView with the DOM nodes.
|
||||
AddNodeFromXML(xDom.DocumentElement, Me._RootTreeNode)
|
||||
|
||||
@@ -705,6 +725,8 @@ Namespace Config
|
||||
End If
|
||||
Next
|
||||
|
||||
Windows.treeForm.tvConnections.EndUpdate()
|
||||
|
||||
'open connections from last mremote session
|
||||
If My.Settings.OpenConsFromLastSession = True And My.Settings.NoReconnect = False Then
|
||||
For Each conI As Connection.Info In Me._ConnectionList
|
||||
|
||||
@@ -80,7 +80,7 @@ Namespace Config
|
||||
If (Not sqlDataReader.HasRows) Then Return True ' assume new empty database
|
||||
sqlDataReader.Read()
|
||||
|
||||
databaseVersion = New System.Version(Convert.ToDouble(sqlDataReader.Item("confVersion"), CultureInfo.InvariantCulture))
|
||||
databaseVersion = New Version(Convert.ToString(sqlDataReader.Item("confVersion"), CultureInfo.InvariantCulture))
|
||||
|
||||
sqlDataReader.Close()
|
||||
|
||||
|
||||
@@ -17,14 +17,24 @@ Namespace Connection
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
Private _InterfaceControl As Connection.InterfaceControl
|
||||
Public Property InterfaceControl() As Connection.InterfaceControl
|
||||
Private WithEvents _connectionWindow As UI.Window.Connection
|
||||
Public Property ConnectionWindow As UI.Window.Connection
|
||||
Get
|
||||
Return Me._InterfaceControl
|
||||
Return _connectionWindow
|
||||
End Get
|
||||
Set(ByVal value As Connection.InterfaceControl)
|
||||
Me._InterfaceControl = value
|
||||
Set(value As UI.Window.Connection)
|
||||
_connectionWindow = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _interfaceControl As InterfaceControl
|
||||
Public Property InterfaceControl() As InterfaceControl
|
||||
Get
|
||||
Return _interfaceControl
|
||||
End Get
|
||||
Set(ByVal value As InterfaceControl)
|
||||
_interfaceControl = value
|
||||
ConnectionWindow = TryCast(_interfaceControl.GetContainerControl(), UI.Window.Connection)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -62,17 +72,29 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub ResizeBegin(ByVal sender As System.Object, ByVal e As EventArgs) Handles _connectionWindow.ResizeBegin
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub Resize(ByVal sender As System.Object, ByVal e As EventArgs) Handles _connectionWindow.Resize
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub ResizeEnd(ByVal sender As System.Object, ByVal e As EventArgs) Handles _connectionWindow.ResizeEnd
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Function SetProps() As Boolean
|
||||
Try
|
||||
Me._InterfaceControl.Parent.Tag = Me._InterfaceControl
|
||||
Me._InterfaceControl.Show()
|
||||
Me._interfaceControl.Parent.Tag = Me._interfaceControl
|
||||
Me._interfaceControl.Show()
|
||||
|
||||
If Me._Control IsNot Nothing Then
|
||||
Me._Control.Name = Me._Name
|
||||
Me._Control.Parent = Me._InterfaceControl
|
||||
Me._Control.Location = Me._InterfaceControl.Location
|
||||
Me._Control.Parent = Me._interfaceControl
|
||||
Me._Control.Location = Me._interfaceControl.Location
|
||||
Me._Control.Size = Me.InterfaceControl.Size
|
||||
Me._Control.Anchor = Me._InterfaceControl.Anchor
|
||||
Me._Control.Anchor = Me._interfaceControl.Anchor
|
||||
End If
|
||||
|
||||
Return True
|
||||
@@ -92,10 +114,6 @@ Namespace Connection
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub Resize()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overridable Sub Close()
|
||||
Dim t As New Thread(AddressOf CloseBG)
|
||||
t.SetApartmentState(Threading.ApartmentState.STA)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
Imports mRemoteNG.App.Native
|
||||
Imports System.Threading
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
@@ -86,8 +87,9 @@ Namespace Connection
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
IntAppProcessStartInfo.UseShellExecute = False
|
||||
IntAppProcessStartInfo.FileName = _IntAppPath
|
||||
IntAppProcessStartInfo.Arguments = Arguments
|
||||
IntAppProcessStartInfo.Arguments = CommandLineArguments.EscapeBackslashes(Arguments)
|
||||
|
||||
IntAppProcess = Process.Start(IntAppProcessStartInfo)
|
||||
IntAppProcess.EnableRaisingEvents = True
|
||||
@@ -120,7 +122,7 @@ Namespace Connection
|
||||
SetWindowLong(Me.IntAppHandle, 0, WS_VISIBLE)
|
||||
ShowWindow(Me.IntAppHandle, SW_SHOWMAXIMIZED)
|
||||
|
||||
Resize()
|
||||
Resize(Me, New EventArgs)
|
||||
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
@@ -139,8 +141,9 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize()
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If InterfaceControl.Size = Size.Empty Then Return
|
||||
MoveWindow(IntAppHandle, -SystemInformation.FrameBorderSize.Width, -(SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height), Me.InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), Me.InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strIntAppResizeFailed & vbNewLine & ex.Message, True)
|
||||
|
||||
@@ -6,6 +6,8 @@ Imports System.Threading
|
||||
Imports Microsoft.Win32
|
||||
Imports System.Drawing
|
||||
Imports mRemoteNG.App.Runtime
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports mRemoteNG.Tools
|
||||
|
||||
Namespace Connection
|
||||
Namespace Protocol
|
||||
@@ -111,45 +113,53 @@ Namespace Connection
|
||||
|
||||
PuttyProcess = New Process
|
||||
With PuttyProcess.StartInfo
|
||||
.UseShellExecute = False
|
||||
.FileName = _PuttyPath
|
||||
|
||||
Select Case _PuttyProtocol
|
||||
Case Putty_Protocol.raw
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.rlogin
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.ssh
|
||||
Dim userArgument As String = ""
|
||||
Dim passwordArgument As String = ""
|
||||
Dim arguments As New CommandLineArguments
|
||||
arguments.EscapeForShell = False
|
||||
|
||||
arguments.Add("-load", InterfaceControl.Info.PuttySession)
|
||||
arguments.Add("-" & _PuttyProtocol.ToString)
|
||||
|
||||
If _PuttyProtocol = Putty_Protocol.ssh Then
|
||||
Dim username As String = ""
|
||||
Dim password As String = ""
|
||||
|
||||
If Not String.IsNullOrEmpty(InterfaceControl.Info.Username) Then
|
||||
username = InterfaceControl.Info.Username
|
||||
Else
|
||||
If My.Settings.EmptyCredentials = "windows" Then
|
||||
userArgument = " -l """ & Environment.UserName & """"
|
||||
username = Environment.UserName
|
||||
ElseIf My.Settings.EmptyCredentials = "custom" Then
|
||||
userArgument = " -l """ & My.Settings.DefaultUsername & """"
|
||||
passwordArgument = " -pw """ & PuttyEscapeArgument(Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)) & """"
|
||||
username = My.Settings.DefaultUsername
|
||||
End If
|
||||
End If
|
||||
|
||||
If InterfaceControl.Info.Username <> "" Then
|
||||
userArgument = " -l """ & InterfaceControl.Info.Username & """"
|
||||
If Not String.IsNullOrEmpty(InterfaceControl.Info.Password) Then
|
||||
password = InterfaceControl.Info.Password
|
||||
Else
|
||||
If My.Settings.EmptyCredentials = "custom" Then
|
||||
password = Security.Crypt.Decrypt(My.Settings.DefaultPassword, App.Info.General.EncryptionKey)
|
||||
End If
|
||||
End If
|
||||
|
||||
If InterfaceControl.Info.Password <> "" Then
|
||||
passwordArgument = " -pw """ & PuttyEscapeArgument(InterfaceControl.Info.Password) & """"
|
||||
End If
|
||||
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -" & _PuttySSHVersion & userArgument & passwordArgument & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.telnet
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
Case Putty_Protocol.serial
|
||||
.Arguments = "-load " & """" & PuttyEscapeArgument(InterfaceControl.Info.PuttySession) & """" & " -" & _PuttyProtocol.ToString & " -P " & InterfaceControl.Info.Port & " """ & InterfaceControl.Info.Hostname & """"
|
||||
End Select
|
||||
|
||||
If _isPuttyNg Then
|
||||
.Arguments = .Arguments & " -hwndparent " & InterfaceControl.Handle.ToString()
|
||||
arguments.Add("-" & _PuttySSHVersion)
|
||||
arguments.Add("-l", username)
|
||||
arguments.Add("-pw", password)
|
||||
End If
|
||||
|
||||
arguments.Add("-P", InterfaceControl.Info.Port.ToString)
|
||||
arguments.Add(InterfaceControl.Info.Hostname)
|
||||
|
||||
If _isPuttyNg Then
|
||||
arguments.Add("-hwndparent", InterfaceControl.Handle.ToString())
|
||||
End If
|
||||
|
||||
.Arguments = arguments.ToString
|
||||
|
||||
'REMOVE IN RELEASE!
|
||||
'MessageCollector.AddMessage(MessageClass.InformationMsg, "PuTTY Arguments: " & .Arguments, True)
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, "PuTTY Arguments: " & .Arguments, True)
|
||||
End With
|
||||
|
||||
PuttyProcess.EnableRaisingEvents = True
|
||||
@@ -179,7 +189,7 @@ Namespace Connection
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strPuttyTitle, PuttyProcess.MainWindowTitle), True)
|
||||
MessageCollector.AddMessage(MessageClass.InformationMsg, String.Format(My.Language.strPuttyParentHandle, InterfaceControl.Parent.Handle.ToString), True)
|
||||
|
||||
Resize()
|
||||
Resize(Me, New EventArgs)
|
||||
|
||||
MyBase.Connect()
|
||||
Return True
|
||||
@@ -189,14 +199,6 @@ Namespace Connection
|
||||
End Try
|
||||
End Function
|
||||
|
||||
' Due to the way PuTTY handles command line arguments, backslashes followed by a quotation mark will be removed.
|
||||
' Since all the strings we send to PuTTY are surrounded by quotation marks, we need to escape any trailing
|
||||
' backslashes by adding another. See split_into_argv() in WINDOWS\WINUTILS.C of the PuTTY source for more info.
|
||||
Private Shared Function PuttyEscapeArgument(ByVal argument As String) As String
|
||||
If argument.EndsWith("\") Then argument = argument & "\"
|
||||
Return argument
|
||||
End Function
|
||||
|
||||
Public Overrides Sub Focus()
|
||||
Try
|
||||
SetForegroundWindow(PuttyHandle)
|
||||
@@ -205,10 +207,9 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize()
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
Try
|
||||
If frmMain.WindowState = FormWindowState.Minimized Then Return
|
||||
|
||||
If InterfaceControl.Size = Size.Empty Then Return
|
||||
MoveWindow(PuttyHandle, -SystemInformation.FrameBorderSize.Width, -(SystemInformation.CaptionHeight + SystemInformation.FrameBorderSize.Height), InterfaceControl.Width + (SystemInformation.FrameBorderSize.Width * 2), InterfaceControl.Height + SystemInformation.CaptionHeight + (SystemInformation.FrameBorderSize.Height * 2), True)
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strPuttyResizeFailed & vbNewLine & ex.Message, True)
|
||||
@@ -266,9 +267,6 @@ Namespace Connection
|
||||
End Function
|
||||
|
||||
Public Shared Function IsFilePuttyNg(file As String) As Boolean
|
||||
' PuTTYNG enhancements are not yet compatible with Windows 8
|
||||
If Environment.OSVersion.Version.CompareTo(New Version(6, 2)) >= 0 Then Return False
|
||||
|
||||
Dim isPuttyNg As Boolean
|
||||
Try
|
||||
isPuttyNg = FileVersionInfo.GetVersionInfo(file).InternalName.Contains("PuTTYNG")
|
||||
|
||||
@@ -12,23 +12,49 @@ Namespace Connection
|
||||
Inherits Connection.Protocol.Base
|
||||
|
||||
#Region "Properties"
|
||||
Private _SmartSize As Boolean
|
||||
Public Property SmartSize() As Boolean
|
||||
Get
|
||||
Return Me.RDP.AdvancedSettings4.SmartSizing
|
||||
Return RDP.AdvancedSettings4.SmartSizing
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
Me.RDP.AdvancedSettings4.SmartSizing = value
|
||||
RDP.AdvancedSettings4.SmartSizing = value
|
||||
ReconnectForResize()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _Fullscreen As Boolean
|
||||
Public Property Fullscreen() As Boolean
|
||||
Get
|
||||
Return Me.RDP.FullScreen
|
||||
Return RDP.FullScreen
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
Me.RDP.FullScreen = value
|
||||
RDP.FullScreen = value
|
||||
ReconnectForResize()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _redirectKeys As Boolean = False
|
||||
Public Property RedirectKeys As Boolean
|
||||
Get
|
||||
Return _redirectKeys
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
_redirectKeys = value
|
||||
Try
|
||||
If Not _redirectKeys Then Return
|
||||
|
||||
RDP.AdvancedSettings2.ContainerHandledFullScreen = 1
|
||||
RDP.AdvancedSettings2.DisplayConnectionBar = False
|
||||
RDP.AdvancedSettings2.PinConnectionBar = False
|
||||
|
||||
If RDPVersion >= Versions.RDC70 Then
|
||||
Dim msRdpClientNonScriptable As MSTSCLib.IMsRdpClientNonScriptable5 = RDP.GetOcx()
|
||||
msRdpClientNonScriptable.DisableConnectionBar = True
|
||||
End If
|
||||
|
||||
RDP.FullScreen = True
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Set
|
||||
End Property
|
||||
#End Region
|
||||
@@ -87,7 +113,7 @@ Namespace Connection
|
||||
|
||||
Me.SetUseConsoleSession()
|
||||
Me.SetPort()
|
||||
Me.SetRedirectKeys()
|
||||
RedirectKeys = Info.RedirectKeys
|
||||
Me.SetRedirection()
|
||||
Me.SetAuthenticationLevel()
|
||||
Me.SetRDGateway()
|
||||
@@ -156,14 +182,56 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize()
|
||||
Control.Location = InterfaceControl.Location
|
||||
Control.Size = InterfaceControl.Size
|
||||
MyBase.Resize()
|
||||
Private _controlBeginningSize As New Size
|
||||
Public Overrides Sub ResizeBegin(ByVal sender As Object, ByVal e As EventArgs)
|
||||
_controlBeginningSize = Control.Size
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Resize(ByVal sender As Object, ByVal e As EventArgs)
|
||||
If DoResize() And _controlBeginningSize.IsEmpty Then
|
||||
ReconnectForResize()
|
||||
End If
|
||||
MyBase.Resize(sender, e)
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub ResizeEnd(ByVal sender As Object, ByVal e As EventArgs)
|
||||
DoResize()
|
||||
If Not Control.Size = _controlBeginningSize Then
|
||||
ReconnectForResize()
|
||||
End If
|
||||
_controlBeginningSize = Size.Empty
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private Methods"
|
||||
Private Function DoResize() As Boolean
|
||||
Control.Location = InterfaceControl.Location
|
||||
If Not Control.Size = InterfaceControl.Size And Not InterfaceControl.Size = Size.Empty Then
|
||||
Control.Size = InterfaceControl.Size
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Sub ReconnectForResize()
|
||||
If RDPVersion < Versions.RDC80 Then Return
|
||||
|
||||
If Not (InterfaceControl.Info.Resolution = RDPResolutions.FitToWindow Or _
|
||||
InterfaceControl.Info.Resolution = RDPResolutions.Fullscreen) Or _
|
||||
SmartSize Then Return
|
||||
|
||||
Dim size As Size
|
||||
If RedirectKeys Or Not Fullscreen Then
|
||||
size = Control.Size
|
||||
Else
|
||||
size = Screen.FromControl(Control).Bounds.Size
|
||||
End If
|
||||
|
||||
Dim msRdpClient8 As MSTSCLib.IMsRdpClient8 = RDP.GetOcx()
|
||||
msRdpClient8.Reconnect(size.Width, size.Height)
|
||||
End Sub
|
||||
|
||||
Private Sub SetRDGateway()
|
||||
Try
|
||||
If RDP.TransportSettings.GatewayIsSupported = 1 Then
|
||||
@@ -310,19 +378,6 @@ Namespace Connection
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub SetRedirectKeys()
|
||||
Try
|
||||
If Me.Info.RedirectKeys Then
|
||||
RDP.AdvancedSettings2.ContainerHandledFullScreen = 1
|
||||
RDP.AdvancedSettings2.DisplayConnectionBar = False
|
||||
RDP.AdvancedSettings2.PinConnectionBar = False
|
||||
RDP.FullScreen = True
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, My.Language.strRdpSetRedirectKeysFailed & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub SetRedirection()
|
||||
Try
|
||||
RDP.AdvancedSettings2.RedirectDrives = Me.Info.RedirectDiskDrives
|
||||
@@ -414,6 +469,7 @@ Namespace Connection
|
||||
End Sub
|
||||
|
||||
Private Sub RDPEvent_OnLeaveFullscreenMode(ByVal sender As Object, ByVal e As System.EventArgs)
|
||||
Fullscreen = False
|
||||
RaiseEvent LeaveFullscreen(Me, e)
|
||||
End Sub
|
||||
#End Region
|
||||
@@ -626,6 +682,8 @@ Namespace Connection
|
||||
Public Class Versions
|
||||
Public Shared RDC60 As New Version(6, 0, 6000)
|
||||
Public Shared RDC61 As New Version(6, 0, 6001)
|
||||
Public Shared RDC70 As New Version(6, 1, 7600)
|
||||
Public Shared RDC80 As New Version(6, 2, 9200)
|
||||
End Class
|
||||
|
||||
#Region "Terminal Sessions"
|
||||
@@ -818,7 +876,6 @@ Namespace Connection
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
|
||||
3
mRemoteV1/Forms/frmMain.Designer.vb
generated
3
mRemoteV1/Forms/frmMain.Designer.vb
generated
@@ -689,6 +689,7 @@ Partial Class frmMain
|
||||
Me.tsExternalTools.Location = New System.Drawing.Point(39, 49)
|
||||
Me.tsExternalTools.Name = "tsExtAppsToolbar"
|
||||
Me.tsExternalTools.Size = New System.Drawing.Size(111, 25)
|
||||
Me.tsExternalTools.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsExternalTools.TabIndex = 17
|
||||
'
|
||||
'cMenExtAppsToolbar
|
||||
@@ -712,6 +713,7 @@ Partial Class frmMain
|
||||
Me.tsQuickConnect.Location = New System.Drawing.Point(3, 24)
|
||||
Me.tsQuickConnect.Name = "tsQuickConnect"
|
||||
Me.tsQuickConnect.Size = New System.Drawing.Size(331, 25)
|
||||
Me.tsQuickConnect.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.tsQuickConnect.TabIndex = 18
|
||||
'
|
||||
'btnQuickyPlay
|
||||
@@ -741,6 +743,7 @@ Partial Class frmMain
|
||||
Me.ToolStrip1.Location = New System.Drawing.Point(3, 74)
|
||||
Me.ToolStrip1.Name = "ToolStrip1"
|
||||
Me.ToolStrip1.Size = New System.Drawing.Size(264, 25)
|
||||
Me.ToolStrip1.MaximumSize = New System.Drawing.Size(0, 25)
|
||||
Me.ToolStrip1.TabIndex = 19
|
||||
Me.ToolStrip1.Visible = False
|
||||
'
|
||||
|
||||
@@ -124,7 +124,7 @@ Public Class frmMain
|
||||
mMenViewConfig.Text = My.Language.strMenuConfig
|
||||
mMenViewSessions.Text = My.Language.strMenuSessions
|
||||
mMenViewErrorsAndInfos.Text = My.Language.strMenuNotifications
|
||||
mMenViewScreenshotManager.Text = My.Language.strMenuScreenshotManager
|
||||
mMenViewScreenshotManager.Text = My.Language.strScreenshots
|
||||
mMenViewJumpTo.Text = My.Language.strMenuJumpTo
|
||||
mMenViewJumpToConnectionsConfig.Text = My.Language.strMenuConnectionsAndConfig
|
||||
mMenViewJumpToSessionsScreenshots.Text = My.Language.strMenuSessionsAndScreenshots
|
||||
@@ -167,8 +167,17 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||
If WindowList IsNot Nothing Then
|
||||
If My.Settings.ConfirmExit And WindowList.Count > 0 Then
|
||||
If My.Settings.ConfirmExit And Not (WindowList Is Nothing OrElse WindowList.Count = 0) Then
|
||||
Dim connectionWindow As UI.Window.Connection
|
||||
Dim openConnections As Integer = 0
|
||||
For Each window As UI.Window.Base In WindowList
|
||||
connectionWindow = TryCast(window, UI.Window.Connection)
|
||||
If connectionWindow IsNot Nothing Then
|
||||
openConnections = openConnections + connectionWindow.TabController.TabPages.Count
|
||||
End If
|
||||
Next
|
||||
|
||||
If openConnections > 0 Then
|
||||
Dim result As DialogResult = cTaskDialog.MessageBox(Me, My.Application.Info.ProductName, My.Language.strConfirmExitMainInstruction, "", "", "", My.Language.strCheckboxDoNotShowThisMessageAgain, eTaskDialogButtons.YesNo, eSysIcons.Question, Nothing)
|
||||
If cTaskDialog.VerificationChecked Then
|
||||
My.Settings.ConfirmExit = False
|
||||
@@ -701,22 +710,32 @@ Public Class frmMain
|
||||
#End Region
|
||||
|
||||
#Region "Window Overrides and DockPanel Stuff"
|
||||
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
|
||||
If Me.WindowState = FormWindowState.Minimized Then
|
||||
Private _inSizeMove As Boolean = False
|
||||
Private Sub frmMain_ResizeBegin(ByVal sender As Object, ByVal e As EventArgs) Handles Me.ResizeBegin
|
||||
_inSizeMove = True
|
||||
End Sub
|
||||
|
||||
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Resize
|
||||
If WindowState = FormWindowState.Minimized Then
|
||||
If My.Settings.MinimizeToTray Then
|
||||
If App.Runtime.NotificationAreaIcon Is Nothing Then
|
||||
App.Runtime.NotificationAreaIcon = New Tools.Controls.NotificationAreaIcon()
|
||||
If NotificationAreaIcon Is Nothing Then
|
||||
NotificationAreaIcon = New Tools.Controls.NotificationAreaIcon()
|
||||
End If
|
||||
Me.Hide()
|
||||
Hide()
|
||||
End If
|
||||
Else
|
||||
PreviousWindowState = Me.WindowState
|
||||
PreviousWindowState = WindowState
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private _inMouseActivate As Boolean = False
|
||||
Private _inSizeMove As Boolean = False
|
||||
Private Sub frmMain_ResizeEnd(ByVal sender As Object, ByVal e As EventArgs) Handles Me.ResizeEnd
|
||||
_inSizeMove = False
|
||||
|
||||
' This handles activations from clicks that started a size/move operation
|
||||
ActivateConnection()
|
||||
End Sub
|
||||
|
||||
Private _inMouseActivate As Boolean = False
|
||||
Protected Overloads Overrides Sub WndProc(ByRef m As Message)
|
||||
Try
|
||||
#If Config = "Debug" Then
|
||||
@@ -734,8 +753,8 @@ Public Class frmMain
|
||||
|
||||
Dim control As Control = FromChildHandle(WindowFromPoint(MousePosition))
|
||||
If Not IsNothing(control) Then
|
||||
' Let ComboBoxes get focus but don't simulate a mouse event
|
||||
If TypeOf control Is ComboBox Then Exit Select
|
||||
' Let TreeViews and ComboBoxes get focus but don't simulate a mouse event
|
||||
If TypeOf control Is TreeView Or TypeOf control Is ComboBox Then Exit Select
|
||||
|
||||
If control.CanSelect Or TypeOf control Is MenuStrip Or TypeOf control Is ToolStrip Or TypeOf control Is Magic.Controls.InertButton Then
|
||||
' Simulate a mouse event since one wasn't generated by Windows
|
||||
@@ -749,13 +768,6 @@ Public Class frmMain
|
||||
|
||||
' This handles activations from clicks that did not start a size/move operation
|
||||
ActivateConnection()
|
||||
Case WM_ENTERSIZEMOVE
|
||||
_inSizeMove = True
|
||||
Case WM_EXITSIZEMOVE
|
||||
_inSizeMove = False
|
||||
|
||||
' This handles activations from clicks that started a size/move operation
|
||||
ActivateConnection()
|
||||
Case WM_WINDOWPOSCHANGED
|
||||
' Ignore this message if the window wasn't activated
|
||||
Dim windowPos As WINDOWPOS = Marshal.PtrToStructure(m.LParam, GetType(WINDOWPOS))
|
||||
|
||||
@@ -124,154 +124,154 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
|
||||
IgAAAk1TRnQBSQFMAgEBBwEAARABAQEQAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIB4AAeIB7wH0Af8BqAHJAdcB/wFvAaQBtgH/AVIBhgGcAf8BPQFkAYoB/wE4
|
||||
AV8BhwH/ATgBaQGVAf8BSwGOAasB/wGPAbcBzQH/Ad0B6gHxAf8MAANXAbcDnwH/A5oB/wOWAf8DkQH/
|
||||
A40B/wOJAf8DhAH/A4AB/wNaAf8DVgH/A1IB/wNPAf8DSwH/A0gB/wNXAbcYAAMNARIDVgG2A1YBtgMN
|
||||
ARFgAAGtAc8B3wH/AUoBkQGtAf8BTwGjAb8B/wFrAcAB1AH/AZUB2QHmAf8BgQHbAfAB/wFDAcYB7AH/
|
||||
ARcBqgHdAf8BCQGSAccB/wEVAYABrAH/ASwBZAGSAf8BnQG/AdEB/wgAA6gB/wPpAf8D0wH/A9IB/wPR
|
||||
Af8D0AH/A84B/wPNAf8DzQH/A8sB/wPLAf8DygH/A8kB/wPIAf8D4gH/A0gB/xgAA14B2QPkAf8D4wH/
|
||||
A1gBwWAAAU0BhAGbAf8BNwG9AecB/wFaAdMB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUMBygHw
|
||||
Af8BEQG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGWAdIB/wEwAVEBbQH/CAADrQH/A9YB/wO6Af8DuAH/
|
||||
A7UB/wOzAf8DsQH/A7AB/wOtAf8DqwH/A6oB/wOoAf8DpwH/A6YB/wPIAf8DTAH/CAADCwEPA1QBrQM6
|
||||
AWEDPwFuA3MB+AHiAeEB3wH/AeEB4AHfAf8DXwHzAzwBZwM8AWYDUwGtAwsBD1AAAVABhwGeAf8BNgHE
|
||||
AfAB/wFcAdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUMBygHwAf8BEQG2Ae0B/wEAAagB6AH/
|
||||
AQABoQHhAf8BAAGcAdoB/wExAVIBbwH/CAADsQH/A9kB/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOw
|
||||
Af8DrwH/A60B/wOrAf8DqQH/A6gB/wPKAf8DUAH/CAADWgHFBP8CnAGbAf4CmwGaAf4C5wHmAf8B1gHV
|
||||
AdMB/wHXAdYB1AH/AeMB4gHgAf8BkAGPAY0B/gKpAagB/QHpAegB5gH/A1gBwVAAAVIBiQGgAf8BNgHE
|
||||
Ae8B/wFbAdQB8QH/AY0B4wH0Af8BogHrAfYB/wGCAd8B8wH/AUQBygHwAf8BEQG2Ae0B/wEAAagB6AH/
|
||||
AQABoQHhAf8BAAGcAdoB/wEzAVUBcQH/CAADtgH/A90B/wPBAf8DvQH/A7wB/wO6Af8DuAH/A7UB/wO0
|
||||
Af8DsgH/A7AB/wOtAf8DrAH/A6wB/wPPAf8DVAH/CAADZAHnAvkB9wH/Au8B7gH/AtsB2gH/AcoCyQH/
|
||||
AckByAHGAf8ByQHIAccB/wHJAcgBxwH/AssByQH/AeYB5QHkAf8B5QHkAeIB/wNlAeVQAAFUAYwBogH/
|
||||
ATgBxgHwAf8BXQHUAfEB/wGMAeMB9AH/AaIB6wH2Af8BggHfAfQB/wFEAcoB8AH/AREBtgHtAf8BAAGo
|
||||
AegB/wEAAaIB4gH/AQABmwHbAf8BNQFYAYAB/wgAA1oBvQPaAf8DyAH/A8AB/wO/Af8DvQH/A7oB/wO4
|
||||
Af8DtwH/A7UB/wOzAf8DsAH/A68B/wOzAf8DwgH/A1oBvQgAA04BlQH2AfUB9AH/AeYB5QHkAf8BvwG+
|
||||
Ab0B/wLrAeoB/wHUAdMB0gH/AdYB1QHUAf8B4gLhAf8CtAGzAf8B1wHWAdQB/wHiAeEB3wH/A0oBjVAA
|
||||
AVcBjwGlAf8BOQHGAfAB/wFdAdQB8gH/AY0B4wH0Af8BogHrAfYB/wGDAd8B9AH/AUMBygHwAf8BEQG2
|
||||
Ae0B/wEAAacB6AH/AQABoQHiAf8BAAGcAdsB/wE3AVsBgwH/CAADWgG9A+MB/wPnAf8D4QH/A+AB/wPg
|
||||
Af8D3wH/A98B/wPeAf8D3QH/A90B/wPcAf8D2wH/A+AB/wPQAf8DWgG9AwsBDwNVAbUDZAHnAeQB4wHi
|
||||
Af8B0QHQAc8B/wLwAe8B/wOuAf8DZAHxA2cB8gKsAasB/wLoAecB/wLLAcoB/wHgAd8B3QH/A2EB5ANV
|
||||
AbUDCwEPSAABWAGSAagB/wE5AcUB8AH/AV4B1AHyAf8BjQHjAfQB/wGiAesB9gH/AYIB3wH0Af8BQwHK
|
||||
AfAB/wERAbYB7QH/AQABpwHoAf8BAAGhAeEB/wEAAZwB2wH/ATkBXgGGAf8IAAMpAT8DzgH/A+wB/wPe
|
||||
Af8D2AH/A9IB/wPMAf8DyAH/A8cB/wPIAf8DywH/A9AB/wPdAf8D6AH/A6QB/wMrAUIDPwFtAuQB4wH/
|
||||
AdgB1gHVAf8B0gHRAdAB/wHFAcQBwwH/Ae0B7AHrAf8DVwG6CAADXAHNAegB5wHmAf8BtgG1AbQB/wHW
|
||||
AdUB0wH/AeIB4QHgAf8C4AHfAf8DPAFmSAABWwGVAasB/wE5AcUB8AH/AV4B1AHyAf8BjQHjAfQB/wGi
|
||||
AesB9gH/AYMB3wH0Af8BRAHLAfAB/wERAbUB7QH/AQABpwHoAf8BAAGhAeIB/wEAAZwB2gH/ATwBYQGI
|
||||
Af8MAANaAb0D4wH/A9sB/wPiAf8BtwHQAbgB/wFCAa0BRgH/AVQBqgFCAf8BTgGvAUYB/wE0AaUBQAH/
|
||||
AawBxQGsAf8DwgH/A9EB/wPTAf8DWgG9BAADQgF2AewB6wHoAf8B2gHZAdcB/wHUAdMB0QH/AcYBxQHE
|
||||
Af8B3gLcAf8DRgF+CAADUAGaAd0B3AHbAf8ByAHGAcUB/wLiAeEB/wLhAd8B/wHuAe0B7AH/Az8Bb0gA
|
||||
AV0BmAGuAf8BOQHFAfAB/wFeAdQB8QH/AY0B4wH0Af8BogHrAfYB/wGDAd8B9AH/AUQBygHwAf8BEQG2
|
||||
Ae0B/wEAAagB6QH/AQABoQHhAf8BAAGcAdoB/wE+AWMBigH/DAADKQE/A9EB/wPzAf8BxwHeAcoB/wFC
|
||||
AckBhQH/AbMB3AGkAf8B5wHHAVoB/wHcAb8BUQH/AVQBzAGPAf8BLQGtAUYB/wG4AdABuAH/A/EB/wOv
|
||||
Af8DKwFCBAADLwFKA2AB6wN6AfwB3gHdAdwB/wHLAsoB/wHmAuUB/wNhAeEDMgFQAzgBXANgAesC7gHs
|
||||
Af8BzALLAf8B5wHmAeUB/wN6AfwDYAHrAywBQ0gAAWABmwGwAf8BOAHGAfAB/wFeAdQB8gH/AY0B4wH0
|
||||
Af8BogHrAfYB/wGDAd8B9AH/AUQBygHwAf8BEQG2Ae0B/wEAAagB6AH/AQABoQHhAf8BAAGcAdoB/wFB
|
||||
AWcBjgH/EAADWgG9A8QB/wFUAc4BiwH/AZkB5AGrAf8BsAHFATsB/wHqAbUBJgH/AeEBogEXAf8BpQGd
|
||||
AR4B/wGCAcUBjwH/AScBmgE0Af8DoAH/A1oBvRAAA14BzgHhAeAB3gH/AdkB1wHWAf8BuAK3Af8B4QHg
|
||||
Ad8B/wOoAf0DqQH9AvYB9QH/AsABvwH/AeoB6QHoAf8C8wHyAf8DXAHJUAABYwGfAbMB/wE4AcYB8AH/
|
||||
AVwB1AHxAf8BjAHjAfQB/wGiAesB9gH/AYMB3wH0Af8BRAHKAfAB/wERAbYB7QH/AQABpwHoAf8BAAGh
|
||||
AeEB/wEAAZsB2gH/AUMBagGQAf8YAAFgAXwBawH8AaIB6QGVAf8B1gHPAUcB/wHiAbMBJQH/AdEBuwEt
|
||||
Af8BwgGuASAB/wGCAb0BSgH/ASsBcQFWAfwYAANMAZEB4wHiAeAB/wLeAdwB/wHhAeAB3wH/AcwCywH/
|
||||
AcQBwwHCAf8CzwHOAf8C3gHdAf8C8AHvAf8C8AHvAf8C9gH1Af8DSAGHUAABZAGhAbUB/wFeAdUB9AH/
|
||||
AZoB6AH3Af8BtQHzAfoB/wHCAfgB/AH/AcMB+AH9Af8BwQH3Af0B/wGvAfAB+wH/AY8B4gH3Af8BXQHQ
|
||||
AfAB/wExAbgB5QH/AUYBbQGTAf8YAAFiAXwBbAH8AaIB8AGfAf8B2AHtAa8B/wHeAcUBRgH/AbQB4gFD
|
||||
Af8BPgHnARcB/wFJAdcBSQH/ATABcwFdAfwUAAMBAQIDXwHjAeUB5AHhAf8C7gHtAf8C7gHtAf8C6wHq
|
||||
Af8B4wHiAeEB/wLoAecB/wLqAekB/wLzAfIB/wL1AfQB/wH6AfkB+AH/A1wB31AAAWcBowG4Af8BxQH5
|
||||
Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/
|
||||
AcUB+QH9Af8BxQH5Af0B/wFIAXABlQH/GAADYQHcAcgB9wHUAf8B2AH2AcoB/wHnAeMBqQH/AdsBzwFK
|
||||
Af8BrwHcAUYB/wGdAeoBqwH/A18B4BgAA0ABbwN/Af4DZAHnA18B8wHoAecB5gH/AecB5gHlAf8C7QHs
|
||||
Af8C+wH6Af8DZwHyA2QB5wN/Af4DPQFoUAABtwHXAeEB/wGMAb0BzAH/AZ0BzwHbAf8BrQHfAegB/wG5
|
||||
AewB8wH/AcIB9QH6Af8BwgH1AfoB/wG4AesB8QH/AakB2gHjAf8BlAHEAdEB/wFuAagBuAH/AakBxQHR
|
||||
Af8YAAMtAUUBXQF4AW8B+gHbAfgB6QH/AecB8gHYAf8B7QHlAbMB/wHfAdkBpgH/AV8BhwFfAfsDMgFQ
|
||||
IAADDwEUAwoBDgNTAaoB7wHuAe0B/wL0AfMB/wNSAaQDCAELAxEBF1gAAv4C/wHjAfEB9AH/AbkB1wHh
|
||||
Af8BlQG+AcwB/wFuAagBuwH/AWEBmwGwAf8BXQGYAa0B/wFmAaEBswH/AYwBsgHCAf8BsQHNAdcB/wHf
|
||||
AesB7wH/A/4B/xwAAy4BRwNeAdkBZgF8AWoB/AFmAXsBZgH8A14B3QMyAVAsAAMvAUoDXQHwA2IB7wMs
|
||||
AUNkAAMRARcDVgGzAVMBVAFTAay0AAMEAQUDEAEVAx8BLQMpAT8DLwFJAy4BSAMoAT0DHgErAw8BFAMD
|
||||
AQQQAAO3Af8BnAGoAZ4B/wEAAVUBMAH/ARoBkgFSAf8BAAFZATAB/wECAUYBoAH/AQABRAGeAf8BAAFB
|
||||
AZsB/wEAAT8BmQH/AQABPQGXAf8BAAE6AZQB/wEAATkBkwH/A0oB/wNKAf8cAANBAXIBTAJfAfMBWQJc
|
||||
Ac8BSwJMAZADIwEzXAADBQEHAx8BLAI+AT0BagJSAVABowFbAlkBxAFdAloB0wFdAloB0wFbAlkBwwFS
|
||||
AlEBoQM8AWYDHAEoAwQBBgwAAxUBHQNRAaIBHwGVAVYB/wGCAb4BqgH/AS4BpQGCAf8BDwGXAUgB/wES
|
||||
AZkBTQH/ARYBmQFRAf8BGgGdAVYB/wFUAaoB0gH/AVIBqAHRAf8BAAE7AZUB/yAAAyEBMAErATQBagH8
|
||||
AYYBrQHhAf8BXAGoAdwB/wE9AZIByQH/AQ4BUAGrAf8BVQJWAbEDHwEtUwABAQMSARgDPgFrAV0CWQHX
|
||||
AVgCKwH8AawBKwECAf8B4QFLAR8B/wHkAV0BMwH/AdMBSQEXAf8BowFAATgB/QFhAl4B2gI+AT0BagMP
|
||||
ARQIAAMYASIBUAFSAVABpANWAbMBSwGsAZ8B/wFSAbcBngH/AVwBuwGsAf8BXAG7Aa4B/wFdAbsBsAH/
|
||||
AYABvAGzAf8BFQGaAVkB/wEyAZUBxwH/AVUBqwHTAf8BAAE+AZgB/yAAAVQCVgGrAUsBnQHRAf8BmQG8
|
||||
AesB/wFPAaAB4wH/AZYBuQHqAf8BlAG4AeoB/wE+AZMBygH/AisBZgH8A0MBeFAAAxsBJgNZAdIBGwEF
|
||||
AQAB/wGKAToBIgH/AcoBhgFEAf8B9gG8AZwB/wH5AcwBtwH/AeMBoAFWAf8BsQFVATsB/wFXATEBEgH/
|
||||
AV4CWAHdAxwBKAgAAVUBVgFVAbEDVgGzA1YBswE6AaQBkQH/AU0BtgGbAf8BRgGyAZsB/wFIAbIBngH/
|
||||
AUoBswGhAf8BhQG/AbYB/wEcAZ4BggH/ATcBmQHJAf8BWQGtAdQB/wEAAUIBnAH/HAADHwEtASsBSQFu
|
||||
AfwBnQG/AewB/wFHAZwB4gH/ATkBkwHfAf8BNgGRAd8B/wE9AZQB4AH/AZUBuAHqAf8BhgGtAeEB/wEn
|
||||
AYMBuwH/AUsCTAGQBAADnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOd
|
||||
Af8DnQH/A50B/wOdAf8DnQH/CAABUwJPAaUBMgEXAQAB/wFXAUIBLQH/AY8BVAE/Af8BrAGIAUkB/wHC
|
||||
AaMBiAH/AcEBpQGOAf8BswGYAYEB/wGRAVQBPgH/AVIBOQEkAf8BQQEaAQAB/wFWAlUBsQgAAwgBCwNV
|
||||
AbIDVgGzAVQBsgGoAf8BWwG9AacB/wGHAcEBtQH/AYYBwQG2Af8BhwHBAbcB/wGIAcEBuQH/ASIBogGI
|
||||
Af8BPAGcAcsB/wFdAbAB1QH/AQEBRQGfAf8QAAMrAUIDSAGEAVUCVwG3AUwCXwHzAVQBpAHXAf8BoQHC
|
||||
Ae0B/wGfAcAB7QH/AZ0BvwHtAf8BUgGjAeQB/wE4AZIB3wH/ATYBkAHeAf8BWQGnAeYB/wGSAbYB6AH/
|
||||
ASEBXQG3Af8DNwFaA50B/wG6Ar0B/wHmAuwB/wHmAu0B/wHnAu0B/wHoAu4B/wHpAu8B/wHpAu8B/wHq
|
||||
Au8B/wHqAvAB/wHrAvAB/wHrAvEB/wHsAvEB/wHsAvEB/wG9Ar8B/wOdAf8EAAM5AV8BUwEzARgB/wHD
|
||||
AbEBogH/AbYBnAGDAf8BpgFXASoB/wGoAVUBJwH/AcMBpAGHAf8B2AHGAbAB/wG9AakBiwH/AV0BPQEd
|
||||
Af8BOgEaAQAB/wEwAQwBAAH/ATcBEAEAAf8DMwFTCAADBgEIA1UBsgEtAaABigH/AZMByQG6Af8BPQGv
|
||||
AZcB/wEiAaIBgwH/ASMBowGHAf8BJQGkAYsB/wEkAaoBkgH/ATIBwgHtAf8BgQG0AdcB/wEGAUkBowH/
|
||||
DAADTAGTAUIBlwHPAf8BWQGoAdkB/wGNAbQB4gH/AaMBxAHtAf8BpwHHAe4B/wFCAZcBzQH/ARIBUwGy
|
||||
Af8BPQGTAckB/wGfAcAB7QH/AVYBlgGjAf8BngGWASYB/wFaAZQBkQH/AY0BswHpAf8BVwGlAdgB/wFa
|
||||
Al4B2AQAA1wB6gHbAuIB/wHNAs8B/wPLAf8DzAH/A84B/wPPAf8D0AH/A9IB/wPTAf8D1QH/AdcC2AH/
|
||||
AecC7AH/A20B9wQAAyIBMQFWAlUBsQFFARkBAAH/AaoBhQE9Af8BsgFQAQ4B/wGtAS0BAAH/AboBSgEC
|
||||
Af8B6gHVAb8B/wH9AfwB+gH/AdYBvgGmAf8BkAE9AQoB/wFAAQ4BAAH/AUEBHgEAAf8BOgEaAQAB/wNX
|
||||
AcUDHAEnCAADBAEGARMBlAFVAf8BTAG5AZ4B/wEnAaYBiQH/AVcBsQHVAf8BUwGtAdQB/wFPAasB0gH/
|
||||
AT0BugHkAf8BAAGZAUcB/wEFAY4BNgH/AQgBTgGaAf8MAAFIAmIB9gGuAc0B8AH/AbABzwHwAf8BmAG/
|
||||
AewB/wFcAa4B5wH/AaoBygHvAf8BGwFZAbgB/wQAARMBVAGzAf8BogHDAe0B/wGoAZcBDwH/AcQBtQE4
|
||||
Af8BrAGXAQQB/wE5AZMB3wH/AZgBuwHrAf8BAAFCAZ8B/wQAA1wB6gHZAuEB/wHLAswB/wPHAf8DyAH/
|
||||
A8oB/wPLAf8DzQH/A84B/wPQAf8D0QH/AdMC1AH/AeUC6wH/A20B9wQAAy4BRwNZAewBQAEOAQAB/wGZ
|
||||
AS0BAAH/AbgBRQEAAf8BwgFBAQAB/wHJAVMBAQH/AeYBvwGUAf8B7AHUAbYB/wHNAZwBQAH/AagBSgEK
|
||||
Af8BmQFLAR8B/wGjAYwBUAH/AV0BRAEtAf8CUQE/AfcBNQI0AVUMAAE2AY4BxAH/ATABrAGLAf8BLQGq
|
||||
AY8B/wFcAbUB2AH/AVgBsgHWAf8BVQGvAdUB/wFRAawB0wH/AQIBkAFAAf8BNwGoAYQB/wEAAVYBMQH/
|
||||
AxQBGwgAAVoCYAHeAagByQHtAf8BhAGnAe0B/wE2AUgB7QH/AUgBjgHpAf8BrQHNAfAB/wFLAZ0B0gH/
|
||||
ARwBWgG5Af8BRQGZAc4B/wGlAcUB7gH/AZUBmgFHAf8BrQGXAQQB/wGdAZcBKwH/AUQBmwHiAf8BmAG7
|
||||
AeoB/wFIAmIB9gQAA1wB6gHXAt8B/wHHAskB/wPCAf8DxAH/A8UB/wPIAf8DyQH/A8oB/wPMAf8DzQH/
|
||||
AdAC0QH/AeMC6gH/A20B9wQAAzkBXwJAASUB/QFSARkBAAH/Aa4BNwEAAf8BwAE/AQAB/wHnAZYBJAH/
|
||||
AegBsgFYAf8B5AGxAVgB/wHSAYkBFwH/Ab0BRAEAAf8BqAEyAQAB/wG4AY0BOwH/AdQBwwGyAf8BmAGE
|
||||
AUwB/wE5ARsBAAH/AT4CPQFqDAABPAGRAckB/wGkAcwB5AH/AYcBuwHbAf8BHQGhAVgB/wEXAZwBUgH/
|
||||
ARIBmgFOAf8BDQGWAUgB/wEpAaMBgQH/AYQBwAGrAf8BIAGWAVcB/wNRAaIDFQEdBAADUQGcAZIBuQHl
|
||||
Af8BTAFSAfYB/wGBAYQB9QH/Ah4B8AH/AZABuwHrAf8BrgHNAfAB/wGsAcwB8AH/AaoBygHwAf8BhQGy
|
||||
AekB/wE8AakBwQH/ASIBswGNAf8BNAGoAbYB/wFOAaEB5AH/AZcBugHoAf8DXQHtBAADXAHqAdYC3wH/
|
||||
AcMCxQH/A8AB/wPAAf8DwgH/A8MB/wPEAf8DxQH/A8gB/wPJAf8DzQH/AeAC6AH/A20B9wQAAzcBWgJN
|
||||
ASgB+gGDASQBAAH/AcsBTgEAAf8B5QGLARsB/wH+AbYBUAL/AeMBwgH/AfQBvAGFAf8B1gFVAQcB/wHF
|
||||
AUwBAAH/AboBQQEAAf8BrwFVARcB/wGuAYgBOwH/AZQBVAE7Af8BOgEcAQAB/wM8AWYMAAFBAZUBzQH/
|
||||
AagBzwHlAf8BjAG/Ad0B/wEjAaUBgQH/AY0BxQG4Af8BiQHDAbQB/wGGAcEBsQH/AYQBvwGvAf8BVQG5
|
||||
AZ8B/wFMAa0BoAH/A1YBswFQAVIBUAGkAxgBIgMjATMBKwFjAXkB/AGSAaQB9QH/ATcBOAH2Af8BLwGG
|
||||
AfQB/wEZAaYB+wH/AToBqwHyAf8BXAGvAecB/wFZAa0B5wH/AVYBqgHmAf8BHQG2AYAB/wE+AcgBlwH/
|
||||
ARkBtwFYAf8BWwGsAecB/wGPAbUB4wH/AVoCXgHVBAADYAHWAccCzQH/AdsC5AH/AdsC5AH/AdsC5QH/
|
||||
AdwC5QH/AdwC5QH/Ad0C5gH/Ad0C5gH/Ad4C5wH/Ad8C6AH/AeAC6AH/Ac0C0wH/A18B4wQAAyYBOQFg
|
||||
AloB3gGOASwBAAH/AewBngExAf8B/gG/AYUC/wHMAaEC/wHfAbsB/wH+AcIBXQH/AeIBjgEnAf8B0wGE
|
||||
ARgB/wHKAVcBCgH/AbUBTgEIAf8BlwE/AQUB/wGBATwBFwH/A1kB7AMuAUgMAAFFAZgB0AH/AasB0QHn
|
||||
Af8BkAHCAd8B/wEqAakBiAH/AZEByQG7Af8BVAG6AaUB/wFQAbgBoQH/AUwBtgGeAf8BUAG4AZ0B/wE7
|
||||
AaUBkgH/A1YBswNWAbMBVQFWAVUBsQQAA0kBhwGGAa8B4QH/AbkB1wHzAf8BEAGmAf4B/wFKAb8C/wEJ
|
||||
AaMC/wFEAb4B8AH/ARgBzgH7Af8BOAG+AfEB/wEwAbMBoAH/ARkBtwFXAf8BJQGzAZAB/wGnAcgB7gH/
|
||||
AVUBpQHWAf8BTwJRAZwEAAMsAUMDWwHIA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wNeAd0DMQFOBAADCQEMA0sBjgHAAUwBCwL/AbwBXQH/AfoBzgGnAf8B+AHbAb4C/wHiAcYC/wG+
|
||||
AYYB/wH0AawBUwH/AewBwgGaAf8B4gG1AYsB/wG4AVMBEQH/AZ0BQgEKAf8BiAFCAR4B/wNPAaUDEAEV
|
||||
DAABSQGbAdMB/wGuAdQB6AH/AasB0wHoAf8BNwGxAZAB/wGbAc4BwAH/AZkBzQG9Af8BlgHLAbsB/wGV
|
||||
AcoBuQH/AYABvwGoAf8BVQGzAakB/wNWAbMDVQGyAwgBCwQAAwQBBgNRAZ8BhQGuAeEB/wE4AbIB+QH/
|
||||
AQkBowL/AR4BqQH7Af8BDgHTAf4B/wFKAeIC/wEJAdUC/wFdAbAB6AH/AVoBrQHnAf8BqQHKAe8B/wGl
|
||||
AcUB7QH/ASsBVQFwAfwDIQEwRAADEwEaAmQBUwHxAdgBngFQAf8B5wHTAcAB/wH8AfUB7gL/AfgB6wL/
|
||||
AeUBwgH/AfYBuQGCAf8B8gHSAbgB/wHuAdIBtgH/AcIBhgEsAf8BpwFUASUB/wJNASkB+gMdASkQAAFM
|
||||
AZ0B1QH/AUoBmwHTAf8BRwGaAdIB/wEnAaEBjAH/ASIBnwGKAf8BHwGdAYUB/wEbAZkBgAH/ATQBpQGS
|
||||
Af8BXQG4AbEB/wEuAaEBiwH/A1UBsgMGAQgQAANCAXUBXwJiAfYBjgG2AeMB/wG5AdcB8wH/ATsB1QH7
|
||||
Af8BCAHVAv8BHwHRAfsB/wGzAdIB8gH/AbEB0AHxAf8BkgG4AeIB/wFAAZUBzAH/A0oBikwAAzUBVwGp
|
||||
AUABEgH/AcoBuAGoBv8B/gH8Av8B9gHiAf8B+wHFAaAB/wHkAbkBlQH/AdsBrAFbAf8BwwGOAToB/wGT
|
||||
AUIBFgH/AT4CPQFqMAABUwJUAawDVgGzA1YBswMEAQYYAAMWAR4DVAGuAVQBowHcAf8BkQG4AeQB/wGo
|
||||
AcoB7AH/AaUBxwHsAf8BjQG1AeIB/wFGAZoB0gH/AVoCXwHbAzEBTlQAAzIBUQJkAVkB7AHQAbIBlQH/
|
||||
AewB4AHZAf8B5gHVAcQB/wHTAbABlAH/AdMBpgFVAf8BywGPATMB/wFnAWUBWQHyAToCOQFgNAABUwJU
|
||||
AawDVgGzAwQBBiQAAysBQgNMAZABWwJdAdIBWQJcAc8DTgGZAy0BRWAAAxEBFwNEAXoCWgFXAcUCZQFe
|
||||
AeUCYQFYAeYCXAFZAckCSAFHAYMDFQEdEAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEB
|
||||
FgAD/wEAAeABBwIAAfwBPwIAAcABAwIAAfwBPwIAAcABAwIAAcABAwIAAcABAwIAAcABAwIAAcABAwIA
|
||||
AcABAwIAAcABAwIAAcABAwIAAcABAwYAAcABAwIAAQEBgAIAAcABAwGAAgEBgAIAAcABAwGAAQEEAAHA
|
||||
AQMBwAEDAcABAwIAAcABAwHwAQ8BwAEDAgABwAEDAfABDwGAAQMCAAHAAQMB8AEPAcABAwIAAcABAwHw
|
||||
AQ8B8AEPAgABwAEDAfgBHwH8AT8CAAHjBf8B4AEHAYABAQH8AR8C/wHAAQMBgAEHAfgBBwL/AYABAwEA
|
||||
AQcB+AEDAv8BwAEDAQABBwHwAQECAAHAAQMBAAEHAYADAAGAAQEBgAEHAgABgAEBAgABwAEHAQEBAAGA
|
||||
AQECAAHgAQMCAAGAAQECAAHgAQECAAGAAQECAAHgAwABgAEBAgAB4AEAAYABAAGAAQECAAHgAQABgAEA
|
||||
Av8BgAEBAeABAQHgAQEC/wHAAQMB/wHDAfABAwL/AeABBwH/AccB/AEPAv8B8AEPCw==
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABi
|
||||
IgAAAk1TRnQBSQFMAgEBBwEAASABAQEgAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIB4AAeIB7wH0Af8BqAHJAdcB/wFtAaQBtgH/AVABhgGcAf8BOwFiAYoB/wE2
|
||||
AV0BhwH/ATYBZwGVAf8BSQGOAasB/wGPAbcBzQH/Ad0B6gHxAf8MAANXAbcDnwH/A5oB/wOWAf8DkQH/
|
||||
A40B/wOJAf8DhAH/A4AB/wNYAf8DVAH/A1AB/wNNAf8DSQH/A0YB/wNXAbcYAAMNARIDVgG2A1YBtgMN
|
||||
ARFgAAGtAc8B3wH/AUgBkQGtAf8BTQGjAb8B/wFpAcAB1AH/AZUB2QHmAf8BgQHbAfAB/wFBAcYB7AH/
|
||||
ARUBqgHdAf8BBwGSAccB/wETAYABrAH/ASoBYgGSAf8BnQG/AdEB/wgAA6gB/wPpAf8D0wH/A9IB/wPR
|
||||
Af8D0AH/A84B/wPNAf8DzQH/A8sB/wPLAf8DygH/A8kB/wPIAf8D4gH/A0YB/xgAA14B2QPkAf8D4wH/
|
||||
A1gBwWAAAUsBhAGbAf8BNQG9AecB/wFYAdMB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUEBygHw
|
||||
Af8BDwG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGWAdIB/wEuAU8BawH/CAADrQH/A9YB/wO6Af8DuAH/
|
||||
A7UB/wOzAf8DsQH/A7AB/wOtAf8DqwH/A6oB/wOoAf8DpwH/A6YB/wPIAf8DSgH/CAADCwEPA1QBrQM6
|
||||
AWEDPwFuA3EB+AHiAeEB3wH/AeEB4AHfAf8DXwHzAzwBZwM8AWYDUwGtAwsBD1AAAU4BhwGeAf8BNAHE
|
||||
AfAB/wFaAdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUEBygHwAf8BDwG2Ae0B/wEAAagB6AH/
|
||||
AQABoQHhAf8BAAGcAdoB/wEvAVABbQH/CAADsQH/A9kB/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOw
|
||||
Af8DrwH/A60B/wOrAf8DqQH/A6gB/wPKAf8DTgH/CAADWgHFBP8ClgGVAf4ClQGUAf4C5wHmAf8B1gHV
|
||||
AdMB/wHXAdYB1AH/AeMB4gHgAf8BigGJAYcB/gOoAf0B6QHoAeYB/wNYAcFQAAFQAYkBoAH/ATQBxAHv
|
||||
Af8BWQHUAfEB/wGNAeMB9AH/AaIB6wH2Af8BggHfAfMB/wFCAcoB8AH/AQ8BtgHtAf8BAAGoAegB/wEA
|
||||
AaEB4QH/AQABnAHaAf8BMQFTAW8B/wgAA7YB/wPdAf8DwQH/A70B/wO8Af8DugH/A7gB/wO1Af8DtAH/
|
||||
A7IB/wOwAf8DrQH/A6wB/wOsAf8DzwH/A1IB/wgAA2QB5wL5AfcB/wLvAe4B/wLbAdoB/wHKAskB/wHJ
|
||||
AcgBxgH/AckByAHHAf8ByQHIAccB/wLLAckB/wHmAeUB5AH/AeUB5AHiAf8DZQHlUAABUgGMAaIB/wE2
|
||||
AcYB8AH/AVsB1AHxAf8BjAHjAfQB/wGiAesB9gH/AYIB3wH0Af8BQgHKAfAB/wEPAbYB7QH/AQABqAHo
|
||||
Af8BAAGiAeIB/wEAAZsB2wH/ATMBVgGAAf8IAANaAb0D2gH/A8gB/wPAAf8DvwH/A70B/wO6Af8DuAH/
|
||||
A7cB/wO1Af8DswH/A7AB/wOvAf8DswH/A8IB/wNaAb0IAANOAZUB9gH1AfQB/wHmAeUB5AH/Ab8BvgG9
|
||||
Af8C6wHqAf8B1AHTAdIB/wHWAdUB1AH/AeIC4QH/ArQBswH/AdcB1gHUAf8B4gHhAd8B/wNKAY1QAAFV
|
||||
AY8BpQH/ATcBxgHwAf8BWwHUAfIB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wFBAcoB8AH/AQ8BtgHt
|
||||
Af8BAAGnAegB/wEAAaEB4gH/AQABnAHbAf8BNQFZAYMB/wgAA1oBvQPjAf8D5wH/A+EB/wPgAf8D4AH/
|
||||
A98B/wPfAf8D3gH/A90B/wPdAf8D3AH/A9sB/wPgAf8D0AH/A1oBvQMLAQ8DVQG1A2QB5wHkAeMB4gH/
|
||||
AdEB0AHPAf8C8AHvAf8DrgH/A2QB8QNnAfICrAGrAf8C6AHnAf8CywHKAf8B4AHfAd0B/wNhAeQDVQG1
|
||||
AwsBD0gAAVYBkgGoAf8BNwHFAfAB/wFcAdQB8gH/AY0B4wH0Af8BogHrAfYB/wGCAd8B9AH/AUEBygHw
|
||||
Af8BDwG2Ae0B/wEAAacB6AH/AQABoQHhAf8BAAGcAdsB/wE3AVwBhgH/CAADKQE/A84B/wPsAf8D3gH/
|
||||
A9gB/wPSAf8DzAH/A8gB/wPHAf8DyAH/A8sB/wPQAf8D3QH/A+gB/wOkAf8DKwFCAz8BbQLkAeMB/wHY
|
||||
AdYB1QH/AdIB0QHQAf8BxQHEAcMB/wHtAewB6wH/A1cBuggAA1wBzQHoAecB5gH/AbYBtQG0Af8B1gHV
|
||||
AdMB/wHiAeEB4AH/AuAB3wH/AzwBZkgAAVkBlQGrAf8BNwHFAfAB/wFcAdQB8gH/AY0B4wH0Af8BogHr
|
||||
AfYB/wGDAd8B9AH/AUIBywHwAf8BDwG1Ae0B/wEAAacB6AH/AQABoQHiAf8BAAGcAdoB/wE6AV8BiAH/
|
||||
DAADWgG9A+MB/wPbAf8D4gH/AbcB0AG4Af8BQAGtAUQB/wFSAaoBQAH/AUwBrwFEAf8BMgGlAT4B/wGs
|
||||
AcUBrAH/A8IB/wPRAf8D0wH/A1oBvQQAA0IBdgHsAesB6AH/AdoB2QHXAf8B1AHTAdEB/wHGAcUBxAH/
|
||||
Ad4C3AH/A0YBfggAA1ABmgHdAdwB2wH/AcgBxgHFAf8C4gHhAf8C4QHfAf8B7gHtAewB/wM/AW9IAAFb
|
||||
AZgBrgH/ATcBxQHwAf8BXAHUAfEB/wGNAeMB9AH/AaIB6wH2Af8BgwHfAfQB/wFCAcoB8AH/AQ8BtgHt
|
||||
Af8BAAGoAekB/wEAAaEB4QH/AQABnAHaAf8BPAFhAYoB/wwAAykBPwPRAf8D8wH/AccB3gHKAf8BQAHJ
|
||||
AYUB/wGzAdwBpAH/AecBxwFYAf8B3AG/AU8B/wFSAcwBjwH/ASsBrQFEAf8BuAHQAbgB/wPxAf8DrwH/
|
||||
AysBQgQAAy8BSgNgAesDeAH8Ad4B3QHcAf8BywLKAf8B5gLlAf8DYQHhAzIBUAM4AVwDYAHrAu4B7AH/
|
||||
AcwCywH/AecB5gHlAf8DeAH8A2AB6wMsAUNIAAFeAZsBsAH/ATYBxgHwAf8BXAHUAfIB/wGNAeMB9AH/
|
||||
AaIB6wH2Af8BgwHfAfQB/wFCAcoB8AH/AQ8BtgHtAf8BAAGoAegB/wEAAaEB4QH/AQABnAHaAf8BPwFl
|
||||
AY4B/xAAA1oBvQPEAf8BUgHOAYsB/wGZAeQBqwH/AbABxQE5Af8B6gG1ASQB/wHhAaIBFQH/AaUBnQEc
|
||||
Af8BggHFAY8B/wElAZoBMgH/A6AB/wNaAb0QAANeAc4B4QHgAd4B/wHZAdcB1gH/AbgCtwH/AeEB4AHf
|
||||
Af8DqAH9A6gB/QL2AfUB/wLAAb8B/wHqAekB6AH/AvMB8gH/A1wByVAAAWEBnwGzAf8BNgHGAfAB/wFa
|
||||
AdQB8QH/AYwB4wH0Af8BogHrAfYB/wGDAd8B9AH/AUIBygHwAf8BDwG2Ae0B/wEAAacB6AH/AQABoQHh
|
||||
Af8BAAGbAdoB/wFBAWgBkAH/GAABXgF6AWkB/AGiAekBlQH/AdYBzwFFAf8B4gGzASMB/wHRAbsBKwH/
|
||||
AcIBrgEeAf8BggG9AUgB/wErAW8BUgH8GAADTAGRAeMB4gHgAf8C3gHcAf8B4QHgAd8B/wHMAssB/wHE
|
||||
AcMBwgH/As8BzgH/At4B3QH/AvAB7wH/AvAB7wH/AvYB9QH/A0gBh1AAAWIBoQG1Af8BXAHVAfQB/wGa
|
||||
AegB9wH/AbUB8wH6Af8BwgH4AfwB/wHDAfgB/QH/AcEB9wH9Af8BrwHwAfsB/wGPAeIB9wH/AVsB0AHw
|
||||
Af8BLwG4AeUB/wFEAWsBkwH/GAABYAF6AWoB/AGiAfABnwH/AdgB7QGvAf8B3gHFAUQB/wG0AeIBQQH/
|
||||
ATwB5wEVAf8BRwHXAUcB/wEsAXEBWwH8FAADAQECA18B4wHlAeQB4QH/Au4B7QH/Au4B7QH/AusB6gH/
|
||||
AeMB4gHhAf8C6AHnAf8C6gHpAf8C8wHyAf8C9QH0Af8B+gH5AfgB/wNcAd9QAAFlAaMBuAH/AcUB+QH9
|
||||
Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHF
|
||||
AfkB/QH/AcUB+QH9Af8BRgFuAZUB/xgAA2EB3AHIAfcB1AH/AdgB9gHKAf8B5wHjAakB/wHbAc8BSAH/
|
||||
Aa8B3AFEAf8BnQHqAasB/wNfAeAYAANAAW8DfwH+A2QB5wNfAfMB6AHnAeYB/wHnAeYB5QH/Au0B7AH/
|
||||
AvsB+gH/A2cB8gNkAecDfwH+Az0BaFAAAbcB1wHhAf8BjAG9AcwB/wGdAc8B2wH/Aa0B3wHoAf8BuQHs
|
||||
AfMB/wHCAfUB+gH/AcIB9QH6Af8BuAHrAfEB/wGpAdoB4wH/AZQBxAHRAf8BbAGoAbgB/wGpAcUB0QH/
|
||||
GAADLQFFAVcBdgFtAfoB2wH4AekB/wHnAfIB2AH/Ae0B5QGzAf8B3wHZAaYB/wFfAYUBXwH7AzIBUCAA
|
||||
Aw8BFAMKAQ4DUwGqAe8B7gHtAf8C9AHzAf8DUgGkAwgBCwMRARdYAAL+Av8B4wHxAfQB/wG5AdcB4QH/
|
||||
AZUBvgHMAf8BbAGoAbsB/wFfAZsBsAH/AVsBmAGtAf8BZAGhAbMB/wGMAbIBwgH/AbEBzQHXAf8B3wHr
|
||||
Ae8B/wP+Af8cAAMuAUcDXgHZAWQBegFoAfwBZAF5AWQB/ANeAd0DMgFQLAADLwFKA10B8ANiAe8DLAFD
|
||||
ZAADEQEXA1YBswFTAVQBUwGstAADBAEFAxABFQMfAS0DKQE/Ay8BSQMuAUgDKAE9Ax4BKwMPARQDAwEE
|
||||
EAADtwH/AZwBqAGeAf8BAAFTAS4B/wEYAZIBUAH/AQABVwEuAf8BAAFEAaAB/wEAAUIBngH/AQABPwGb
|
||||
Af8BAAE9AZkB/wEAATsBlwH/AQABOAGUAf8BAAE3AZMB/wNIAf8DSAH/HAADQQFyAUwCXwHzAVkCXAHP
|
||||
AUsCTAGQAyMBM1wAAwUBBwMfASwCPgE9AWoCUgFQAaMBWwJZAcQBXQJaAdMBXQJaAdMBWwJZAcMBUgJR
|
||||
AaEDPAFmAxwBKAMEAQYMAAMVAR0DUQGiAR0BlQFUAf8BggG+AaoB/wEsAaUBggH/AQ0BlwFGAf8BEAGZ
|
||||
AUsB/wEUAZkBTwH/ARgBnQFUAf8BUgGqAdIB/wFQAagB0QH/AQABOQGVAf8gAAMhATABKwEwAWgB/AGG
|
||||
Aa0B4QH/AVoBqAHcAf8BOwGSAckB/wEMAU4BqwH/AVUCVgGxAx8BLVMAAQEDEgEYAz4BawFdAlkB1wFW
|
||||
AisB/AGsASkBAAH/AeEBSQEdAf8B5AFbATEB/wHTAUcBFQH/AaMBQAE6Af0BYQJeAdoCPgE9AWoDDwEU
|
||||
CAADGAEiAVABUgFQAaQDVgGzAUkBrAGfAf8BUAG3AZ4B/wFaAbsBrAH/AVoBuwGuAf8BWwG7AbAB/wGA
|
||||
AbwBswH/ARMBmgFXAf8BMAGVAccB/wFTAasB0wH/AQABPAGYAf8gAAFUAlYBqwFJAZ0B0QH/AZkBvAHr
|
||||
Af8BTQGgAeMB/wGWAbkB6gH/AZQBuAHqAf8BPAGTAcoB/wIrAWQB/ANDAXhQAAMbASYDWQHSARkBAwEA
|
||||
Af8BigE4ASAB/wHKAYYBQgH/AfYBvAGcAf8B+QHMAbcB/wHjAaABVAH/AbEBUwE5Af8BVQEvARAB/wFe
|
||||
AlgB3QMcASgIAAFVAVYBVQGxA1YBswNWAbMBOAGkAZEB/wFLAbYBmwH/AUQBsgGbAf8BRgGyAZ4B/wFI
|
||||
AbMBoQH/AYUBvwG2Af8BGgGeAYIB/wE1AZkByQH/AVcBrQHUAf8BAAFAAZwB/xwAAx8BLQErAUMBbAH8
|
||||
AZ0BvwHsAf8BRQGcAeIB/wE3AZMB3wH/ATQBkQHfAf8BOwGUAeAB/wGVAbgB6gH/AYYBrQHhAf8BJQGD
|
||||
AbsB/wFLAkwBkAQAA50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/
|
||||
A50B/wOdAf8DnQH/A50B/wgAAVMCTwGlATABFQEAAf8BVQFAASsB/wGPAVIBPQH/AawBiAFHAf8BwgGj
|
||||
AYgB/wHBAaUBjgH/AbMBmAGBAf8BkQFSATwB/wFQATcBIgH/AT8BGAEAAf8BVgJVAbEIAAMIAQsDVQGy
|
||||
A1YBswFSAbIBqAH/AVkBvQGnAf8BhwHBAbUB/wGGAcEBtgH/AYcBwQG3Af8BiAHBAbkB/wEgAaIBiAH/
|
||||
AToBnAHLAf8BWwGwAdUB/wEAAUMBnwH/EAADKwFCA0gBhAFVAlcBtwFMAl8B8wFSAaQB1wH/AaEBwgHt
|
||||
Af8BnwHAAe0B/wGdAb8B7QH/AVABowHkAf8BNgGSAd8B/wE0AZAB3gH/AVcBpwHmAf8BkgG2AegB/wEf
|
||||
AVsBtwH/AzcBWgOdAf8BugK9Af8B5gLsAf8B5gLtAf8B5wLtAf8B6ALuAf8B6QLvAf8B6QLvAf8B6gLv
|
||||
Af8B6gLwAf8B6wLwAf8B6wLxAf8B7ALxAf8B7ALxAf8BvQK/Af8DnQH/BAADOQFfAVEBMQEWAf8BwwGx
|
||||
AaIB/wG2AZwBgwH/AaYBVQEoAf8BqAFTASUB/wHDAaQBhwH/AdgBxgGwAf8BvQGpAYsB/wFbATsBGwH/
|
||||
ATgBGAEAAf8BLgEKAQAB/wE1AQ4BAAH/AzMBUwgAAwYBCANVAbIBKwGgAYoB/wGTAckBugH/ATsBrwGX
|
||||
Af8BIAGiAYMB/wEhAaMBhwH/ASMBpAGLAf8BIgGqAZIB/wEwAcIB7QH/AYEBtAHXAf8BBAFHAaMB/wwA
|
||||
A0wBkwFAAZcBzwH/AVcBqAHZAf8BjQG0AeIB/wGjAcQB7QH/AacBxwHuAf8BQAGXAc0B/wEQAVEBsgH/
|
||||
ATsBkwHJAf8BnwHAAe0B/wFUAZYBowH/AZ4BlgEkAf8BWAGUAZEB/wGNAbMB6QH/AVUBpQHYAf8BWgJe
|
||||
AdgEAANcAeoB2wLiAf8BzQLPAf8DywH/A8wB/wPOAf8DzwH/A9AB/wPSAf8D0wH/A9UB/wHXAtgB/wHn
|
||||
AuwB/wNtAfcEAAMiATEBVgJVAbEBQwEXAQAB/wGqAYUBOwH/AbIBTgEMAf8BrQErAQAB/wG6AUgBAAH/
|
||||
AeoB1QG/Af8B/QH8AfoB/wHWAb4BpgH/AZABOwEIAf8BPgEMAQAB/wE/ARwBAAH/ATgBGAEAAf8DVwHF
|
||||
AxwBJwgAAwQBBgERAZQBUwH/AUoBuQGeAf8BJQGmAYkB/wFVAbEB1QH/AVEBrQHUAf8BTQGrAdIB/wE7
|
||||
AboB5AH/AQABmQFFAf8BAwGOATQB/wEGAUwBmgH/DAABSAJiAfYBrgHNAfAB/wGwAc8B8AH/AZgBvwHs
|
||||
Af8BWgGuAecB/wGqAcoB7wH/ARkBVwG4Af8EAAERAVIBswH/AaIBwwHtAf8BqAGXAQ0B/wHEAbUBNgH/
|
||||
AawBlwECAf8BNwGTAd8B/wGYAbsB6wH/AQABQAGfAf8EAANcAeoB2QLhAf8BywLMAf8DxwH/A8gB/wPK
|
||||
Af8DywH/A80B/wPOAf8D0AH/A9EB/wHTAtQB/wHlAusB/wNtAfcEAAMuAUcDWQHsAT4BDAEAAf8BmQEr
|
||||
AQAB/wG4AUMBAAH/AcIBPwEAAf8ByQFRAQAB/wHmAb8BlAH/AewB1AG2Af8BzQGcAT4B/wGoAUgBCAH/
|
||||
AZkBSQEdAf8BowGMAU4B/wFbAUIBKwH/AlEBPwH3ATUCNAFVDAABNAGOAcQB/wEuAawBiwH/ASsBqgGP
|
||||
Af8BWgG1AdgB/wFWAbIB1gH/AVMBrwHVAf8BTwGsAdMB/wEAAZABPgH/ATUBqAGEAf8BAAFUAS8B/wMU
|
||||
ARsIAAFaAmAB3gGoAckB7QH/AYQBpwHtAf8BNAFGAe0B/wFGAY4B6QH/Aa0BzQHwAf8BSQGdAdIB/wEa
|
||||
AVgBuQH/AUMBmQHOAf8BpQHFAe4B/wGVAZoBRQH/Aa0BlwECAf8BnQGXASkB/wFCAZsB4gH/AZgBuwHq
|
||||
Af8BSAJiAfYEAANcAeoB1wLfAf8BxwLJAf8DwgH/A8QB/wPFAf8DyAH/A8kB/wPKAf8DzAH/A80B/wHQ
|
||||
AtEB/wHjAuoB/wNtAfcEAAM5AV8CQAEnAf0BUAEXAQAB/wGuATUBAAH/AcABPQEAAf8B5wGWASIB/wHo
|
||||
AbIBVgH/AeQBsQFWAf8B0gGJARUB/wG9AUIBAAH/AagBMAEAAf8BuAGNATkB/wHUAcMBsgH/AZgBhAFK
|
||||
Af8BNwEZAQAB/wE+Aj0BagwAAToBkQHJAf8BpAHMAeQB/wGHAbsB2wH/ARsBoQFWAf8BFQGcAVAB/wEQ
|
||||
AZoBTAH/AQsBlgFGAf8BJwGjAYEB/wGEAcABqwH/AR4BlgFVAf8DUQGiAxUBHQQAA1EBnAGSAbkB5QH/
|
||||
AUoBUAH2Af8BgQGEAfUB/wIcAfAB/wGQAbsB6wH/Aa4BzQHwAf8BrAHMAfAB/wGqAcoB8AH/AYUBsgHp
|
||||
Af8BOgGpAcEB/wEgAbMBjQH/ATIBqAG2Af8BTAGhAeQB/wGXAboB6AH/A10B7QQAA1wB6gHWAt8B/wHD
|
||||
AsUB/wPAAf8DwAH/A8IB/wPDAf8DxAH/A8UB/wPIAf8DyQH/A80B/wHgAugB/wNtAfcEAAM3AVoCTQEo
|
||||
AfoBgwEiAQAB/wHLAUwBAAH/AeUBiwEZAf8B/gG2AU4C/wHjAcIB/wH0AbwBhQH/AdYBUwEFAf8BxQFK
|
||||
AQAB/wG6AT8BAAH/Aa8BUwEVAf8BrgGIATkB/wGUAVIBOQH/ATgBGgEAAf8DPAFmDAABPwGVAc0B/wGo
|
||||
Ac8B5QH/AYwBvwHdAf8BIQGlAYEB/wGNAcUBuAH/AYkBwwG0Af8BhgHBAbEB/wGEAb8BrwH/AVMBuQGf
|
||||
Af8BSgGtAaAB/wNWAbMBUAFSAVABpAMYASIDIwEzASsBYQF3AfwBkgGkAfUB/wE1ATYB9gH/AS0BhgH0
|
||||
Af8BFwGmAfsB/wE4AasB8gH/AVoBrwHnAf8BVwGtAecB/wFUAaoB5gH/ARsBtgGAAf8BPAHIAZcB/wEX
|
||||
AbcBVgH/AVkBrAHnAf8BjwG1AeMB/wFaAl4B1QQAA2AB1gHHAs0B/wHbAuQB/wHbAuQB/wHbAuUB/wHc
|
||||
AuUB/wHcAuUB/wHdAuYB/wHdAuYB/wHeAucB/wHfAugB/wHgAugB/wHNAtMB/wNfAeMEAAMmATkBYAJa
|
||||
Ad4BjgEqAQAB/wHsAZ4BLwH/Af4BvwGFAv8BzAGhAv8B3wG7Af8B/gHCAVsB/wHiAY4BJQH/AdMBhAEW
|
||||
Af8BygFVAQgB/wG1AUwBBgH/AZcBPQEDAf8BgQE6ARUB/wNZAewDLgFIDAABQwGYAdAB/wGrAdEB5wH/
|
||||
AZABwgHfAf8BKAGpAYgB/wGRAckBuwH/AVIBugGlAf8BTgG4AaEB/wFKAbYBngH/AU4BuAGdAf8BOQGl
|
||||
AZIB/wNWAbMDVgGzAVUBVgFVAbEEAANJAYcBhgGvAeEB/wG5AdcB8wH/AQ4BpgH+Af8BSAG/Av8BBwGj
|
||||
Av8BQgG+AfAB/wEWAc4B+wH/ATYBvgHxAf8BLgGzAaAB/wEXAbcBVQH/ASMBswGQAf8BpwHIAe4B/wFT
|
||||
AaUB1gH/AU8CUQGcBAADLAFDA1sByAOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOdAf8DnQH/A50B/wOd
|
||||
Af8DXgHdAzEBTgQAAwkBDANLAY4BwAFKAQkC/wG8AVsB/wH6Ac4BpwH/AfgB2wG+Av8B4gHGAv8BvgGG
|
||||
Af8B9AGsAVEB/wHsAcIBmgH/AeIBtQGLAf8BuAFRAQ8B/wGdAUABCAH/AYgBQAEcAf8DTwGlAxABFQwA
|
||||
AUcBmwHTAf8BrgHUAegB/wGrAdMB6AH/ATUBsQGQAf8BmwHOAcAB/wGZAc0BvQH/AZYBywG7Af8BlQHK
|
||||
AbkB/wGAAb8BqAH/AVMBswGpAf8DVgGzA1UBsgMIAQsEAAMEAQYDUQGfAYUBrgHhAf8BNgGyAfkB/wEH
|
||||
AaMC/wEcAakB+wH/AQwB0wH+Af8BSAHiAv8BBwHVAv8BWwGwAegB/wFYAa0B5wH/AakBygHvAf8BpQHF
|
||||
Ae0B/wErAU8BbgH8AyEBMEQAAxMBGgJkAVMB8QHYAZ4BTgH/AecB0wHAAf8B/AH1Ae4C/wH4AesC/wHl
|
||||
AcIB/wH2AbkBggH/AfIB0gG4Af8B7gHSAbYB/wHCAYYBKgH/AacBUgEjAf8CTQEpAfoDHQEpEAABSgGd
|
||||
AdUB/wFIAZsB0wH/AUUBmgHSAf8BJQGhAYwB/wEgAZ8BigH/AR0BnQGFAf8BGQGZAYAB/wEyAaUBkgH/
|
||||
AVsBuAGxAf8BLAGhAYsB/wNVAbIDBgEIEAADQgF1AV8CYgH2AY4BtgHjAf8BuQHXAfMB/wE5AdUB+wH/
|
||||
AQYB1QL/AR0B0QH7Af8BswHSAfIB/wGxAdAB8QH/AZIBuAHiAf8BPgGVAcwB/wNKAYpMAAM1AVcBqQE+
|
||||
ARAB/wHKAbgBqAb/Af4B/AL/AfYB4gH/AfsBxQGgAf8B5AG5AZUB/wHbAawBWQH/AcMBjgE4Af8BkwFA
|
||||
ARQB/wE+Aj0BajAAAVMCVAGsA1YBswNWAbMDBAEGGAADFgEeA1QBrgFSAaMB3AH/AZEBuAHkAf8BqAHK
|
||||
AewB/wGlAccB7AH/AY0BtQHiAf8BRAGaAdIB/wFaAl8B2wMxAU5UAAMyAVECZAFZAewB0AGyAZUB/wHs
|
||||
AeAB2QH/AeYB1QHEAf8B0wGwAZQB/wHTAaYBUwH/AcsBjwExAf8BZwFlAVkB8gE6AjkBYDQAAVMCVAGs
|
||||
A1YBswMEAQYkAAMrAUIDTAGQAVsCXQHSAVkCXAHPA04BmQMtAUVgAAMRARcDRAF6AloBVwHFAmUBXgHl
|
||||
AmEBWAHmAlwBWQHJAkgBRwGDAxUBHRAAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYA
|
||||
A/8BAAHgAQcCAAH8AT8CAAHAAQMCAAH8AT8CAAHAAQMCAAHAAQMCAAHAAQMCAAHAAQMCAAHAAQMCAAHA
|
||||
AQMCAAHAAQMCAAHAAQMCAAHAAQMGAAHAAQMCAAEBAYACAAHAAQMBgAIBAYACAAHAAQMBgAEBBAABwAED
|
||||
AcABAwHAAQMCAAHAAQMB8AEPAcABAwIAAcABAwHwAQ8BgAEDAgABwAEDAfABDwHAAQMCAAHAAQMB8AEP
|
||||
AfABDwIAAcABAwH4AR8B/AE/AgAB4wX/AeABBwGAAQEB/AEfAv8BwAEDAYABBwH4AQcC/wGAAQMBAAEH
|
||||
AfgBAwL/AcABAwEAAQcB8AEBAgABwAEDAQABBwGAAwABgAEBAYABBwIAAYABAQIAAcABBwEBAQABgAEB
|
||||
AgAB4AEDAgABgAEBAgAB4AEBAgABgAEBAgAB4AMAAYABAQIAAeABAAGAAQABgAEBAgAB4AEAAYABAAL/
|
||||
AYABAQHgAQEB4AEBAv8BwAEDAf8BwwHwAQMC/wHgAQcB/wHHAfwBDwL/AfABDws=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -110,6 +110,7 @@ Public Class frmOptions
|
||||
Friend WithEvents lblSQLDatabaseName As System.Windows.Forms.Label
|
||||
Friend WithEvents txtSQLDatabaseName As System.Windows.Forms.TextBox
|
||||
Friend WithEvents chkAlwaysShowPanelTabs As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkIdentifyQuickConnectTabs As System.Windows.Forms.CheckBox
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
Private Sub InitializeComponent()
|
||||
@@ -198,7 +199,9 @@ Public Class frmOptions
|
||||
Me.tcTabControl = New System.Windows.Forms.TabControl()
|
||||
Me.tabStartupExit = New System.Windows.Forms.TabPage()
|
||||
Me.tabAppearance = New System.Windows.Forms.TabPage()
|
||||
Me.chkAlwaysShowPanelTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.tabTabsAndPanels = New System.Windows.Forms.TabPage()
|
||||
Me.chkIdentifyQuickConnectTabs = New System.Windows.Forms.CheckBox()
|
||||
Me.tabConnections = New System.Windows.Forms.TabPage()
|
||||
Me.pnlDefaultCredentials = New System.Windows.Forms.Panel()
|
||||
Me.radCredentialsCustom = New System.Windows.Forms.RadioButton()
|
||||
@@ -225,7 +228,6 @@ Public Class frmOptions
|
||||
Me.lblSQLPassword = New System.Windows.Forms.Label()
|
||||
Me.tabUpdates = New System.Windows.Forms.TabPage()
|
||||
Me.tabAdvanced = New System.Windows.Forms.TabPage()
|
||||
Me.chkAlwaysShowPanelTabs = New System.Windows.Forms.CheckBox()
|
||||
CType(Me.numPuttyWaitTime, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.numUVNCSCPort, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.pnlProxy.SuspendLayout()
|
||||
@@ -746,7 +748,7 @@ Public Class frmOptions
|
||||
'chkAlwaysShowPanelSelectionDlg
|
||||
'
|
||||
Me.chkAlwaysShowPanelSelectionDlg.AutoSize = True
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Location = New System.Drawing.Point(3, 95)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Location = New System.Drawing.Point(3, 141)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Name = "chkAlwaysShowPanelSelectionDlg"
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Size = New System.Drawing.Size(317, 17)
|
||||
Me.chkAlwaysShowPanelSelectionDlg.TabIndex = 4
|
||||
@@ -756,7 +758,7 @@ Public Class frmOptions
|
||||
'chkShowLogonInfoOnTabs
|
||||
'
|
||||
Me.chkShowLogonInfoOnTabs.AutoSize = True
|
||||
Me.chkShowLogonInfoOnTabs.Location = New System.Drawing.Point(3, 26)
|
||||
Me.chkShowLogonInfoOnTabs.Location = New System.Drawing.Point(3, 49)
|
||||
Me.chkShowLogonInfoOnTabs.Name = "chkShowLogonInfoOnTabs"
|
||||
Me.chkShowLogonInfoOnTabs.Size = New System.Drawing.Size(203, 17)
|
||||
Me.chkShowLogonInfoOnTabs.TabIndex = 1
|
||||
@@ -766,7 +768,7 @@ Public Class frmOptions
|
||||
'chkDoubleClickClosesTab
|
||||
'
|
||||
Me.chkDoubleClickClosesTab.AutoSize = True
|
||||
Me.chkDoubleClickClosesTab.Location = New System.Drawing.Point(3, 72)
|
||||
Me.chkDoubleClickClosesTab.Location = New System.Drawing.Point(3, 118)
|
||||
Me.chkDoubleClickClosesTab.Name = "chkDoubleClickClosesTab"
|
||||
Me.chkDoubleClickClosesTab.Size = New System.Drawing.Size(159, 17)
|
||||
Me.chkDoubleClickClosesTab.TabIndex = 3
|
||||
@@ -776,7 +778,7 @@ Public Class frmOptions
|
||||
'chkShowProtocolOnTabs
|
||||
'
|
||||
Me.chkShowProtocolOnTabs.AutoSize = True
|
||||
Me.chkShowProtocolOnTabs.Location = New System.Drawing.Point(3, 49)
|
||||
Me.chkShowProtocolOnTabs.Location = New System.Drawing.Point(3, 72)
|
||||
Me.chkShowProtocolOnTabs.Name = "chkShowProtocolOnTabs"
|
||||
Me.chkShowProtocolOnTabs.Size = New System.Drawing.Size(166, 17)
|
||||
Me.chkShowProtocolOnTabs.TabIndex = 2
|
||||
@@ -786,7 +788,7 @@ Public Class frmOptions
|
||||
'chkOpenNewTabRightOfSelected
|
||||
'
|
||||
Me.chkOpenNewTabRightOfSelected.AutoSize = True
|
||||
Me.chkOpenNewTabRightOfSelected.Location = New System.Drawing.Point(3, 3)
|
||||
Me.chkOpenNewTabRightOfSelected.Location = New System.Drawing.Point(3, 26)
|
||||
Me.chkOpenNewTabRightOfSelected.Name = "chkOpenNewTabRightOfSelected"
|
||||
Me.chkOpenNewTabRightOfSelected.Size = New System.Drawing.Size(280, 17)
|
||||
Me.chkOpenNewTabRightOfSelected.TabIndex = 0
|
||||
@@ -797,7 +799,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCWarnings.AutoSize = True
|
||||
Me.chkMCWarnings.Enabled = False
|
||||
Me.chkMCWarnings.Location = New System.Drawing.Point(19, 214)
|
||||
Me.chkMCWarnings.Location = New System.Drawing.Point(19, 256)
|
||||
Me.chkMCWarnings.Name = "chkMCWarnings"
|
||||
Me.chkMCWarnings.Size = New System.Drawing.Size(71, 17)
|
||||
Me.chkMCWarnings.TabIndex = 8
|
||||
@@ -808,7 +810,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCErrors.AutoSize = True
|
||||
Me.chkMCErrors.Enabled = False
|
||||
Me.chkMCErrors.Location = New System.Drawing.Point(19, 237)
|
||||
Me.chkMCErrors.Location = New System.Drawing.Point(19, 279)
|
||||
Me.chkMCErrors.Name = "chkMCErrors"
|
||||
Me.chkMCErrors.Size = New System.Drawing.Size(53, 17)
|
||||
Me.chkMCErrors.TabIndex = 9
|
||||
@@ -819,7 +821,7 @@ Public Class frmOptions
|
||||
'
|
||||
Me.chkMCInformation.AutoSize = True
|
||||
Me.chkMCInformation.Enabled = False
|
||||
Me.chkMCInformation.Location = New System.Drawing.Point(19, 191)
|
||||
Me.chkMCInformation.Location = New System.Drawing.Point(19, 233)
|
||||
Me.chkMCInformation.Name = "chkMCInformation"
|
||||
Me.chkMCInformation.Size = New System.Drawing.Size(83, 17)
|
||||
Me.chkMCInformation.TabIndex = 7
|
||||
@@ -829,7 +831,7 @@ Public Class frmOptions
|
||||
'lblSwitchToErrorsAndInfos
|
||||
'
|
||||
Me.lblSwitchToErrorsAndInfos.AutoSize = True
|
||||
Me.lblSwitchToErrorsAndInfos.Location = New System.Drawing.Point(3, 171)
|
||||
Me.lblSwitchToErrorsAndInfos.Location = New System.Drawing.Point(3, 213)
|
||||
Me.lblSwitchToErrorsAndInfos.Name = "lblSwitchToErrorsAndInfos"
|
||||
Me.lblSwitchToErrorsAndInfos.Size = New System.Drawing.Size(159, 13)
|
||||
Me.lblSwitchToErrorsAndInfos.TabIndex = 6
|
||||
@@ -838,7 +840,7 @@ Public Class frmOptions
|
||||
'chkUseOnlyErrorsAndInfosPanel
|
||||
'
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.AutoSize = True
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Location = New System.Drawing.Point(3, 146)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Location = New System.Drawing.Point(3, 188)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Name = "chkUseOnlyErrorsAndInfosPanel"
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.Size = New System.Drawing.Size(278, 17)
|
||||
Me.chkUseOnlyErrorsAndInfosPanel.TabIndex = 5
|
||||
@@ -848,7 +850,7 @@ Public Class frmOptions
|
||||
'chkShowFullConnectionsFilePathInTitle
|
||||
'
|
||||
Me.chkShowFullConnectionsFilePathInTitle.AutoSize = True
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Location = New System.Drawing.Point(3, 151)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Location = New System.Drawing.Point(3, 141)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Name = "chkShowFullConnectionsFilePathInTitle"
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Size = New System.Drawing.Size(239, 17)
|
||||
Me.chkShowFullConnectionsFilePathInTitle.TabIndex = 4
|
||||
@@ -858,7 +860,7 @@ Public Class frmOptions
|
||||
'chkShowSystemTrayIcon
|
||||
'
|
||||
Me.chkShowSystemTrayIcon.AutoSize = True
|
||||
Me.chkShowSystemTrayIcon.Location = New System.Drawing.Point(3, 199)
|
||||
Me.chkShowSystemTrayIcon.Location = New System.Drawing.Point(3, 187)
|
||||
Me.chkShowSystemTrayIcon.Name = "chkShowSystemTrayIcon"
|
||||
Me.chkShowSystemTrayIcon.Size = New System.Drawing.Size(172, 17)
|
||||
Me.chkShowSystemTrayIcon.TabIndex = 5
|
||||
@@ -868,7 +870,7 @@ Public Class frmOptions
|
||||
'chkMinimizeToSystemTray
|
||||
'
|
||||
Me.chkMinimizeToSystemTray.AutoSize = True
|
||||
Me.chkMinimizeToSystemTray.Location = New System.Drawing.Point(3, 223)
|
||||
Me.chkMinimizeToSystemTray.Location = New System.Drawing.Point(3, 210)
|
||||
Me.chkMinimizeToSystemTray.Name = "chkMinimizeToSystemTray"
|
||||
Me.chkMinimizeToSystemTray.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkMinimizeToSystemTray.TabIndex = 6
|
||||
@@ -878,7 +880,7 @@ Public Class frmOptions
|
||||
'chkShowDescriptionTooltipsInTree
|
||||
'
|
||||
Me.chkShowDescriptionTooltipsInTree.AutoSize = True
|
||||
Me.chkShowDescriptionTooltipsInTree.Location = New System.Drawing.Point(3, 127)
|
||||
Me.chkShowDescriptionTooltipsInTree.Location = New System.Drawing.Point(3, 118)
|
||||
Me.chkShowDescriptionTooltipsInTree.Name = "chkShowDescriptionTooltipsInTree"
|
||||
Me.chkShowDescriptionTooltipsInTree.Size = New System.Drawing.Size(231, 17)
|
||||
Me.chkShowDescriptionTooltipsInTree.TabIndex = 3
|
||||
@@ -1007,7 +1009,6 @@ Public Class frmOptions
|
||||
'
|
||||
'tabAppearance
|
||||
'
|
||||
Me.tabAppearance.Controls.Add(Me.chkAlwaysShowPanelTabs)
|
||||
Me.tabAppearance.Controls.Add(Me.lblLanguageRestartRequired)
|
||||
Me.tabAppearance.Controls.Add(Me.cboLanguage)
|
||||
Me.tabAppearance.Controls.Add(Me.lblLanguage)
|
||||
@@ -1022,8 +1023,20 @@ Public Class frmOptions
|
||||
Me.tabAppearance.Text = "Appearance"
|
||||
Me.tabAppearance.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkAlwaysShowPanelTabs
|
||||
'
|
||||
Me.chkAlwaysShowPanelTabs.AutoSize = True
|
||||
Me.chkAlwaysShowPanelTabs.Location = New System.Drawing.Point(3, 3)
|
||||
Me.chkAlwaysShowPanelTabs.Name = "chkAlwaysShowPanelTabs"
|
||||
Me.chkAlwaysShowPanelTabs.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkAlwaysShowPanelTabs.TabIndex = 7
|
||||
Me.chkAlwaysShowPanelTabs.Text = "Always show panel tabs"
|
||||
Me.chkAlwaysShowPanelTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tabTabsAndPanels
|
||||
'
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkAlwaysShowPanelTabs)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkIdentifyQuickConnectTabs)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkUseOnlyErrorsAndInfosPanel)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.chkOpenNewTabRightOfSelected)
|
||||
Me.tabTabsAndPanels.Controls.Add(Me.lblSwitchToErrorsAndInfos)
|
||||
@@ -1041,6 +1054,16 @@ Public Class frmOptions
|
||||
Me.tabTabsAndPanels.Text = "Tabs & Panels"
|
||||
Me.tabTabsAndPanels.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkIdentifyQuickConnectTabs
|
||||
'
|
||||
Me.chkIdentifyQuickConnectTabs.AutoSize = True
|
||||
Me.chkIdentifyQuickConnectTabs.Location = New System.Drawing.Point(3, 95)
|
||||
Me.chkIdentifyQuickConnectTabs.Name = "chkIdentifyQuickConnectTabs"
|
||||
Me.chkIdentifyQuickConnectTabs.Size = New System.Drawing.Size(293, 17)
|
||||
Me.chkIdentifyQuickConnectTabs.TabIndex = 10
|
||||
Me.chkIdentifyQuickConnectTabs.Text = Global.mRemoteNG.My.Language.strIdentifyQuickConnectTabs
|
||||
Me.chkIdentifyQuickConnectTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tabConnections
|
||||
'
|
||||
Me.tabConnections.Controls.Add(Me.pnlRdpReconnectionCount)
|
||||
@@ -1345,16 +1368,6 @@ Public Class frmOptions
|
||||
Me.tabAdvanced.Text = "Advanced"
|
||||
Me.tabAdvanced.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkAlwaysShowPanelTabs
|
||||
'
|
||||
Me.chkAlwaysShowPanelTabs.AutoSize = True
|
||||
Me.chkAlwaysShowPanelTabs.Location = New System.Drawing.Point(3, 104)
|
||||
Me.chkAlwaysShowPanelTabs.Name = "chkAlwaysShowPanelTabs"
|
||||
Me.chkAlwaysShowPanelTabs.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkAlwaysShowPanelTabs.TabIndex = 7
|
||||
Me.chkAlwaysShowPanelTabs.Text = "Always show panel tabs"
|
||||
Me.chkAlwaysShowPanelTabs.UseVisualStyleBackColor = True
|
||||
'
|
||||
'frmOptions
|
||||
'
|
||||
Me.CancelButton = Me.btnCancel
|
||||
@@ -1439,6 +1452,7 @@ Public Class frmOptions
|
||||
Me.chkOpenNewTabRightOfSelected.Checked = My.Settings.OpenTabsRightOfSelected
|
||||
Me.chkShowLogonInfoOnTabs.Checked = My.Settings.ShowLogonInfoOnTabs
|
||||
Me.chkShowProtocolOnTabs.Checked = My.Settings.ShowProtocolOnTabs
|
||||
chkIdentifyQuickConnectTabs.Checked = Settings.IdentifyQuickConnectTabs
|
||||
Me.chkShowFullConnectionsFilePathInTitle.Checked = My.Settings.ShowCompleteConsPathInTitle
|
||||
Me.chkDoubleClickClosesTab.Checked = My.Settings.DoubleClickOnTabClosesIt
|
||||
Me.chkAlwaysShowPanelSelectionDlg.Checked = My.Settings.AlwaysShowPanelSelectionDlg
|
||||
@@ -1561,6 +1575,7 @@ Public Class frmOptions
|
||||
My.Settings.OpenTabsRightOfSelected = Me.chkOpenNewTabRightOfSelected.Checked
|
||||
My.Settings.ShowLogonInfoOnTabs = Me.chkShowLogonInfoOnTabs.Checked
|
||||
My.Settings.ShowProtocolOnTabs = Me.chkShowProtocolOnTabs.Checked
|
||||
Settings.IdentifyQuickConnectTabs = chkIdentifyQuickConnectTabs.Checked
|
||||
My.Settings.DoubleClickOnTabClosesIt = Me.chkDoubleClickClosesTab.Checked
|
||||
My.Settings.AlwaysShowPanelSelectionDlg = Me.chkAlwaysShowPanelSelectionDlg.Checked
|
||||
|
||||
@@ -1735,6 +1750,7 @@ Public Class frmOptions
|
||||
chkAlwaysShowPanelTabs.Text = My.Language.strAlwaysShowPanelTabs
|
||||
chkShowDescriptionTooltipsInTree.Text = My.Language.strShowDescriptionTooltips
|
||||
chkShowProtocolOnTabs.Text = My.Language.strShowProtocolOnTabs
|
||||
chkIdentifyQuickConnectTabs.Text = Language.strIdentifyQuickConnectTabs
|
||||
chkShowLogonInfoOnTabs.Text = My.Language.strShowLogonInfoOnTabs
|
||||
chkOpenNewTabRightOfSelected.Text = My.Language.strOpenNewTabRight
|
||||
chkAlwaysShowPanelSelectionDlg.Text = My.Language.strAlwaysShowPanelSelection
|
||||
|
||||
18
mRemoteV1/Language/Language.Designer.vb
generated
18
mRemoteV1/Language/Language.Designer.vb
generated
@@ -1951,6 +1951,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Identify quick connect tabs by adding the prefix "Quick:".
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strIdentifyQuickConnectTabs() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strIdentifyQuickConnectTabs", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Import from Active Directory.
|
||||
'''</summary>
|
||||
@@ -5024,6 +5033,15 @@ Namespace My
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Search.
|
||||
'''</summary>
|
||||
Friend Shared ReadOnly Property strSearchPrompt() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("strSearchPrompt", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Send To....
|
||||
'''</summary>
|
||||
|
||||
@@ -2061,4 +2061,10 @@ mRemoteNG will now quit and begin with the installation.</value>
|
||||
<data name="strAlwaysShowPanelTabs" xml:space="preserve">
|
||||
<value>Always show panel tabs</value>
|
||||
</data>
|
||||
<data name="strIdentifyQuickConnectTabs" xml:space="preserve">
|
||||
<value>Identify quick connect tabs by adding the prefix "Quick:"</value>
|
||||
</data>
|
||||
<data name="strSearchPrompt" xml:space="preserve">
|
||||
<value>Search</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.70.*")>
|
||||
<Assembly: AssemblyVersion("1.71.*")>
|
||||
|
||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||
|
||||
24
mRemoteV1/My Project/Settings.Designer.vb
generated
24
mRemoteV1/My Project/Settings.Designer.vb
generated
@@ -2321,6 +2321,30 @@ Namespace My
|
||||
Me("AlwaysShowPanelTabs") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("False"), _
|
||||
Global.System.Configuration.SettingsManageabilityAttribute(Global.System.Configuration.SettingsManageability.Roaming)> _
|
||||
Public Property IdentifyQuickConnectTabs() As Boolean
|
||||
Get
|
||||
Return CType(Me("IdentifyQuickConnectTabs"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("IdentifyQuickConnectTabs") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
||||
Global.System.Configuration.SettingsProviderAttribute(GetType(mRemoteNG.Config.Settings.Providers.ChooseProvider)), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("release")> _
|
||||
Public ReadOnly Property UpdateChannel() As String
|
||||
Get
|
||||
Return CType(Me("UpdateChannel"),String)
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
|
||||
@@ -527,5 +527,11 @@
|
||||
<Setting Name="AlwaysShowPanelTabs" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="IdentifyQuickConnectTabs" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateChannel" Provider="mRemoteNG.Config.Settings.Providers.ChooseProvider" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">release</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -43,36 +43,38 @@ Namespace Security
|
||||
Return StrToEncrypt
|
||||
End Function
|
||||
|
||||
Public Shared Function Decrypt(ByVal StrToDecrypt As String, ByVal StrSecret As String) As String
|
||||
If StrToDecrypt = "" Or StrSecret = "" Then
|
||||
Return StrToDecrypt
|
||||
Public Shared Function Decrypt(ByVal ciphertextBase64 As String, ByVal password As String) As String
|
||||
If String.IsNullOrEmpty(ciphertextBase64) Or String.IsNullOrEmpty(password) Then
|
||||
Return ciphertextBase64
|
||||
End If
|
||||
|
||||
Try
|
||||
Dim rd As New RijndaelManaged
|
||||
Dim rijndaelIvLength As Integer = 16
|
||||
Dim md5 As New MD5CryptoServiceProvider
|
||||
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(StrSecret))
|
||||
Dim plaintext As String
|
||||
|
||||
md5.Clear()
|
||||
Using rijndaelManaged As New RijndaelManaged
|
||||
Using md5 As New MD5CryptoServiceProvider
|
||||
Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(password))
|
||||
rijndaelManaged.Key = key
|
||||
End Using
|
||||
|
||||
Dim encdata() As Byte = Convert.FromBase64String(StrToDecrypt)
|
||||
Dim ms As New MemoryStream(encdata)
|
||||
Dim iv(15) As Byte
|
||||
Dim ciphertext() As Byte = Convert.FromBase64String(ciphertextBase64)
|
||||
|
||||
ms.Read(iv, 0, rijndaelIvLength)
|
||||
rd.IV = iv
|
||||
rd.Key = key
|
||||
Using memoryStream As New MemoryStream(ciphertext)
|
||||
Const ivLength As Integer = 16
|
||||
Dim iv(ivLength - 1) As Byte
|
||||
memoryStream.Read(iv, 0, ivLength)
|
||||
rijndaelManaged.IV = iv
|
||||
|
||||
Dim cs As New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read)
|
||||
Using cryptoStream As New CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor, CryptoStreamMode.Read)
|
||||
Using streamReader As New StreamReader(cryptoStream, System.Text.Encoding.UTF8, True)
|
||||
plaintext = streamReader.ReadToEnd()
|
||||
End Using
|
||||
rijndaelManaged.Clear()
|
||||
End Using ' cryptoStream
|
||||
End Using ' memoryStream
|
||||
End Using ' rijndaelManaged
|
||||
|
||||
Dim data(ms.Length - rijndaelIvLength) As Byte
|
||||
Dim i As Integer = cs.Read(data, 0, data.Length)
|
||||
|
||||
cs.Close()
|
||||
rd.Clear()
|
||||
|
||||
Return System.Text.Encoding.UTF8.GetString(data, 0, i)
|
||||
Return plaintext
|
||||
Catch ex As Exception
|
||||
' Ignore CryptographicException "Padding is invalid and cannot be removed." when password is incorrect.
|
||||
If Not TypeOf ex Is CryptographicException Then
|
||||
@@ -80,7 +82,7 @@ Namespace Security
|
||||
End If
|
||||
End Try
|
||||
|
||||
Return StrToDecrypt
|
||||
Return ciphertextBase64
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
@@ -10,7 +10,7 @@ Namespace Security
|
||||
Public Class Impersonator
|
||||
#Region "Logon API"
|
||||
Private Const LOGON32_PROVIDER_DEFAULT As Integer = 0
|
||||
Private Const LOGON32_LOGON_INTERACTIVE As Integer = 2 ' This parameter causes LogonUser to create a primary token.
|
||||
Private Const LOGON32_LOGON_NEW_CREDENTIALS As Integer = 9
|
||||
|
||||
Private Const SecurityImpersonation As Integer = 2
|
||||
|
||||
@@ -37,7 +37,6 @@ Namespace Security
|
||||
#End Region
|
||||
|
||||
Private tokenHandle As New IntPtr(0)
|
||||
Private dupeTokenHandle As New IntPtr(0)
|
||||
Private impersonatedUser As WindowsImpersonationContext = Nothing
|
||||
|
||||
' GetErrorMessage formats and returns an error message corresponding to the input errorCode.
|
||||
@@ -59,9 +58,8 @@ Namespace Security
|
||||
If Not (impersonatedUser Is Nothing) Then Throw New Exception("Already impersonating a user.")
|
||||
|
||||
tokenHandle = IntPtr.Zero
|
||||
dupeTokenHandle = IntPtr.Zero
|
||||
|
||||
Dim returnValue As Integer = LogonUser(UserName, DomainName, Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, tokenHandle)
|
||||
Dim returnValue As Integer = LogonUser(UserName, DomainName, Password, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, tokenHandle)
|
||||
|
||||
If 0 = returnValue Then
|
||||
Dim errCode As Integer = Marshal.GetLastWin32Error()
|
||||
@@ -70,17 +68,8 @@ Namespace Security
|
||||
Throw exLogon
|
||||
End If
|
||||
|
||||
returnValue = DuplicateToken(tokenHandle, SecurityImpersonation, dupeTokenHandle)
|
||||
If 0 = returnValue Then
|
||||
CloseHandle(tokenHandle)
|
||||
Throw New ApplicationException("Error trying to duplicate handle.")
|
||||
End If
|
||||
|
||||
' The token that is passed to the following constructor must
|
||||
' be a primary token in order to use it for impersonation.
|
||||
Dim newId As New WindowsIdentity(dupeTokenHandle)
|
||||
Dim newId As New WindowsIdentity(tokenHandle)
|
||||
impersonatedUser = newId.Impersonate()
|
||||
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "Starting Impersonation failed (Sessions feature will not work)" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
@@ -98,7 +87,6 @@ Namespace Security
|
||||
Finally
|
||||
|
||||
If Not System.IntPtr.op_Equality(tokenHandle, IntPtr.Zero) Then CloseHandle(tokenHandle)
|
||||
If Not System.IntPtr.op_Equality(dupeTokenHandle, IntPtr.Zero) Then CloseHandle(dupeTokenHandle)
|
||||
|
||||
impersonatedUser = Nothing
|
||||
End Try
|
||||
|
||||
94
mRemoteV1/Tools/CommandLineArguments.vb
Normal file
94
mRemoteV1/Tools/CommandLineArguments.vb
Normal file
@@ -0,0 +1,94 @@
|
||||
Imports System.Text.RegularExpressions
|
||||
|
||||
Namespace Tools
|
||||
' Adapted from http://qntm.org/cmd
|
||||
Public Class CommandLineArguments
|
||||
#Region "Protected Fields"
|
||||
Protected Arguments As New List(Of Argument)
|
||||
#End Region
|
||||
|
||||
#Region "Public Properties"
|
||||
Public Property EscapeForShell As Boolean
|
||||
#End Region
|
||||
|
||||
#Region "Public Methods"
|
||||
Public Sub Add(ByVal argument As String, Optional ByVal forceQuotes As Boolean = False)
|
||||
Arguments.Add(New Argument(argument, False, forceQuotes))
|
||||
End Sub
|
||||
|
||||
Public Sub Add(ByVal ParamArray argumentArray As String())
|
||||
For Each argument As String In argumentArray
|
||||
Add(argument)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub AddFileName(ByVal fileName As String, Optional ByVal forceQuotes As Boolean = False)
|
||||
Arguments.Add(New Argument(fileName, True, forceQuotes))
|
||||
End Sub
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Dim processedArguments As New List(Of String)
|
||||
|
||||
For Each argument As Argument In Arguments
|
||||
processedArguments.Add(ProcessArgument(argument, EscapeForShell))
|
||||
Next
|
||||
|
||||
Return String.Join(" ", processedArguments.ToArray())
|
||||
End Function
|
||||
|
||||
Public Shared Function PrefixFileName(ByVal argument As String) As String
|
||||
If argument.StartsWith("-") Then argument = ".\" & argument
|
||||
|
||||
Return argument
|
||||
End Function
|
||||
|
||||
Public Shared Function EscapeBackslashes(ByVal argument As String) As String
|
||||
' Sequence of backslashes followed by a double quote:
|
||||
' double up all the backslashes and escape the double quote
|
||||
Return Regex.Replace(argument, "(\\*)""", "$1$1\""")
|
||||
End Function
|
||||
|
||||
Public Shared Function QuoteArgument(ByVal argument As String, Optional ByVal forceQuotes As Boolean = False) As String
|
||||
If Not forceQuotes And Not String.IsNullOrEmpty(argument) And Not argument.Contains(" ") Then Return argument
|
||||
|
||||
' Sequence of backslashes followed by the end of the string
|
||||
' (which will become a double quote):
|
||||
' double up all the backslashes
|
||||
argument = Regex.Replace(argument, "(\\*)$", "$1$1")
|
||||
|
||||
Return """" & argument & """"
|
||||
End Function
|
||||
|
||||
Public Shared Function EscapeShellMetacharacters(ByVal argument As String) As String
|
||||
Return Regex.Replace(argument, "([()%!^""<>&|])", "^$1")
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Protected Methods"
|
||||
Protected Shared Function ProcessArgument(ByVal argument As Argument, Optional ByVal escapeForShell As Boolean = False) As String
|
||||
Dim text As String = argument.Text
|
||||
|
||||
If argument.IsFileName Then text = PrefixFileName(text)
|
||||
text = EscapeBackslashes(text)
|
||||
text = QuoteArgument(text, argument.ForceQuotes)
|
||||
If escapeForShell Then text = EscapeShellMetacharacters(text)
|
||||
|
||||
Return text
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Protected Classes"
|
||||
Protected Class Argument
|
||||
Public Sub New(ByVal text As String, Optional ByVal isFileName As Boolean = False, Optional ByVal forceQuotes As Boolean = False)
|
||||
Me.Text = text
|
||||
Me.IsFileName = isFileName
|
||||
Me.ForceQuotes = forceQuotes
|
||||
End Sub
|
||||
|
||||
Public Property Text As String
|
||||
Public Property IsFileName As Boolean
|
||||
Public Property ForceQuotes As Boolean
|
||||
End Class
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -223,39 +223,26 @@ Namespace Tools
|
||||
Public Class TreeNodeSorter
|
||||
Implements IComparer
|
||||
|
||||
Private _nodeToSort As TreeNode
|
||||
Private _sortType As SortType
|
||||
Public Property Sorting As System.Windows.Forms.SortOrder
|
||||
|
||||
Public Sub New(ByVal node As TreeNode, ByVal sortType As SortType)
|
||||
Public Sub New(Optional ByVal sortOrder As SortOrder = SortOrder.None)
|
||||
MyBase.New()
|
||||
|
||||
Me._nodeToSort = node
|
||||
Me._sortType = sortType
|
||||
Sorting = sortOrder
|
||||
End Sub
|
||||
|
||||
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
|
||||
Dim tx As TreeNode = CType(x, TreeNode)
|
||||
Dim ty As TreeNode = CType(y, TreeNode)
|
||||
|
||||
If ((tx.Parent Is Me._nodeToSort) AndAlso (ty.Parent Is Me._nodeToSort)) Then
|
||||
' Ascending
|
||||
If (Me._sortType = SortType.Ascending) Then
|
||||
Select Case Sorting
|
||||
Case SortOrder.Ascending
|
||||
Return String.Compare(tx.Text, ty.Text)
|
||||
End If
|
||||
|
||||
' Descending
|
||||
If (Me._sortType = SortType.Descending) Then
|
||||
Case SortOrder.Descending
|
||||
Return String.Compare(ty.Text, tx.Text)
|
||||
End If
|
||||
End If
|
||||
|
||||
Return 0
|
||||
Case Else
|
||||
Return 0
|
||||
End Select
|
||||
End Function
|
||||
|
||||
Public Enum SortType
|
||||
Ascending = 0
|
||||
Descending = 1
|
||||
End Enum
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
@@ -117,21 +117,21 @@ Namespace Tools
|
||||
|
||||
_ConnectionInfo = ConnectionInfo
|
||||
|
||||
Dim p As New Process()
|
||||
Dim pI As New ProcessStartInfo()
|
||||
Dim process As New Process()
|
||||
With process.StartInfo
|
||||
.UseShellExecute = False
|
||||
.FileName = ParseText(_FileName)
|
||||
|
||||
pI.FileName = ParseText(_FileName)
|
||||
pI.Arguments = ParseText(_Arguments)
|
||||
.Arguments = CommandLineArguments.EscapeBackslashes(_Arguments)
|
||||
End With
|
||||
|
||||
p.StartInfo = pI
|
||||
|
||||
p.Start()
|
||||
process.Start()
|
||||
|
||||
If _WaitForExit Then
|
||||
p.WaitForExit()
|
||||
process.WaitForExit()
|
||||
End If
|
||||
|
||||
Return p
|
||||
Return process
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't start external application." & vbNewLine & ex.Message)
|
||||
Return Nothing
|
||||
|
||||
@@ -319,6 +319,10 @@ Namespace Tree
|
||||
oldTreeNode.Parent.Nodes.Insert(oldTreeNode.Index + 1, newTreeNode)
|
||||
TreeView.SelectedNode = newTreeNode
|
||||
Else
|
||||
Dim parentContainerInfo As Container.Info = TryCast(parentNode.Tag, Container.Info)
|
||||
If parentContainerInfo IsNot Nothing Then
|
||||
newConnectionInfo.Parent = parentContainerInfo
|
||||
End If
|
||||
parentNode.Nodes.Add(newTreeNode)
|
||||
End If
|
||||
ElseIf GetNodeType(oldTreeNode) = Type.Container Then
|
||||
@@ -497,27 +501,52 @@ Namespace Tree
|
||||
TreeView.EndUpdate()
|
||||
End Sub
|
||||
|
||||
Public Shared Sub Sort(ByVal treeNode As TreeNode, ByVal sortType As Tools.Controls.TreeNodeSorter.SortType)
|
||||
Try
|
||||
TreeView.BeginUpdate()
|
||||
If treeNode Is Nothing Then
|
||||
Public Shared Sub Sort(ByVal treeNode As TreeNode, ByVal sorting As System.Windows.Forms.SortOrder)
|
||||
If TreeView Is Nothing Then Return
|
||||
|
||||
TreeView.BeginUpdate()
|
||||
|
||||
If treeNode Is Nothing Then
|
||||
If TreeView.Nodes.Count > 0 Then
|
||||
treeNode = TreeView.Nodes.Item(0)
|
||||
ElseIf Tree.Node.GetNodeType(treeNode) = Type.Connection Then
|
||||
treeNode = treeNode.Parent
|
||||
Else
|
||||
Return
|
||||
End If
|
||||
ElseIf GetNodeType(treeNode) = Type.Connection Then
|
||||
treeNode = treeNode.Parent
|
||||
If treeNode Is Nothing Then Return
|
||||
End If
|
||||
|
||||
Dim ns As New Tools.Controls.TreeNodeSorter(treeNode, sortType)
|
||||
Sort(treeNode, New Tools.Controls.TreeNodeSorter(sorting))
|
||||
|
||||
TreeView.TreeViewNodeSorter = ns
|
||||
TreeView.Sort()
|
||||
TreeView.EndUpdate()
|
||||
End Sub
|
||||
|
||||
For Each childNode As TreeNode In treeNode.Nodes
|
||||
If GetNodeType(childNode) = Type.Container Then Sort(childNode, sortType)
|
||||
' Adapted from http://www.codeproject.com/Tips/252234/ASP-NET-TreeView-Sort
|
||||
Private Shared Sub Sort(ByVal treeNode As TreeNode, ByVal nodeSorter As Tools.Controls.TreeNodeSorter)
|
||||
For Each childNode As TreeNode In treeNode.Nodes
|
||||
Sort(childNode, nodeSorter)
|
||||
Next
|
||||
|
||||
Try
|
||||
Dim sortedNodes As New List(Of TreeNode)
|
||||
Dim currentNode As TreeNode = Nothing
|
||||
While (treeNode.Nodes.Count > 0)
|
||||
For Each childNode As TreeNode In treeNode.Nodes
|
||||
If (currentNode Is Nothing OrElse nodeSorter.Compare(childNode, currentNode) < 0) Then
|
||||
currentNode = childNode
|
||||
End If
|
||||
Next
|
||||
treeNode.Nodes.Remove(currentNode)
|
||||
sortedNodes.Add(currentNode)
|
||||
currentNode = Nothing
|
||||
End While
|
||||
|
||||
For Each childNode As TreeNode In sortedNodes
|
||||
treeNode.Nodes.Add(childNode)
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Sort nodes failed" & vbNewLine & ex.Message, True)
|
||||
Finally
|
||||
TreeView.EndUpdate()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
@@ -390,6 +390,8 @@ Namespace UI
|
||||
Me.btnIcon.Enabled = True
|
||||
Me.btnHostStatus.Enabled = True
|
||||
ElseIf Me.DefaultInheritanceVisible Then 'Default Inhertiance selected
|
||||
pGrid.SelectedObject = Obj
|
||||
|
||||
Me.btnShowProperties.Enabled = True
|
||||
Me.btnShowInheritance.Enabled = True
|
||||
Me.btnShowDefaultProperties.Enabled = False
|
||||
@@ -607,6 +609,12 @@ Namespace UI
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub pGrid_PropertySortChanged(ByVal sender As Object, ByVal e As EventArgs) Handles pGrid.PropertySortChanged
|
||||
If pGrid.PropertySort = PropertySort.CategorizedAlphabetical Then
|
||||
pGrid.PropertySort = PropertySort.Categorized
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ShowHideGridItems()
|
||||
Try
|
||||
Dim strHide As New List(Of String)
|
||||
|
||||
@@ -276,6 +276,7 @@ Namespace UI
|
||||
End If
|
||||
|
||||
nTab.Selected = True
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
|
||||
Return nTab
|
||||
Catch ex As Exception
|
||||
@@ -291,6 +292,30 @@ Namespace UI
|
||||
ApplyLanguage()
|
||||
End Sub
|
||||
|
||||
Private _documentHandlersAdded As Boolean = False
|
||||
Private _floatHandlersAdded As Boolean = False
|
||||
Private Sub Connection_DockStateChanged(ByVal sender As System.Object, ByVal e As EventArgs) Handles Me.DockStateChanged
|
||||
If DockState = DockState.Float Then
|
||||
If _documentHandlersAdded Then
|
||||
RemoveHandler frmMain.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
RemoveHandler frmMain.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_documentHandlersAdded = False
|
||||
End If
|
||||
AddHandler DockHandler.FloatPane.FloatWindow.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
AddHandler DockHandler.FloatPane.FloatWindow.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_floatHandlersAdded = True
|
||||
ElseIf DockState = DockState.Document Then
|
||||
If _floatHandlersAdded Then
|
||||
RemoveHandler DockHandler.FloatPane.FloatWindow.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
RemoveHandler DockHandler.FloatPane.FloatWindow.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_floatHandlersAdded = False
|
||||
End If
|
||||
AddHandler frmMain.ResizeBegin, AddressOf Connection_ResizeBegin
|
||||
AddHandler frmMain.ResizeEnd, AddressOf Connection_ResizeEnd
|
||||
_documentHandlersAdded = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
cmenTabFullscreen.Text = My.Language.strMenuFullScreenRDP
|
||||
cmenTabSmartSize.Text = My.Language.strMenuSmartSize
|
||||
@@ -334,19 +359,14 @@ Namespace UI
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub Connection_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
|
||||
Try
|
||||
For Each tabP As Magic.Controls.TabPage In Me.TabController.TabPages
|
||||
If tabP.Tag IsNot Nothing Then
|
||||
If TypeOf tabP.Tag Is mRemoteNG.Connection.InterfaceControl Then
|
||||
Dim IC As mRemoteNG.Connection.InterfaceControl = tabP.Tag
|
||||
IC.Protocol.Resize()
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "Connection_Resize (UI.Window.Connections) failed" & vbNewLine & ex.Message, True)
|
||||
End Try
|
||||
Public Shadows Event ResizeBegin As EventHandler
|
||||
Private Sub Connection_ResizeBegin(ByVal sender As System.Object, ByVal e As EventArgs)
|
||||
RaiseEvent ResizeBegin(Me, e)
|
||||
End Sub
|
||||
|
||||
Public Shadows Event ResizeEnd As EventHandler
|
||||
Public Sub Connection_ResizeEnd(ByVal sender As System.Object, ByVal e As EventArgs)
|
||||
RaiseEvent ResizeEnd(sender, e)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
@@ -384,6 +404,7 @@ Namespace UI
|
||||
End Sub
|
||||
|
||||
Private Sub TabController_DoubleClickTab(ByVal sender As Crownwood.Magic.Controls.TabControl, ByVal page As Crownwood.Magic.Controls.TabPage) Handles TabController.DoubleClickTab
|
||||
_lastMouseUp = 0
|
||||
If My.Settings.DoubleClickOnTabClosesIt Then
|
||||
Me.CloseConnectionTab()
|
||||
End If
|
||||
@@ -422,15 +443,20 @@ Namespace UI
|
||||
End If
|
||||
|
||||
If IC.Info.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Then
|
||||
Me.cmenTabFullscreen.Enabled = True
|
||||
Me.cmenTabSmartSize.Enabled = True
|
||||
|
||||
Dim rdp As mRemoteNG.Connection.Protocol.RDP = IC.Protocol
|
||||
Me.cmenTabSmartSize.Checked = rdp.SmartSize
|
||||
Me.cmenTabFullscreen.Checked = rdp.Fullscreen
|
||||
|
||||
If rdp.RedirectKeys Then
|
||||
cmenTabFullscreen.Enabled = False
|
||||
Else
|
||||
cmenTabFullscreen.Enabled = True
|
||||
cmenTabFullscreen.Checked = rdp.Fullscreen
|
||||
End If
|
||||
|
||||
cmenTabSmartSize.Enabled = True
|
||||
cmenTabSmartSize.Checked = rdp.SmartSize
|
||||
Else
|
||||
Me.cmenTabFullscreen.Enabled = False
|
||||
Me.cmenTabSmartSize.Enabled = False
|
||||
cmenTabFullscreen.Enabled = False
|
||||
cmenTabSmartSize.Enabled = False
|
||||
End If
|
||||
|
||||
If IC.Info.Protocol = mRemoteNG.Connection.Protocol.Protocols.VNC Then
|
||||
@@ -762,6 +788,7 @@ Namespace UI
|
||||
Dim IC As mRemoteNG.Connection.InterfaceControl = Me.TabController.SelectedTab.Tag
|
||||
|
||||
App.Runtime.OpenConnection(IC.Info, mRemoteNG.Connection.Info.Force.DoNotJump)
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
@@ -822,6 +849,7 @@ Namespace UI
|
||||
Else
|
||||
Try
|
||||
Me.TabController.TabPages.Remove(TabToBeClosed)
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
Catch comEx As System.Runtime.InteropServices.COMException
|
||||
CloseTab(TabToBeClosed)
|
||||
Catch ex As Exception
|
||||
@@ -834,27 +862,37 @@ Namespace UI
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private _selectedTabChanged As Boolean = False
|
||||
Private _ignoreChangeSelectedTabClick As Boolean = False
|
||||
Private Sub TabController_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabController.SelectionChanged
|
||||
_selectedTabChanged = True
|
||||
_ignoreChangeSelectedTabClick = True
|
||||
FocusIC()
|
||||
RefreshIC()
|
||||
End Sub
|
||||
|
||||
Private _lastMouseUp As Integer = 0
|
||||
Private Sub TabController_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles TabController.MouseUp
|
||||
Debug.Print("TabController_MouseUp()")
|
||||
Debug.Print("_ignoreChangeSelectedTabClick = {0}", _ignoreChangeSelectedTabClick)
|
||||
Try
|
||||
If Not Native.GetForegroundWindow() = frmMain.Handle And Not _selectedTabChanged Then
|
||||
If Not Native.GetForegroundWindow() = frmMain.Handle And Not _ignoreChangeSelectedTabClick Then
|
||||
Dim clickedTab As Magic.Controls.TabPage = TabController.TabPageFromPoint(e.Location)
|
||||
If clickedTab IsNot Nothing And TabController.SelectedTab IsNot clickedTab Then
|
||||
Native.SetForegroundWindow(Handle)
|
||||
TabController.SelectedTab = clickedTab
|
||||
End If
|
||||
End If
|
||||
_selectedTabChanged = False
|
||||
_ignoreChangeSelectedTabClick = False
|
||||
|
||||
Select Case e.Button
|
||||
Case MouseButtons.Left
|
||||
FocusIC()
|
||||
Dim currentTicks As Integer = Environment.TickCount
|
||||
Dim elapsedTicks As Integer = currentTicks - _lastMouseUp
|
||||
If elapsedTicks > SystemInformation.DoubleClickTime Then
|
||||
_lastMouseUp = currentTicks
|
||||
FocusIC()
|
||||
Else
|
||||
TabController.OnDoubleClickTab(TabController.SelectedTab)
|
||||
End If
|
||||
Case MouseButtons.Middle
|
||||
CloseConnectionTab()
|
||||
Case MouseButtons.Right
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports mRemoteNG.Connection
|
||||
Imports mRemoteNG.My
|
||||
Imports WeifenLuo.WinFormsUI.Docking
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
@@ -53,51 +54,51 @@ Namespace UI
|
||||
Friend WithEvents mMenAddFolder As System.Windows.Forms.ToolStripMenuItem
|
||||
Public WithEvents tvConnections As System.Windows.Forms.TreeView
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim TreeNode1 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Connections")
|
||||
Me.tvConnections = New System.Windows.Forms.TreeView
|
||||
Me.tvConnections = New System.Windows.Forms.TreeView()
|
||||
Me.cMenTree = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.cMenTreeAddConnection = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeAddFolder = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeConnect = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptions = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeDisconnect = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep2 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeToolsTransferFile = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExport = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportExportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportImportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportSep1 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeToolsImportExportImportFromAD = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportImportFromRDPFiles = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsImportExportImportFromPortScan = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsSort = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsSortAscending = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsSortDescending = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep3 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeDuplicate = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeRename = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeDelete = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeSep4 = New System.Windows.Forms.ToolStripSeparator
|
||||
Me.cMenTreeMoveUp = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeMoveDown = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.cMenTreeAddConnection = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeAddFolder = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeConnect = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptions = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsConnectInFullscreen = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeDisconnect = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeToolsTransferFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExport = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportExportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportImportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportSep1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeToolsImportExportImportFromAD = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportImportFromRDPFiles = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsImportExportImportFromPortScan = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsSort = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsSortAscending = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsSortDescending = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep3 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeDuplicate = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeRename = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeDelete = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeSep4 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.cMenTreeMoveUp = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTreeMoveDown = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.imgListTree = New System.Windows.Forms.ImageList(Me.components)
|
||||
Me.pnlConnections = New System.Windows.Forms.Panel
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox
|
||||
Me.txtSearch = New System.Windows.Forms.TextBox
|
||||
Me.msMain = New System.Windows.Forms.MenuStrip
|
||||
Me.mMenAddConnection = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenAddFolder = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenView = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewExpandAllFolders = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenViewCollapseAllFolders = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.mMenSortAscending = New System.Windows.Forms.ToolStripMenuItem
|
||||
Me.pnlConnections = New System.Windows.Forms.Panel()
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
|
||||
Me.txtSearch = New System.Windows.Forms.TextBox()
|
||||
Me.msMain = New System.Windows.Forms.MenuStrip()
|
||||
Me.mMenAddConnection = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenAddFolder = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenView = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewExpandAllFolders = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenViewCollapseAllFolders = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mMenSortAscending = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.cMenTree.SuspendLayout()
|
||||
Me.pnlConnections.SuspendLayout()
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
@@ -108,8 +109,8 @@ Namespace UI
|
||||
'
|
||||
Me.tvConnections.AllowDrop = True
|
||||
Me.tvConnections.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.tvConnections.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.tvConnections.ContextMenuStrip = Me.cMenTree
|
||||
Me.tvConnections.HideSelection = False
|
||||
@@ -122,7 +123,7 @@ Namespace UI
|
||||
TreeNode1.Text = "Connections"
|
||||
Me.tvConnections.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode1})
|
||||
Me.tvConnections.SelectedImageIndex = 0
|
||||
Me.tvConnections.Size = New System.Drawing.Size(192, 407)
|
||||
Me.tvConnections.Size = New System.Drawing.Size(192, 410)
|
||||
Me.tvConnections.TabIndex = 20
|
||||
'
|
||||
'cMenTree
|
||||
@@ -157,7 +158,7 @@ Namespace UI
|
||||
Me.cMenTreeConnect.Image = Global.mRemoteNG.My.Resources.Resources.Play
|
||||
Me.cMenTreeConnect.Name = "cMenTreeConnect"
|
||||
Me.cMenTreeConnect.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _
|
||||
Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
|
||||
Me.cMenTreeConnect.Size = New System.Drawing.Size(186, 22)
|
||||
Me.cMenTreeConnect.Text = "Connect"
|
||||
'
|
||||
@@ -348,8 +349,8 @@ Namespace UI
|
||||
'pnlConnections
|
||||
'
|
||||
Me.pnlConnections.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.pnlConnections.Controls.Add(Me.PictureBox1)
|
||||
Me.pnlConnections.Controls.Add(Me.txtSearch)
|
||||
Me.pnlConnections.Controls.Add(Me.tvConnections)
|
||||
@@ -362,7 +363,7 @@ Namespace UI
|
||||
'
|
||||
Me.PictureBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.PictureBox1.Image = Global.mRemoteNG.My.Resources.Resources.Search
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(0, 411)
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(2, 412)
|
||||
Me.PictureBox1.Name = "PictureBox1"
|
||||
Me.PictureBox1.Size = New System.Drawing.Size(16, 16)
|
||||
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
|
||||
@@ -372,13 +373,15 @@ Namespace UI
|
||||
'txtSearch
|
||||
'
|
||||
Me.txtSearch.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.txtSearch.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.txtSearch.Location = New System.Drawing.Point(21, 412)
|
||||
Me.txtSearch.ForeColor = System.Drawing.SystemColors.GrayText
|
||||
Me.txtSearch.Location = New System.Drawing.Point(19, 413)
|
||||
Me.txtSearch.Name = "txtSearch"
|
||||
Me.txtSearch.Size = New System.Drawing.Size(169, 13)
|
||||
Me.txtSearch.Size = New System.Drawing.Size(171, 13)
|
||||
Me.txtSearch.TabIndex = 30
|
||||
Me.txtSearch.TabStop = False
|
||||
Me.txtSearch.Text = "Search"
|
||||
'
|
||||
'msMain
|
||||
'
|
||||
@@ -462,6 +465,10 @@ Namespace UI
|
||||
#Region "Form Stuff"
|
||||
Private Sub Tree_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
||||
ApplyLanguage()
|
||||
txtSearch.Multiline = True
|
||||
txtSearch.MinimumSize = New Size(0, 14)
|
||||
txtSearch.Size = New Size(txtSearch.Size.Width, 14)
|
||||
txtSearch.Multiline = False
|
||||
End Sub
|
||||
|
||||
Private Sub ApplyLanguage()
|
||||
@@ -495,6 +502,7 @@ Namespace UI
|
||||
mMenViewExpandAllFolders.Text = My.Language.strExpandAllFolders
|
||||
mMenViewCollapseAllFolders.Text = My.Language.strCollapseAllFolders
|
||||
mMenSortAscending.ToolTipText = My.Language.strSortAsc
|
||||
txtSearch.Text = Language.strSearchPrompt
|
||||
TabText = My.Language.strConnections
|
||||
Text = My.Language.strConnections
|
||||
End Sub
|
||||
@@ -934,24 +942,24 @@ Namespace UI
|
||||
Me.ImportFromPortScan()
|
||||
End Sub
|
||||
|
||||
Private Sub mMenSortAscending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenSortAscending.Click
|
||||
Me.tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(Me.tvConnections.Nodes.Item(0), Tools.Controls.TreeNodeSorter.SortType.Ascending)
|
||||
Me.tvConnections.EndUpdate()
|
||||
Private Sub mMenSortAscending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenSortAscending.Click
|
||||
tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(tvConnections.Nodes.Item(0), System.Windows.Forms.SortOrder.Ascending)
|
||||
tvConnections.EndUpdate()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub cMenTreeToolsSortAscending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsSortAscending.Click
|
||||
Me.tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(Me.tvConnections.SelectedNode, Tools.Controls.TreeNodeSorter.SortType.Ascending)
|
||||
Me.tvConnections.EndUpdate()
|
||||
Private Sub cMenTreeToolsSortAscending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cMenTreeToolsSortAscending.Click
|
||||
tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, System.Windows.Forms.SortOrder.Ascending)
|
||||
tvConnections.EndUpdate()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
Private Sub cMenTreeToolsSortDescending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsSortDescending.Click
|
||||
Me.tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(Me.tvConnections.SelectedNode, Tools.Controls.TreeNodeSorter.SortType.Descending)
|
||||
Me.tvConnections.EndUpdate()
|
||||
Private Sub cMenTreeToolsSortDescending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cMenTreeToolsSortDescending.Click
|
||||
tvConnections.BeginUpdate()
|
||||
mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, System.Windows.Forms.SortOrder.Descending)
|
||||
tvConnections.EndUpdate()
|
||||
SaveConnectionsBG()
|
||||
End Sub
|
||||
|
||||
@@ -1000,22 +1008,23 @@ Namespace UI
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim newConnectionInfo As New mRemoteNG.Connection.Info()
|
||||
If mRemoteNG.Tree.Node.GetNodeType(tvConnections.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
newConnectionInfo.Parent = tvConnections.SelectedNode.Parent.Tag
|
||||
Dim containerNode As TreeNode = tvConnections.SelectedNode
|
||||
If mRemoteNG.Tree.Node.GetNodeType(containerNode) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
containerNode = containerNode.Parent
|
||||
End If
|
||||
|
||||
Dim newConnectionInfo As New Info()
|
||||
If mRemoteNG.Tree.Node.GetNodeType(containerNode) = mRemoteNG.Tree.Node.Type.Root Then
|
||||
newConnectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
Else
|
||||
newConnectionInfo.Parent = tvConnections.SelectedNode.Tag
|
||||
newConnectionInfo.Parent = containerNode.Tag
|
||||
End If
|
||||
|
||||
newConnectionInfo.TreeNode = newTreeNode
|
||||
newTreeNode.Tag = newConnectionInfo
|
||||
ConnectionList.Add(newConnectionInfo)
|
||||
|
||||
If mRemoteNG.Tree.Node.GetNodeType(tvConnections.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Then
|
||||
tvConnections.SelectedNode.Parent.Nodes.Add(newTreeNode)
|
||||
Else
|
||||
tvConnections.SelectedNode.Nodes.Add(newTreeNode)
|
||||
End If
|
||||
containerNode.Nodes.Add(newTreeNode)
|
||||
|
||||
tvConnections.SelectedNode = newTreeNode
|
||||
tvConnections.SelectedNode.BeginEdit()
|
||||
@@ -1043,6 +1052,8 @@ Namespace UI
|
||||
End If
|
||||
End If
|
||||
|
||||
newContainerInfo.ConnectionInfo = New Info(newContainerInfo)
|
||||
|
||||
' We can only inherit from a container node, not the root node or connection nodes
|
||||
If mRemoteNG.Tree.Node.GetNodeType(parentNode) = mRemoteNG.Tree.Node.Type.Container Then
|
||||
newContainerInfo.Parent = parentNode.Tag
|
||||
@@ -1050,8 +1061,6 @@ Namespace UI
|
||||
newContainerInfo.ConnectionInfo.Inherit.TurnOffInheritanceCompletely()
|
||||
End If
|
||||
|
||||
newContainerInfo.ConnectionInfo = New mRemoteNG.Connection.Info(newContainerInfo)
|
||||
|
||||
App.Runtime.ContainerList.Add(newContainerInfo)
|
||||
parentNode.Nodes.Add(newNode)
|
||||
|
||||
@@ -1201,6 +1210,20 @@ Namespace UI
|
||||
#End Region
|
||||
|
||||
#Region "Search"
|
||||
Private Sub txtSearch_GotFocus(ByVal sender As Object, ByVal e As EventArgs) Handles txtSearch.GotFocus
|
||||
txtSearch.ForeColor = SystemColors.WindowText
|
||||
If txtSearch.Text = Language.strSearchPrompt Then
|
||||
txtSearch.Text = ""
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtSearch_LostFocus(ByVal sender As Object, ByVal e As EventArgs) Handles txtSearch.LostFocus
|
||||
If txtSearch.Text = "" Then
|
||||
txtSearch.ForeColor = SystemColors.GrayText
|
||||
txtSearch.Text = Language.strSearchPrompt
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtSearch_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtSearch.KeyDown
|
||||
Try
|
||||
If e.KeyCode = Keys.Escape Then
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"/>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<section name="mRemoteNG.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
|
||||
</sectionGroup>
|
||||
@@ -10,7 +10,7 @@
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<log4net>
|
||||
<logger name="mRemoteNG.Log">
|
||||
<logger name="Logger">
|
||||
<level value="INFO"/>
|
||||
</logger>
|
||||
|
||||
@@ -565,6 +565,9 @@
|
||||
<setting name="AlwaysShowPanelTabs" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="IdentifyQuickConnectTabs" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</mRemoteNG.My.MySettings>
|
||||
</userSettings>
|
||||
<applicationSettings>
|
||||
@@ -572,6 +575,9 @@
|
||||
<setting name="SupportedUICultures" serializeAs="String">
|
||||
<value>de,en,en-US,es-AR,es,fr,it,nl,pt,pl,ru,uk,zh-CN</value>
|
||||
</setting>
|
||||
<setting name="UpdateChannel" serializeAs="String">
|
||||
<value>release</value>
|
||||
</setting>
|
||||
</mRemoteNG.My.MySettings>
|
||||
</applicationSettings>
|
||||
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
||||
|
||||
@@ -213,6 +213,7 @@
|
||||
<Compile Include="Connection\Connection.Protocol.VNC.vb" />
|
||||
<Compile Include="Connection\Connection.PuttySession.vb" />
|
||||
<Compile Include="Connection\Connection.QuickConnect.vb" />
|
||||
<Compile Include="Tools\CommandLineArguments.vb" />
|
||||
<Compile Include="Container\Container.Info.vb" />
|
||||
<Compile Include="Container\Container.List.vb" />
|
||||
<Compile Include="Credential\Credential.Info.vb" />
|
||||
|
||||
Reference in New Issue
Block a user