diff --git a/CASA/adlib/Novell.CASA.A-D.csproj b/CASA/adlib/Novell.CASA.A-D.csproj index a6cb2f6c..2f608fe7 100644 --- a/CASA/adlib/Novell.CASA.A-D.csproj +++ b/CASA/adlib/Novell.CASA.A-D.csproj @@ -97,32 +97,32 @@ <Reference Name = "pango-sharp" AssemblyName = "pango-sharp" - HintPath = "..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp-2.0\pango-sharp.dll" + HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\pango-sharp.dll" /> <Reference Name = "atk-sharp" AssemblyName = "atk-sharp" - HintPath = "..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp-2.0\atk-sharp.dll" + HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\atk-sharp.dll" /> <Reference Name = "gdk-sharp" AssemblyName = "gdk-sharp" - HintPath = "..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp-2.0\gdk-sharp.dll" + HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\gdk-sharp.dll" /> <Reference Name = "glade-sharp" AssemblyName = "glade-sharp" - HintPath = "..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp-2.0\glade-sharp.dll" + HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\glade-sharp.dll" /> <Reference Name = "glib-sharp" AssemblyName = "glib-sharp" - HintPath = "..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp-2.0\glib-sharp.dll" + HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\glib-sharp.dll" /> <Reference Name = "gtk-sharp" AssemblyName = "gtk-sharp" - HintPath = "..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp-2.0\gtk-sharp.dll" + HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\gtk-sharp.dll" /> </References> </Build> diff --git a/CASA/adlib/Novell.CASA.A-D.csproj.user b/CASA/adlib/Novell.CASA.A-D.csproj.user index 260b515b..0e89b7e9 100755 --- a/CASA/adlib/Novell.CASA.A-D.csproj.user +++ b/CASA/adlib/Novell.CASA.A-D.csproj.user @@ -1,7 +1,7 @@ <VisualStudioProject> <CSHARP LastOpenVersion = "7.10.3077" > <Build> - <Settings ReferencePath = "C:\GtkRun\2.8\lib\gtk-sharp-2.0\" > + <Settings ReferencePath = "" > <Config Name = "Debug" EnableASPDebugging = "false" diff --git a/CASA/extern/w32/namedpipes/AppModule.NamedPipes/AppModule.NamedPipes.csproj.user b/CASA/extern/w32/namedpipes/AppModule.NamedPipes/AppModule.NamedPipes.csproj.user index 56367003..638205b9 100644 --- a/CASA/extern/w32/namedpipes/AppModule.NamedPipes/AppModule.NamedPipes.csproj.user +++ b/CASA/extern/w32/namedpipes/AppModule.NamedPipes/AppModule.NamedPipes.csproj.user @@ -1,7 +1,7 @@ <VisualStudioProject> <CSHARP LastOpenVersion = "7.10.3077" > <Build> - <Settings ReferencePath = "D:\# Projects Test\Win32Security\v0.5_GotDotNet\Win32Security\bin\Debug\" > + <Settings ReferencePath = "" > <Config Name = "Debug" EnableASPDebugging = "false" diff --git a/CASA/gui/CASAManager.csproj b/CASA/gui/CASAManager.csproj index c8437db3..cc37bdc4 100644 --- a/CASA/gui/CASAManager.csproj +++ b/CASA/gui/CASAManager.csproj @@ -104,40 +104,52 @@ Project = "{E21DD887-22F4-4935-9851-409715F663B0}" Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> + <Reference + Name = "Novell.CASA.CASAPolicy" + Project = "{636A9D7E-BFB5-4EB9-96F8-51FF85A98826}" + Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" + /> <Reference Name = "pango-sharp" AssemblyName = "pango-sharp" - HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\pango-sharp.dll" - /> - <Reference - Name = "atk-sharp" - AssemblyName = "atk-sharp" - HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\atk-sharp.dll" - /> - <Reference - Name = "gdk-sharp" - AssemblyName = "gdk-sharp" - HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\gdk-sharp.dll" - /> - <Reference - Name = "glade-sharp" - AssemblyName = "glade-sharp" - HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\glade-sharp.dll" - /> - <Reference - Name = "glib-sharp" - AssemblyName = "glib-sharp" - HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\glib-sharp.dll" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\pango-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" /> <Reference Name = "gtk-sharp" AssemblyName = "gtk-sharp" - HintPath = "..\..\..\..\..\..\GtkRun\2.8\lib\gtk-sharp\gtk-sharp.dll" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\gtk-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" /> <Reference - Name = "Novell.CASA.CASAPolicy" - Project = "{636A9D7E-BFB5-4EB9-96F8-51FF85A98826}" - Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" + Name = "gnome-sharp" + AssemblyName = "gnome-sharp" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\gnome-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" + /> + <Reference + Name = "glib-sharp" + AssemblyName = "glib-sharp" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\glib-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" + /> + <Reference + Name = "glade-sharp" + AssemblyName = "glade-sharp" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\glade-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" + /> + <Reference + Name = "gdk-sharp" + AssemblyName = "gdk-sharp" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\gdk-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" + /> + <Reference + Name = "atk-sharp" + AssemblyName = "atk-sharp" + HintPath = "C:\GTK\2.8\lib\gtk-sharp-2.0\atk-sharp.dll" + AssemblyFolderKey = "hklm\dn\gtk-sharp-2.0" /> </References> </Build> @@ -168,6 +180,11 @@ SubType = "Code" BuildAction = "Compile" /> + <File + RelPath = "Config.cs" + SubType = "Code" + BuildAction = "Compile" + /> <File RelPath = "Firefox.cs" SubType = "Code" @@ -279,6 +296,16 @@ RelPath = "images\novell-logo.png" BuildAction = "Content" /> + <File + RelPath = "windows\NoGTKSharpForm.cs" + SubType = "Form" + BuildAction = "Compile" + /> + <File + RelPath = "windows\NoGTKSharpForm.resx" + DependentUpon = "NoGTKSharpForm.cs" + BuildAction = "EmbeddedResource" + /> </Include> </Files> </CSHARP> diff --git a/CASA/gui/CasaMain.cs b/CASA/gui/CasaMain.cs index e41d5c8b..36609cda 100644 --- a/CASA/gui/CasaMain.cs +++ b/CASA/gui/CasaMain.cs @@ -49,10 +49,11 @@ namespace Novell.CASA.GUI public static CasaTray mCasaTray = null; public static bool m_bShowDebug = false; - public static bool m_bNotifyUser = true; + public static bool m_bshowDialogStillRunning = true; public static bool m_bGuiLocked = false; int loginPromptCount = 3; + private Config config = new Config(); #region Glade Widgets @@ -153,6 +154,12 @@ namespace Novell.CASA.GUI Logger.DbgLog("GUI:CasaMain.Main() - BEGIN"); Common.ReadPlatform(); + +#if W32 + // check for in installation of GTK# + if (!CommonGUI.IsGTKSharpInstalled()) + return; +#endif Application.Init(); try @@ -1888,8 +1895,7 @@ namespace Novell.CASA.GUI /// </summary> public void StillRunning(object obj, EventArgs args) { - Logger.DbgLog("GUI:CasaMain.StillRunning() - BEGIN"); - + Logger.DbgLog("GUI:CasaMain.StillRunning() - BEGIN"); Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogStillRunning", null); gxmlTemp.Autoconnect (this); dialogStillRunning.TransientFor = windowMain; @@ -1899,8 +1905,9 @@ namespace Novell.CASA.GUI public void btnStillRunning_clicked(object obj, EventArgs args) { if (checkbuttonCloseMessage.Active) - { - m_bNotifyUser = false; + { + config.SetConfigSetting("showDialogStillRunning", false); + config.WriteConfig(); } dialogStillRunning.Destroy(); @@ -2010,9 +2017,10 @@ namespace Novell.CASA.GUI { if (mCasaTray != null) { - if (m_bNotifyUser) + if (config.GetConfigSetting("showDialogStillRunning", true)) { - // StillRunning(null, null); + StillRunning(null, null); + /* // prompt user MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, Gtk.MessageType.Info, @@ -2024,7 +2032,7 @@ namespace Novell.CASA.GUI md.Modal = true; md.SetIconFromFile(Common.CASAICONS); md.Show(); - m_bNotifyUser = false; + */ } mCasaTray.CasaManagerQuit(); return; diff --git a/CASA/gui/CommonGUI.cs b/CASA/gui/CommonGUI.cs index e63fc62b..6f5cdd61 100644 --- a/CASA/gui/CommonGUI.cs +++ b/CASA/gui/CommonGUI.cs @@ -213,6 +213,26 @@ namespace Novell.CASA.GUI } } #if W32 + + public static bool IsGTKSharpInstalled() + { + // check the registry for the existence of GTK + string sGTK = ReadRegKey(Registry.LocalMachine, "Software\\GTK\\2.0", "Path"); + if (sGTK != null) + { + System.Diagnostics.Trace.WriteLine("GTK Path is: " + sGTK); + return true; + } + else + { + NoGTKSharpForm form = new NoGTKSharpForm(); + form.ShowDialog(); + + return false; + } + } + + internal static string ReadRegKey(RegistryKey rk, string sSubKey, string KeyName) { // Opening the registry key diff --git a/CASA/gui/images/casa.glade b/CASA/gui/images/casa.glade index 7841fac2..cf4f9a82 100644 --- a/CASA/gui/images/casa.glade +++ b/CASA/gui/images/casa.glade @@ -7667,7 +7667,7 @@ prompted for the Master Password at startup.</property> <widget class="GtkCheckButton" id="checkbuttonCloseMessage"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Do not show this again</property> + <property name="label" translatable="yes">Do not show this in the future</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> diff --git a/CASA/gui/windows/NoGTKSharpForm.cs b/CASA/gui/windows/NoGTKSharpForm.cs new file mode 100644 index 00000000..978c0ba7 --- /dev/null +++ b/CASA/gui/windows/NoGTKSharpForm.cs @@ -0,0 +1,153 @@ +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; + + +namespace Novell.CASA.GUI +{ + /// <summary> + /// Summary description for NoGTKSharpForm. + /// </summary> + public class NoGTKSharpForm : System.Windows.Forms.Form + { + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.PictureBox pictureBox1; + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.Container components = null; + + public NoGTKSharpForm() + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + + // + // TODO: Add any constructor code after InitializeComponent call + // + } + + /// <summary> + /// Clean up any resources being used. + /// </summary> + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if(components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(NoGTKSharpForm)); + this.label1 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); + this.label1.Location = new System.Drawing.Point(80, 72); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(328, 16); + this.label1.TabIndex = 0; + this.label1.Text = "The GTK# Library is needed to run CASA Manager."; + this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(160, 136); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(64, 24); + this.button1.TabIndex = 1; + this.button1.Text = "Ok"; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.button2.Location = new System.Drawing.Point(240, 136); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 24); + this.button2.TabIndex = 2; + this.button2.Text = "Cancel"; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label2 + // + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); + this.label2.Location = new System.Drawing.Point(160, 96); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(160, 16); + this.label2.TabIndex = 3; + this.label2.Text = "Do you want to install it now?"; + this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(472, 56); + this.pictureBox1.TabIndex = 4; + this.pictureBox1.TabStop = false; + // + // NoGTKSharpForm + // + this.AcceptButton = this.button1; + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.CancelButton = this.button2; + this.ClientSize = new System.Drawing.Size(464, 174); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.label1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MaximumSize = new System.Drawing.Size(472, 208); + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(472, 208); + this.Name = "NoGTKSharpForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Alert"; + this.TopMost = true; + this.ResumeLayout(false); + + } + #endregion + + private void button1_Click(object sender, System.EventArgs e) + { + Common.ShowUrl("http://forge.novell.com/modules/xfmod/project/?gtks-inst4win"); + this.Dispose(true); + } + + private void button2_Click(object sender, System.EventArgs e) + { + this.Dispose(true); + } + } +} diff --git a/CASA/gui/windows/NoGTKSharpForm.resx b/CASA/gui/windows/NoGTKSharpForm.resx new file mode 100644 index 00000000..09a5323a --- /dev/null +++ b/CASA/gui/windows/NoGTKSharpForm.resx @@ -0,0 +1,678 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 1.3 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">1.3</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1">this is my long string</data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + [base64 mime encoded serialized .NET Framework object] + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + [base64 mime encoded string representing a byte array form of the .NET Framework object] + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used forserialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>1.3</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="button1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="button1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="button1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="button2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="button2.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="button2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="label2.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="label2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="label2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="pictureBox1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="pictureBox1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="pictureBox1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + 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 + qQAAAABJRU5ErkJggg== +</value> + </data> + <data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </data> + <data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>(Default)</value> + </data> + <data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>False</value> + </data> + <data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>8, 8</value> + </data> + <data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </data> + <data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>80</value> + </data> + <data name="$this.Name"> + <value>NoGTKSharpForm</value> + </data> + <data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </data> + <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>Private</value> + </data> + <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + AAABAAkAMDAQAAEABABoBgAAlgAAACAgEAABAAQA6AIAAP4GAAAQEBAAAQAEACgBAADmCQAAMDAAAAEA + CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg + AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAA + AAAQAAAAAAAAAAAAAACAAAAAAIAAAICAAAAAAIAAgACAAACAgACAgIAAwMDAAP8AAAAA/wAA//8AAAAA + /wD/AP8AAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAId3eAAAAAAAAAAAAAAAAAAAAAAAAAAA+HeId48AAAAAAAAAAAAAAAAAAAAAAA + D4eO6IiHeAAAAAAAAAAAAAAAAHd3d3d3B36IiIiIhwAAAAAAAAAAAAAAAH////+HfoiIiIiIiId///8A + AAAAAAAAAH////d+6IiIiIiIiHd3j/8AAAAAAAAAAH//+HjuiIiIiIiIh3B3d48AAAAAAAAAAH/4d+7o + iIiIiIiIh3B3fncAAAAAAAAAAHh37uiIiIiIj4iIh3AHeOh4AAAAAAAACHfu7oiIiIiP//+IiHcHd4jn + gAAAAAAAh47uiIiIiIj/////iHcHd4iIeAAAAAAAiO7oiIiIiP///////4dwd4iIdwAAAAAIfuiIiIiI + j/////////iHeIiIdwAAAAh3iIiIiIiI/////////4iIiIiIdwAAAId4iIiIiIj/////////iIiIjoiI + dwAA+HiIiIiIiI//////////iIiHiI7odwAAh4iIeHiIj/////////+IiId3fo53jwAAeIh48HeP//// + /////4iIiOiIjocPAAAAd3dwAHh4/////////4iIh4joh4hwAAAAAHeAAH/4eP/////4iIeIh4jneP9w + AAAAAHd/AH//iI////+IiHd4iOd4//9wAAAAcHcHgH///4eP//iIiIh36Hj///9wAAAAh3gAB3////+H + j4iIiIiIeP////9wAAAACAdwAA////hwB4iIiI53j/////9wAAAAAId4cA///4AAAAiIjneP//////9w + AAAAAA+Hd3///4AAd3d3d4////////9wAAAAAAAPh3////h3eIj4j/////////9wAAAAAAAAAH////+I + j/////////////9wAAAAAAAAAH//////+IiIiIiIiIiIj/9wAAAAAAAAAI/4iIiP////////////j/9w + AAAAAAAAAI////////////////////9wAAAAAAAAAI////////////////////9wAAAAAAAAAI////// + +IiIiIiIiIiIj/9wAAAAAAAAAI/4iIiP////////////j/9wAAAAAAAAAI////////////////////9w + AAAAAAAAAI////////////////////9wAAAAAAAAAIMzMzMzMzMzMzMzMzMzMzNwAAAAAAAAAIiIiIiI + iIiId3d3dzMzMzNwAAAAAAAAAIiIiIiIiIiId3d3dzMzMzNwAAAAAAAAAIiIiIiIiIiId3d3dzMzMzNw + AAAAAAAAAIiIiIiIh3d3d3d3d3d3d3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////9fjf//////////////gf////////4Af/////// + +AA//////8AAAAAf////wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAD//A/4AAAAAH + /8D/AAAAAAP/gP8AAAAAA/8A/gAAAAAD/wD4AAAAAAP+APAAAAAAA/gAwAAAAAAD8ADAAAAAAAPAAMBA + AAAAD8AAwcAAAAAfwEDBwAAAAB/BwMDAAAAAH8HAwEAAAAAfwMDAAAAAAB/AQOAAAAAAH8AA8AAAAAAf + 4AD4AAAAAB/wAP4AAAAAH/gA/8AAAAAf/gD/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/A + AAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf + /8D/wAAAAB//wP/////////A//////////////////////////////////////////8oAAAAIAAAAEAA + AAABAAQAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAIAAAAAAgAAAgIAAAAAAgACAAIAAAICAAICA + gADAwMAA/wAAAAD/AAD//wAAAAD/AP8A/wAA//8A////AAAAAAAAAAAPh4ePAAAAAAAAAAAAAAAPh47u + h48AAAAAAAABEREREYiOiO5xERERAAAAB///h3iIjoiI6HeP9wAAAAf/+HiIiIiIiIcXeIcAAAAH+HiI + iIiPiIiHB3hxAAAA8XiIiIiIj/+Ihxd454AAAIeIiIiIiP//+OgReO54AAh4iIiIiP/////4h3iOhw+H + iIiIiI///////46IiIf3eIiIiI///////4iIjo7neIh4iIj///////iIiIiOeIiIgY////////iIiIiO + h4B4fweI///////4iIiIh4cAF3AH+Ij///+IiIiOh4/3ABcYB//4iP/4iIiOh4//9wB3EHf///h4iOiI + h4j///cAgXEA//+HAXju6Hj////4AA93d///cRF4iHj/////+AAACIf//4d4j4j///////gAAAAI//// + j//////////4AAAACP////iIiIiIiIiP+AAAAAj4iIj/////////j/gAAAAI///////////////4AAAA + CP////iIiIiIiIiP+AAAAAj4iIj/////////j/gAAAAI///////////////4AAAACDMzMzMzMzMzMzMz + OAAAAAiIiIiIiId3d3czMzgAAAAIiIiIiIiHd3d3MzM4AAAACIiIiIiId3d3d3d3eAAAAAAAAAAAAAAA + AAAAAAAA//4D///4AP/4AAAD+AAAA/gAAAP4AAAD8AAAAfAAAADgAAAAgAAAAAAAAAAAAAAAAAAAAQgA + AAMYAAADCAAAAwAAAAMAAAADgAAAA+AAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gA + AAP4AAAD+AAAA/////8oAAAAEAAAACAAAAABAAQAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAIAA + AAAAgAAAgIAAAAAAgACAAIAAAICAAICAgADAwMAA/wAAAAD/AAD//wAAAAD/AP8A/wAA//8A////AAAA + AAiIiAAAAHd3eI7nd3AAiIj4jud3cAB4iIj/iAeICI+I////iOeHj/////ju53h4///4iOh/d4+I/4jo + iHB3f/h4iIj/cPh/93iI//9wAI/4/////3AAj///////cACP//////9wAIiIh3dzM3AAiIiHd3MzcACI + iIiId3dw/g///8AB/g/AAcABwADAAYAAwAAAAIAAAAAAAAABAAAAAQABAAEAAcABAAHAAcABwAHAAcAB + wAHAAcABwAHAASgAAAAwAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAgIAqp5WAPLK + pgACXlYAVp7WAFbe/gD+vn4AAl5+AP7e1gACPioAgoKCAFb+/gCqfioAVr7WAFZ+fgACPlYAAh4qAMLe + wgCq3tYApqKiAPL6/gBWnqoAqr7WAKqefgBWXlYAVl5+AFY+KgCq/v4Aqn5WAFa+/gBWfqoAVj5WAFYe + KgD+3qoAqt7+AKq+qgD+/v4Aqp6qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJhYZDhkZ + CCYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYICg4EHR0EDhMUJiYmJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJBMODQUdDR0dHRUZJSYmJiYmJiYmJiYmJiYmJiYmJiYm + JiYmJhgYGBgYGBgYGBgaHxUFIiINDQ0NHR0NHgkgGhoaGhoaGiYmJiYmJiYmJiYmJiYmJhgkJCQkJCQk + EQ4VBSIiIiIdDQ0NDQ0dHQ0OCggkJCQkGiYmJiYmJiYmJiYmJiYmJhgkJCQkJAgKDgUFIiIiIiIiDQ0N + DQ0NDRUOHhkTFCQkGiYmJiYmJiYmJiYmJiYmJhgkJCQUEw4NBQUiIiIiIiIiHQ0NDQ0NBBkQDx4EGSUU + GiYmJiYmJiYmJiYmJiYmJhgkFCMOBAUFBSIiIiIiIiIbIg0NDQ0NBBkQDwMVHR4OICYmJiYmJiYmJiYm + JiYmJhgWChUFBQUiIiIiIiIiIiIbFCIiDQ0NBB4JEBkHDR0NByMmJiYmJiYmJiYmJiYmERoeBQsFBSIi + IiIiIiIiGxsUFBQUIh0NDR4PEBkDFR0dHQ4RJiYmJiYmJiYmJiYIGQ0FBQUiIiIiIiIiIiIbFBQUFBQk + JBQiHQQZJg8DFR0NHQ0ZESYmJiYmJiYmJiYTDQsFBSIiIiIiIiIiIhsUFBQUFCQkFBQUFCIEBw8HBB0N + DR0eCiYmJiYmJiYmJiUYBQUiIiIiIiIiIiIbFBQUFBQkJCQUFBQUFBQiHQQEDQ0NDR0EGSYmJiYmJiYR + GB8KIiIiIiIiIiIiGxsUFBQUFCQkFBQUFBQUGxsbIiIdDQ0NDR0EGSYmJiYmJiMfChMjEiIiIiIiIiIb + FBQUFBQkJCQUFBQUFBQbGxsiDQ0iBQ0NDR0EGSYmJiYkIxgTIxYlEyIbIiIiIhsUFBQUFCQkFBQUFBQU + FBsbIg0iDQQdIiIFHQ0OCiYmJiYjGCMjFhMKCg4bGyIiGxQUFBQUJCQUFBQUFBQUGyINDQ0EBAQEHSIF + FQ4jFCYmJiYKEyMTCgokJh8KGxQUFBQUFCQkJBQUFBQUFCIiDQ0NDR0iDQ0NBQ0OEBQmJiYmJiYYCgoK + GCYmJgojCiMUFBQUJCQUFBQUFBQUFCINDSIiBA0NBRsNDgoIGiYmJiYmJiYaEAofEyYmJgokCBMKESQk + JBQUFBQUFBsWIiIEDSINBA0dBRUKFiQkGiYmJiYmJiYaJgoaHxQmJgokJCQIEwoUJBQUFBQUIg0NDQQE + BA0iIgUVDiMUJCQkGiYmJiYmJiYYEAofEB8RJgokJCQkJBEKExQUFBsiDRYiIiINBAQFDQ4lFCQkJCQk + GiYmJiYmJiYRGB8KEBAQChgkJCQkJCQUEQojGxsNDSIiIh0iIg0OExQkJCQkJCQkGiYmJiYmJiYmCBoZ + ChAQEBAkJCQkJCQRChoQGRYiDQ0NDQ0FFQoIJCQkJCQkJCQkHyYmJiYmJiYmJhEfGAofEBAkJCQkJBEQ + EBAQJhojIiIiBRUOFiQkJCQkJCQkJCQkHyYmJiYmJiYmJiYUChgKChgkJCQkJAgaIBofGAoKChUVDhMk + JCQkJCQkJCQkJCQkHyYmJiYmJiYmJiYmJggTChgkJCQkJBQTGAoKCiUIJBEjFCQkJCQkJCQkJCQkJCQk + HyYmJiYmJiYmJiYmJiYmJgokJCQkJCQUIxMRJCQkJCQkJCQkJCQkJCQkJCQkJCQkHyYmJiYmJiYmJiYm + JiYmJgokJCQkJCQkJCQkFhYWFhYWFhYWFhYWFhYWFhYWJCQkHyYmJiYmJiYmJiYmJiYmJgokJBMWFhMT + FiQkFCQkJCQkJCQkJCQkJCQkJCQWJCQkHyYmJiYmJiYmJiYmJiYmJgokJCQkJCQkJCQkFBQUFBQUFBQU + FBQUFBQUFBQUJCQkGCYmJiYmJiYmJiYmJiYmJgokJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk + GCYmJiYmJiYmJiYmJiYmJgokJCQkJCQkJCQkFhYWFhYWFhYWFhYWFhYWFhYWJCQkGCYmJiYmJiYmJiYm + JiYmJhMkJBMWExMWEyQkFCQkJCQkJCQkJCQkJCQkJCQWJCQkGCYmJiYmJiYmJiYmJiYmJhMkJCQkJCQk + JCQkFBQUFBQUFBQUFBQUFBQUFBQUJCQkGCYmJiYmJiYmJiYmJiYmJhMkJCQkJCQkJCQkJCQkJCQkJCQk + JCQkJCQkJCQkJCQkGCYmJiYmJiYmJiYmJiYmJhMMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM + GCYmJiYmJiYmJiYmJiYmJhMhISEhAgICAgICBgYGBgYXFwEBAQEBHBwcHAwMDAwMGCYmJiYmJiYmJiYm + JiYmJhMhISEhAgICAgIGBgYGBhcXFwEBAQEcHBwcHAwMDAwMGCYmJiYmJiYmJiYmJiYmJhMhISEhAgIC + AgIGBgYGBgYXFwEBAQEBHBwcHAwMDAwMGCYmJiYmJiYmJiYmJiYmJhMTExMTExMTCgoKCgoKCgoKCgoK + GBgYGBgYGBgYGBgYGCYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm + JiYmJiYmJiYmJiYmJiYmJiYm////////X43//////////////4H////////+AH////////gAP//////A + AAAAH////8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAA//wP+AAAAAB//A/wAAAAAD + /4D/AAAAAAP/AP4AAAAAA/8A+AAAAAAD/gDwAAAAAAP4AMAAAAAAA/AAwAAAAAADwADAQAAAAA/AAMHA + AAAAH8BAwcAAAAAfwcDAwAAAAB/BwMBAAAAAH8DAwAAAAAAfwEDgAAAAAB/AAPAAAAAAH+AA+AAAAAAf + 8AD+AAAAAB/4AP/AAAAAH/4A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/A + AAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf + /8D/////////wP//////////////////////////////////////////KAAAACAAAABAAAAAAQAIAAAA + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAICAgCqnlYA8sqmAAJeVgBWntYAVt7+AP6+fgACXn4A/t7WAFY+ + KgCCgoIAqn4qAFa+1gCq/v4AVn5+APL6/gACHioAwt7CAKre1gCmoqIAAj5WAFaeqgCqvtYA/p5+AFZe + VgBWXn4A/t7+AKp+VgBWvv4AVn6qAP7+/gBWHioA/t6qAKre/gCqvqoAVj5WAKqeqgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJSUlJSUlJSUlJSUlJSUPEw4EDhMIJSUlJSUlJSUlJSUl + JSUlJSUlJSUlJSUeIg4MBRwcBA4THiUlJSUlJSUlJSUlJSUJCQkJCQkJHyMMISEcDAwcHAQUHwkJCQkJ + JSUlJSUlJRgeHh4eEQoVBSEhIRwMDAwMHAQZChEeHhglJSUlJSUlGB4eGhMVBSEhISEhIQwMDAwEGRQd + HRMIGCUlJSUlJSUYDyQdDAUhISEhISENIQwMDAQZEAMVDA4jJSUlJSUlHiMODAUFISEhISEhDQ8PDyEM + DB0QFBkMBR0kJSUlJSUTFQUFISEhISEhIQ0PDw8eHiEcBBQQBwQcHB0iJSUlCB0NBSEhISEhISEPDw8P + Hh4PDw8hFQcODAwcDA4lHiQYFSEhISEhISENDw8PDx4PDw8PDw8NBQwMDAwMHQ8KGCQSISEhISEhDQ8P + Dx4eDw8PDw8NDSEMIRwMHBwOCgoRIgoVDSEhIQ8PDw8eHg8PDw8PISEMDAQMIQUcHRMTIhMKESMWDw8P + Dw8eHg8PDw8PDSEMDAwMDAwFFRgRJQoKCh4lChMTDx4eHh4PDw8PDw0MDCEMDAUhDA4iCiUlCRgKJSUK + HhETIg8eDw8PDyEWDAQMBQwcDB0kDx4KJSUJGRATJQoeHh4RExYPDw0hDCEWDAQcIRUTCB4eHgolJRgK + IyUYGB4eHh4eIgoSDQwcISEhIRUKCB4eHh4eCiUlERgKIxAQHh4eHhYYEBAKEhwcHBUKER4eHh4eHh4K + JSUlCAoKGRgeHh4eGBAJCRgKFQwKIg8eHh4eHh4eHgolJSUlJREKGB4eHh4WGAoKJAgIFg8eHh4eHh4e + Hh4eCiUlJSUlJSUKDx4eHh4PCB4eHh4eHh4eHh4eHh4eHh4KJSUlJSUlJQoeHh4eHh4eERERERERERER + EREREREeHgolJSUlJSUlEx4RIhEiER4ICAgICAgICAgICAgIER4eEyUlJSUlJSUTHh4eHh4eHh4eHh4e + Hh4eHh4eHh4eHh4TJSUlJSUlJRMeHh4eHh4eEREREREREREREREREREeHhMlJSUlJSUlEx4RFiIRFh4I + CAgICAgICAgICAgIER4eEyUlJSUlJSUTHh4eDx4eHh4eHh4eHh4eHh4eHh4PHh4TJSUlJSUlJRMLCwsL + CwsLCwsLCwsLCwsLCwsLCwsLCxMlJSUlJSUlEyAgICAgIAICBgYGBhcBAQEBGxsLCwsLEyUlJSUlJSUT + ICAgICAgAgIGBgYGFwEBAQEbGwsLCwsTJSUlJSUlJRMTExMTEwoKCgoKCgoKCgoKChgYGBgYGBMlJSUl + JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl//4D///4AP/4AAAD+AAAA/gAAAP4AAAD8AAAAfAA + AADgAAAAgAAAAAAAAAAAAAAAAAAAAQgAAAMYAAADCAAAAwAAAAMAAAADgAAAA+AAAAP4AAAD+AAAA/gA + AAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/////8oAAAAEAAAACAAAAABAAgAAAAAAAAA + AAAAAAAAAAAAAAABAAAAAAAAAh4qAKqeVgBWntYAql4qAFbe/gBWnqoAVn5+AMLewgCmoqIAVj4qAFa+ + 1gCqfioA8vr+AKq+qgCq/v4AVn6qAAI+VgCqvtYA/r5+AFZeVgCq3v4AgoKCAP7e1gCqnqoAVr7+AKp+ + VgD+/v4A8sqmAFY+VgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0dHR0dHR0NBQoIFh0dHR0dHRUVFRMGFAQYGA8TExMdHR0IFggK + DhQUGBgPEAUcHR0dBgoUFBQUDAwUAgAFChcdFwoOFBQODAwaDA4CAhgFCBwRDg4MDBoMDA4UGAQEBRwI + FRcMGhoMDBQKCgQCEwwcFQgaEREMDhQKGAoIFhMdFRwJDAwIExEECgUHGhoTHQwIExoaFRMICA0aGhoa + Ex0dHQgMFhYWFhYWFhYWGhMdHR0IGhoaGhoaGhoaGhoTHR0dCBoWFgwMDAwMDAwaEx0dHQgbGxISEgEB + GQsLAxMdHR0IGxsSEhIBARkLCwMTHR0dCAgICAgICAgVFRUVFR3+D1ybwAH+D8ABwAHAAMABgADAAAAA + gAAAAAAAAAEAAAABAAEAAQABwAEAAcABwAHAAcABwAHAAcABwAHAAcABKAAAADAAAABgAAAAAQAgAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Eyw2ui9xi/krZXzyDB0jogAAACUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ0YG347cIDZT6/U/1DD8v9Rwu7/Qp7C/yJR + Zc0HEhZsAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIECgtlMFtozWa60P984/7/WMn2/026 + 5/9Qvur/U8f1/1HA7P87jq/5Gj9NvwABAVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABYV1L/WFdS/1dWUf9XVlH/VlVQ/1VUT/9UU07/U1JN/1JRS/9QUEr/OTk1/yxDSf9Yo7n/e+L1/4ns + //+C3/7/VL3n/0q45P9OuuX/Trrl/1C/6/9Tw/H/Trnj/zd8l/8gMDX/Ly4p/zs5M/86ODL/OTcx/zg2 + Mf84NTD/NzUv/zc1L/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABYV1L//////////////////////////////////v7+/9PT0/9lcnb/VJir/3Xb + 8/+C6P//huT//43j//+Q4v3/YMXs/0e34/9PuuX/Trrl/0665f9Ou+b/UL7q/1LD8P9Ltt7/PnqT/3F6 + ff/i4+T//////////////////////zc1L/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYV1L///////////////////////7+/v/k5OT/fYWI/0uD + lP9u0+z/f+n//4Dh//+H4f//juP//5Xm//+g6P//gdX1/0i35P9MueX/Trrl/0665f9OuuX/Trrl/063 + 4v9Bk7b/MnKN/zV9mv89a37/kZaX/+vs7P///////////zc1L/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYV1L/////////////////6+vr/5uf + of9MdYL/Y8Pf/33s//9+4///gt///4rh//+R4///meX//6Dn//+r6///qun9/2fH7P9DteL/Tbnk/0+6 + 5f9OuuX/T73o/0ekyv8uYXn/EB8o/x9FVv87jKz/QZ3B/0tpdf+tr7D/7+/v/zc1L/8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZWFP///////Ly + 8v+tsLH/WXR+/1Wqwv946f//fef//37e//+G4P//juP//5Xj//+c5v//o+j//6vq//+z7P//wvL//67n + +v9hw+n/QbTi/0i35P9OuuX/T73p/0WexP8yaoT/Cxcc/x1AT/8lUmX/PpW3/1bN+/84hKP/YHN5/ysq + Jf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABaWVX/wcHB/2t9hP9Gkqb/b9///3vs//983///gt7//4ni//+R5P//mOX//5/m//+n6f//ruv//7bt + //++7///yPH//9f3///E7vr/gM/u/0y55f9AteP/S7vm/0qq0P85fJr/FzE9/xQrNv8vZH3/J1pu/0y1 + 3/9Xz///Tbji/ylbbv8DBwlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACYyPD//SoeX/2bR6/968P//euT//33d//+F4P//jeL//5Tk//+b5v//o+j//6rp + //+y6///uu7//8Lw///K8f//0vP//9r2///t/f//8fz//8Lo9v93y+v/Rrfk/0Kz4P8+jK7/JEtd/wkT + GP8wZoD/JVJl/0Gavf9RwO3/UsPw/1PH9v8pYHfmAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAIyJJVstcw9X/de3//3no//973v//gd///4fh//+P4///luX//57n + //+m6f//rev//7Xs//++7///xfH//83z///V9f//3/f//+b5///w+v/////////////t+f3/q+D0/2XG + 6/8/p9P/LGeC/wgOEf8hRVf/JVJl/z2Ttf9Rwe7/Trrk/1HC7/9NuOP/FTI/twABADIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRYcaFazy/9++f//eN///33d//+E4f//jOL//5Lj + //+a5v//oej//6np//+x6///uO3//8Hu///J8f//0vP//9r1///h9///6vr///X8///8/v//+/7///X9 + ///0/f//7/z//8/x/P+S2/f/TKXJ/yFZc/8cPk7/Jlhs/0es0/9QwOz/Trrl/0675v9TxvT/NX2b8Awa + II8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKDtC2HDQ7P9+6P//gN7//4jh + //+P5P//l+b//53n//+l6P//rOv//7Ts//+87v//xPD//8zx///V9f//3vb//+b4///v+///+P7///z/ + ///4/f//8fz//+n5///i9///3Pb//9v3///S9f//suv9/3nL6/9EnsH/QKXN/0686P9Ou+b/Trrl/066 + 5f9SwvD/RKLH/yFPYdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBISEq1JRUP1goyQ/4fZ + 8f+B5f//iuH//5Lk//+Z5v//oej//6jp//+w6///t+7//7/w///H8v//0PT//9j1///h9///6/r///P8 + ///7/v//+/7///T9///u+///5vn//9/2///Y9f//0PP//8vy///G8v//wfH//6nn/v+G2vn/Zsrw/0y5 + 5P9MuOT/Trrl/0665P9Swu//R6rR/yhgducAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQFOLi0t5HNx + cf+opKL/wr+//6HX6P+L6P//lOT//5zn//+l6P//rOr//7Pr//+77f//w/D//8zy///U9P//3Pb//+T3 + ///u+///+P3///z+///5/v//8fv//+v6///k+f//3Pf//9T1///O8v//x/L//8Hw/v+88P//s+v7/2y/ + 4P9avub/k+P+/37Y9/9XwOn/TLjk/0655P9TxvT/R6fO/yRWat8AAAAAAAAAAAAAAAAAAAAAAAAAAwAA + AEZCQUHrmZeW/7y7uv/Ixsf/sayq/4OWnviN2O3/pvP//6bo//+v6///uO3//77u///G8P//z/P//9j1 + ///g9///6Pn///L7///6/v//+/////b9///u+///5/n//+D4///Z9v//0fP//87z///I8///wPL//5vY + 7v92yOf/gNPx/2C52v9Fps7/Z8nv/4/m//+D3/z/Z9H2/1jL9v9QvOj/KmR84gsZIIoAAAAAAAAAAAAA + AAAAAAAABQUFRDw7O8yzsrL/wL+//8C/wP+WlZb8Pj08qwAAAHBScHj/t/v9/774//+67v//wu///8rx + ///T8///2/b//+T5///t+///9/3///7+///6/v//8vv//+r6///j+f//3Pb//9X1///P9P//z/X//7/w + /v+W2vL/fcrl/2zA4f9fs9X/Va7R/1Ks0f9WrM3/RKbO/2nL8f+E7v//euX8/1Kkvf8eRFHBAAMESwAA + AAoAAAAAAAAAAAAAAAAAAAAAMzMzsJiYmPewsLD/paSm/3x7fPcSEhJ/AAAAAwAAAABIR0b/b4uT/8Lx + 8//Z////0/n//9X0///e9v//6Pn///L8///6/v///f////f+///u+///5/n//+H3///Z9v//0/T//83z + ///C7/3/sOj6/3/J5f9csdP/abnZ/0213/97z+3/m+b7/3fL6f9et9r/Wbjd/2nR9P9fu9D/WH+L/ygp + Jv8AAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0pK5HFwcv9zcnT/iIiK/g4ODp8AAAAAAAAAAAAA + AABvbmr/t7e3/3R/gv+hu73/5f////T////t+///9v3///3////7/v//8/z//+v7///l+P//3fb//9f1 + ///S9P//0Pf//9D5//+z5fT/W7rg/1264P+e3vH/g9Ty/0qv2P9tw+P/bMjn/3ra+P+L9v//bcvp/1KF + lP+EjZD/2tra/0E/Of8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx4g6CEgI/93dnj/TU1P/QAA + AGcAAAAAAAAAAAAAAABxcG3//////+fn5/+anJ3/foSH/8vT0/////////////f+///v+///6Pn//+L3 + ///a9v//1PT//9b4///G8f//j8/n/4bU7v+G1PD/T6nO/1K23f+R5f//eMvo/1Kr0P9duNv/Ysfu/27T + 8v9NkJ7/dIKH/8bGxv///////////0JAO/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkK1xEQ + E/96eXv/Ozo+/wUFB78AAAANAAAAAAAAAAB0c3D/////////////////3t7e/5CRkf+PkI//5+3v//// + ///p+///3fX//9f0///S9P//zPT//5nc9P9wvdz/fb/a/2a31v9LqM7/Vq7R/02ozf9St+D/gNf1/4Tk + +P933fz/VqC5/2R6gP+4urv/9vb2/////////////////0RBPf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAgIClwsKDe53d3r/T05R/xUUF/4ICAi2AQICKAAAAAB3dnL///////////////////////v7 + +//T09P/foCA/5Wgo//f+fv/4P///87z///J8f//htbz/1Wz2v+MzOP/p+f5/6Lm+P+N1/H/csTh/1So + zP9Vr9T/feD//2m+0/9Vdn7/qayt/+3t7f///////////////////////////0VDPv8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAKwEAAatDQ0b/jIuN/yMiJv8aGR3/EBAS4wQEBIpgYFz//v7+//// + ////////////////////////9vb2/8rLy/9scXL/mre+/8n5/f/C9f//X7XZ/1S54v+g5/z/p+3//5Di + /f9wyu3/gNj1/4np+v9yyuL/UXuJ/4+Tlf/r6+v//////////////////////////////////////0ZE + P/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMEAwXPbWtu/4OChP8oJiv/Gxof/xoZ + HP4XFhn////////////////////////////+/v7/1dXV/3Rzc/8xMTH/FBUX/1lsc/+eztn/ldjs/1y0 + 1v9VtNn/Xrjb/1a02P9gvt//dtLq/1qUov90fH//3t7e//7+/v////////////////////////////// + /////////////0dGQP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnBAMFtmFh + Y/iNjI3/S0pO/ygnK/8fHiH////////////////////////////U1NX/GBcb/xoZHf8cGx//GBcb/xMO + Ev81OD7/k7W//5zd6/+E1/X/gNr4/3vW8P9oq7z/YnV6/8PDw/////////////////////////////// + /////////////////////////////0lHQv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAACAAAAHM1NTXQfHt8+Ht6fP9gX2L////////////////////////////e3t7/MTA0/y8t + Mv81NDj/R0ZJ/19fYf9zcXL/e3Z1/3N9gP9qlaH/b6e1/2J+hv+lpaX///////////////////////// + /////////////////////////////////////////////0tJQ/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAaTExMaplZWT///////////////////////// + ///19fb/lJSW/2VlZ/91dHX/hISE/4mJif+pqan/29vb///////U1NT/v7+///Ly8v////////////// + /////////////////////////////////////////////////////////////0xKRf8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABycW7///////// + ////////////////////////8fHx/7i4t/+hoqH/0tLS//r6+v////////////////////////////// + /////////////////////////////////////////////////////////////////////////////0xM + Rv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACJiIX//////////////////////////////////////////////////////8fHxv/Hx8b/x8fG/8fH + xv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG//// + /////////////05NSP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACLiof///////////+Uk5H/x8fG/8fHxv+Uk5H/lJOR/8fHxv///////////+vr + 6v////////////////////////////////////////////////////////////////////////////// + ////////x8fG/////////////////1BOSf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNjIn///////////////////////////////////////// + /////////////+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr + 6v/r6+r/6+vq/+vr6v/r6+r/6+vq/////////////////1BQSv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPjoz///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1JRTP8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkY7///////// + /////////////////////////////////////////////8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fH + xv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/////////////////1NS + TP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACUk5H///////////+Uk5H/x8fG/5STkf+Uk5H/x8fG/5STkf///////////+vr6v////////////// + ////////////////////////////////////////////////////////////////////////x8fG//// + /////////////1RTTv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACWlZP//////////////////////////////////////////////////////+vr + 6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr + 6v/r6+r/6+vq/////////////////1VUT/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXlpT///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1ZVUP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmJb/qnc1/6p3Nf+qdzX/qnc1/6p3 + Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3 + Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/1dWUf8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZf/9dmn//XZ + p//12af/89el//HUov/v0p7/7c+b/+vLl//oyJP/5cSP/+LAiv/eu4X/27iA/9i0fP/Vr3b/0apx/86m + bP/Komb/x5xh/8SZXP/AlFf/vZBS/7qLTf+3iEn/tYRF/7KBQP+vfz3/rXw6/6t5OP+qdzX/qnc1/1dX + Uf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACcm5n/9dmn//XZp//12af/89ek//HUov/v0p7/7s+b/+vMmP/oyJP/5cSO/+HAiv/fvIX/27eA/9iz + e//Ur3b/0apw/86ma//KoWb/x51h/8OZXP/AlFf/vY9S/7qMTf+3iEn/tIRF/7KBQf+wfj3/rXs7/6x5 + N/+qdzX/qnc1/1hXUv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACdnJr/9dmn//XZp//12af/9Nel//LVov/w0Z7/7c+c/+vMl//oyJP/5cSO/+HA + iv/fvIX/3LeA/9ize//Vr3b/0apx/86mbP/KoWb/xp1h/8SYW//AlFb/vZBS/7qMTv+3iEj/tIRF/7KB + QP+wfj3/rnw6/6t5N/+qdzX/qnc1/1hXUv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdnJr/nZya/5ybmP+amZf/mJiW/5eWlP+Uk5H/kpGP/5CO + jP+NjYn/iomH/4iHhP+FhID/goF9/39+e/98e3j/eXh1/3Z1cv9zc2//cW9s/21saP9qaWb/aGdj/2Vk + YP9jYl7/YWBc/15dWP9cXFf/W1pV/1lYVP9YV1L/WFdS/1hXUv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /////wAA//////////////+B/////////gB////////4AD//////wAAAAB/////AAAAAH//A/8AAAAAf + /8D/wAAAAB//wP/AAAAAH//A/8AAAAAP/8D/gAAAAAf/wP8AAAAAA/+A/wAAAAAD/wD+AAAAAAP/APgA + AAAAA/4A8AAAAAAD+ADAAAAAAAPwAMAAAAAAA8AAwEAAAAAPwADBwAAAAB/AQMHAAAAAH8HAwMAAAAAf + wcDAQAAAAB/AwMAAAAAAH8BA4AAAAAAfwADwAAAAAB/gAPgAAAAAH/AA/gAAAAAf+AD/wAAAAB/+AP/A + AAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf + /8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/////////8D///////////// + /////////////////////////////ygAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAASEyUqbzJwiOhCoMb/L3GK7A8iK3oAAQIXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACBg8RUjdnc8RrxNv+XdD8/1HE8/9Uyvj/SK3V/yZdcsoGERReCRQYAwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NTD/ODUw/zg1MP84NTD/ODUw/zg1 + MP84NTD/Li4r/ytCSP9fssX/huz//4zq//9Ywev/Sbfj/0+75/9SxPH/U8Ty/0Oewv8nRlH/Kywq/zg1 + MP84NTD/ODUw/zg1MP84NTD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF5dWP/9/f3///////// + ////////2NjY/3yNkv9cobL/e+P8/4fq//+N5P//meb//2/M8P9GtuP/T7rl/0665f9Ou+b/U8Px/0mr + 0/82b4f/cIaO/9HS0v//////+vr6/15dWP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWBc//39 + /f//////6urr/5Ganf9alqX/dN3x/4Xu//+I5P//j+L//5nm//+p6///oOT7/1O95/9DteP/Trrl/1C9 + 6P9Lr9j/LF51/xs6Sf81fZr/Romj/4iTmP/g4OD/YWBc/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABjYl7/8vLy/6Ooqv9dipj/aM7j/3/t//+D5f//i+L//5Tj//+f5///qer//7Ps///H8///peL3/1W9 + 5v8+s+L/Srzp/0yt1f8sXXT/DyAo/yVRZP9Bmrz/T7zn/059kP9ERkT/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAk1PTf9nho//W7nL/3nt//9/5v//hd7//4/j//+Z5v//ouj//63q//+47v//wvD//87y + ///h+v//0fD6/4nR7v9Mu+b/QrPg/zh+nP8TJi//I0te/yxlfP9PvOf/V9D//z6Nrf8JExleAAAAAAAA + AAAAAAAAAAAAAAAAAAANHiRtTJ2q/3Tq/P9+7f//geH//4jg//+S5P//nef//6fq//+x7P//ve7//8fy + ///R9P//3fb//+r5/////////f7//8fq9/90zvD/QKLN/xQ3Rv8VKjX/KFtv/0is0/9Swu//Vs///zBy + jeEBAgJBAAAAAAAAAAAAAAAAAAAAJDdyhNWA+v//fuT//4Tg//+O4///l+X//6Ho//+s6v//tu3//8Hv + ///M8v//2PX//+L3///v+///+v3///r+///1/f//8/3//9/4//+j4/r/U6C//yRZcP8vdpL/Trvn/0+8 + 5/9Rwu//SrHa/xo8SbMAAAAAAAAAAgcGBVUyLi3Lc6u8/4Lr//+H4f//kuT//5zn//+m6P//sOz//7ru + ///F8f//0PP//9z2///p+f//9fz///v+///3/f//7fv//+P3///Y9P//1PX//9L3//+28P//etHy/1S+ + 5/9KuOX/Tbnk/1C96f9PvOj/LnCJ5AAAAAkVFBSTY2Fg+rKppv+30tv/kOr//5Tm//+g5///q+r//7Tr + //+/7///yvL//9X1///g9///7vv///r+///7/v//8/v//+n6///e+P//1fX//8/1///E8f7/u/D+/5vc + 8/9mwun/h9/9/2vM8P9OueX/UcPw/1LB7v8rZX3jHh4ejJCOjf/JyMj/vrq6/2tsbdt1q7j/s/7//6/s + //+57P//xO///8/z///b9v//5vn///P7///8/v//9/7//+77///k+P//2fb//9P1///M9P//tuz6/5XX + 7f9twOD/Yrvd/0mnzP9gwOX/ieb//3rn//9ayPD/Lm+J3AkXHWqMjIzsv76+/56dn/84ODiYAAAAKUdM + TP+ayc3/0////9H6///T8///4Pf//+37///5/v///P////T8///p+f//3/f//9f1///O8///w/H+/5XW + 7v9rvNv/XLjd/3DF5f92yeX/XbTX/1W34P9v2vj/Yq28/0JTV/8BAwMtAAAAAHZ1d/eHhoj/Ly8vrQAA + AAMAAAAAeHd0/5yfoP+Lnp//1+/v//r////3////+/////n9///v/P//5Pj//933///Z9///zPT+/8X0 + /f96yef/Yr3h/5DY8P9VtNv/aMDi/3zb+v+E7P7/Y7bQ/2mIkf+6vLz/eXh1/wAAAAAAAAAANDM192Vl + aP8JCAmTAAAAAAAAAAB8e3j//v39/9jY2P+Vl5n/r7Ky//j5+f//////6vn//+D2///Z9v//0vb//6/k + 9v+Ex+L/ccXj/1Su0v9TtNr/f9b0/27G5P9pzvL/X7na/2KOl/+mqqv/9fX1//v7+v98e3j/AAAAAAAA + AAAsKy3yamls/xUUF+8BAgJhAAAAAH9+e//+/v3////////////Kysr/kpSU/7vCxP/q////2/z//8vz + //+I1PD/ccDe/5bX7P+Czuj/ar3d/0+ozf9myO7/geD3/2GYpv+UnJ7/6Ojo////////////+/v6/39+ + e/8AAAAAAAAAAA0MDrNvbnH/SklN/w4NEfwICQqsXVxZ//r6+v/9/f3////////////7+/v/sbKy/3J9 + f/+12t//vvb//1a13f93y+r/oOf5/4LW9P+A3Pv/gd30/16dr/+AjZL/39/f//////////////////// + ///7+/v/goF9/wAAAAAAAAAAAAAAJyIhIsh6eHv/UU9S/x8eI/8bGhz//v7+/////////////////8XF + xv9UU1X/FhMW/yMmK/9xj5j/k9bp/2/K7P9qyOz/aMnq/2Cqv/9zi5H/yMnK//////////////////// + //////////////v7+/+FhID/AAAAAAAAAAAAAAAAAAAAGxgYGZJjY2Psa2pt/1RTVf/8/Pz///////// + ////////YmFk/yYlKv8yMTX/Pzw//1lUV/9/ioz/dqOw/3K5zf9ri5P/t7y9//n5+f////////////// + ////////////////////////+/v7/4iHhP8AAAAAAAAAAAAAAAAAAAAAAAAAAAMDAzIpKSmEZWVl//7+ + /v/////////////////Dw8P/YWBj/3V0df+MjIz/rKur/+bm5v/f4OD/wMHB//Dw8P////////////// + ///////////////////////////////////7+/v/iomH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACJiYX/9fX1///////////////////////u7u7/2tra//////////////////////////////////// + //////////////////////////////////////////////v7+/+NjYn/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJCOjP/8/Pz//f39//7+/v/+/v7//v7+//39/f/7+/v/0NDP/9DQz//Q0M//0NDP/9DQ + z//Q0M//0NDP/9DQz//Q0M//0NDP/9DQz//Q0M//0NDP/9DQz///////+/v7/5COjP8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAkpGP///////U1NP/sbCv/8/Pzv+xsK//19bW///////o6Oj/5OTj/+jo + 6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/l5eX/0NDP///////7+/v/kpGP/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUk5H//v7+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////v7 + +/+Uk5H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJeWlP/+/v7///////////////////////// + ////////0dHQ/9HR0P/R0dD/0dHQ/9HR0P/R0dD/0dHQ/9HR0P/R0dD/0dHQ/9HR0P/R0dD/0dHQ/9HR + 0P//////+/v7/5eWlP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJiW///////U1NP/yMjI/7Oy + sf/JyMj/xMTC///////p6ej/5eXk/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np + 6f/m5ub/0dHQ///////7+/v/mJiW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZf///////7/ + ///8////+Pz///z////7//////////3////5/f//+v7///r+///6/v//+v7///r+///6/v//+v7///r+ + ///6/v//+v7///n9///4/P////////////+amZf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyb + mP+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3 + Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/5ybmP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnZya///irv//46///+Gs//zeqP/52qP/9tae//LQl//ty5D/6cSK/+S+gv/ft3z/2rFz/9aq + bP/QpGT/zJ5d/8eXVf/DkU7/v4xI/7qHQv+3gjz/tH44/7J7NP+ueTT/nZya/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACdnJr//+Ku///jr///4az//N6o//nao//21p7/8tCX/+3LkP/pxIr/5L6C/9+3 + fP/asXP/1qps/9CkZP/Mnl3/x5dV/8ORTv+/jEj/uodC/7eCPP+0fjj/sns0/655NP+dnJr/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJybmP+amZf/mJiW/5eWlP+Uk5H/kpGP/5COjP+NjYn/iomH/4iH + hP+FhID/goF9/39+e/98e3j/eXh1/3Z1cv9zc2//cW9s/21saP9qaWb/aGdj/2VkYP9jYl7/YWBc/5yb + mP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA//4D///4AP/4AAAD+AAAA/gAAAP4AAAD8AAAAfAAAADgAAAAgAAAAAAA + AAAAAAAAAAAAAQgAAAMYAAADCAAAAwAAAAMAAAADgAAAA+AAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gA + AAP4AAAD+AAAA/gAAAP4AAAD+AAAA/////8oAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMmKU9DjabLRqvS8CJQY5UGEBMhAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAf357/3x7eP95eHX/YGNi/094gP+A2uv/fuD//0i86/9TxvT/P4ik/0FQ + Vf9bW1j/Xl1Y/wAAAAAAAAAAAAAAAJ2cmv/d3t//haKp/3DI2f+P8P//oOz//7Dr/f9qxur/Qrvs/zmH + qP8jTWD/WZOp/0dOTv8AAAAAAAAAAAAAAABnc3T/a7zJ/4Pt//+U6///pOn//7ru///U9f//6Pn9/6ni + +P9MocT/ES49/z6Ss/9Pvun/ESgxYgAAAAAUEhNacsTT/472//+Z5f//rev//8Lw///c9v//8/v///v+ + ///1/v//yvT//2iqw/9EpMn/U8r7/zyOruM8OzqGS0pN/4y2wP+q9///ufD//8zy///m+f//+f7///P8 + ///i+v//xvD9/6Tg8/91yev/c9r+/2HQ9v8tbIa9S0pN/0xLS4+AgH7/l6+v/+D6+//9////+f///+37 + ///Y9v7/rOP1/3rJ5/9mw+j/cNLx/2WtxP9FUlP/AggKDktKTfoLCwx+nZya//////+/wMD/yMjI/+3/ + //++8f//k9Xs/2/E5P9oyu7/bLvV/4egqP/e39//YWBc/wAAAAArKiyhSkpN/z8+P//s7Oz/9vb2/6Ki + ov9cZWf/h8TY/37Z+v91yeT/fKCq/87R0v///////////2FgXP8AAAAAAAAABysrK29fX1////////// + //+Af4H/WldY/5OVl/+UqK3/tr2///////////////////////9hYFz/AAAAAAAAAAAAAAAAm5qY//Pz + 8//k5OT/4ODg/+Tk5P/m5ub/6Ojo/+jo6P/o6Oj/6Ojo/+bm5f//////YWBc/wAAAAAAAAAAAAAAAJ2c + mv///////////////////////////////////////////////////////////2FgXP8AAAAAAAAAAAAA + AACdnJr//////+bm5v/m5ub/8vT2/+Xp7v/o7PD/6Ozw/+js8P/o7PH/5enu//////9hYFz/AAAAAAAA + AAAAAAAAnZya/+nMmP/vzZX/6MWM/+C7f//XsHP/z6Rm/8aYWP+9jUr/tYI9/655M/+pbiL/YWBc/wAA + AAAAAAAAAAAAAJ2cmv/pzJj/782V/+jFjP/gu3//17Bz/8+kZv/GmFj/vY1K/7WCPf+ueTP/qW4i/2Fg + XP8AAAAAAAAAAAAAAACdnJr/nZya/5ybmP+amZf/mJiW/5eWlP+Uk5H/kpGP/5COjP+NjYn/iomH/4iH + hP+FhID/AAAAAP4PSbvAAQAAwAF8wMAAwAGAAMAAAACAAAAAAAAAAQAAAAEAAQABAAHAAQABwAHAAcAB + wAHAAcABwAHAAcABAAQ= +</value> + </data> +</root> \ No newline at end of file diff --git a/CASA/micasacache/c_micasacache.vcproj b/CASA/micasacache/c_micasacache.vcproj index 3b614c40..af1b9216 100644 --- a/CASA/micasacache/c_micasacache.vcproj +++ b/CASA/micasacache/c_micasacache.vcproj @@ -132,6 +132,9 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl;inc;xsd" UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> + <File + RelativePath="..\include\sscs_cache.h"> + </File> <File RelativePath="..\include\sscs_ipc.h"> </File> diff --git a/CASA/micasad/lib/Novell.CASA.Common.csproj.user b/CASA/micasad/lib/Novell.CASA.Common.csproj.user index 9d2a0ff3..7d8eef14 100644 --- a/CASA/micasad/lib/Novell.CASA.Common.csproj.user +++ b/CASA/micasad/lib/Novell.CASA.Common.csproj.user @@ -1,7 +1,7 @@ <VisualStudioProject> <CSHARP LastOpenVersion = "7.10.3077" > <Build> - <Settings ReferencePath = "D:\csharp\namedpipe2\AppModule.InterProcessComm\bin\Debug\;D:\csharp\namedpipe2\AppModule.NamedPipes\bin\Debug\;D:\casatest\extern\w32\namedpipes\;D:\casaoutside\extern\w32\namedpipes\;D:\casaAll\trunk\extern\w32\namedpipes\" > + <Settings ReferencePath = "" > <Config Name = "Debug" EnableASPDebugging = "false" diff --git a/CASA/micasadk/c_micasadk.vcproj b/CASA/micasadk/c_micasadk.vcproj index 14c4b34d..5505569f 100644 --- a/CASA/micasadk/c_micasadk.vcproj +++ b/CASA/micasadk/c_micasadk.vcproj @@ -34,7 +34,7 @@ Name="VCLinkerTool" AdditionalDependencies="micasacache.lib" LinkIncremental="2" - AdditionalLibraryDirectories="C:\source\CASA\micasacache\Debug" + AdditionalLibraryDirectories="..\micasacache\debug" ModuleDefinitionFile=".\micasa.def" GenerateDebugInformation="TRUE" ProgramDatabaseFile="$(OutDir)/c_micasadk.pdb" @@ -114,6 +114,9 @@ </Configuration> </Configurations> <References> + <ProjectReference + ReferencedProjectIdentifier="{B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}" + Name="micasacache"/> </References> <Files> <Filter diff --git a/CASA/policy/PolicyImpl.cs b/CASA/policy/PolicyImpl.cs index 11f988c5..5f9f9f6b 100644 --- a/CASA/policy/PolicyImpl.cs +++ b/CASA/policy/PolicyImpl.cs @@ -198,7 +198,19 @@ public class ICASAPol XmlNode modeNode = uiNode.SelectSingleNode(xpath); string mode = modeNode.InnerText; - UIPol uiPol = new UIPol(showInTaskBar, showSecretValue, showSecretInClearText, mode); + // Load config settings + XmlNode configNode = uiNode.SelectSingleNode("//ConfigSettings"); + XmlNodeList nodeList = configNode.ChildNodes; + XmlNode node; + System.Collections.Specialized.NameValueCollection nvc = new System.Collections.Specialized.NameValueCollection(); + for (int i=0; i<nodeList.Count; i++) + { + node = nodeList[i]; + //Console.WriteLine(node.Name + ":"+node.InnerText); + nvc.Add(node.Name, node.InnerText); + } + + UIPol uiPol = new UIPol(showInTaskBar, showSecretValue, showSecretInClearText, mode, nvc); return uiPol; } } diff --git a/CASA/policy/Test.cs b/CASA/policy/Test.cs index 7633d3cf..05e91607 100644 --- a/CASA/policy/Test.cs +++ b/CASA/policy/Test.cs @@ -38,7 +38,7 @@ class Test AggregationPol aggPol = new AggregationPol(storeList); PersistencePol persistPol = new PersistencePol("linux","myfile.xml",10); - UIPol uiPol = new UIPol(true,false,true,"auto"); + UIPol uiPol = new UIPol(true,false,true,"auto", null); ArrayList linkKeyList = new ArrayList(); KWLinkKey kwLinkKey = new KWLinkKey("wallet1","folder1","kw-secret","kw-passwd"); diff --git a/CASA/policy/UIPol.cs b/CASA/policy/UIPol.cs index c1055094..d9fe5bbe 100644 --- a/CASA/policy/UIPol.cs +++ b/CASA/policy/UIPol.cs @@ -22,101 +22,137 @@ using System; using System.Collections; +using System.Collections.Specialized; using System.Xml; using System.Xml.Serialization; namespace Novell.CASA.CASAPolicy { -public class UIPol : CASAPol -{ - bool showInTaskBar; - public bool ShowInTaskBar - { - get - { - return showInTaskBar; - } - } - bool showSecretValue; - public bool ShowSecretValue - { - get - { - return showSecretValue; - } - } - bool showSecretInClearText; - public bool ShowSecretInClearText - { - get - { - return showSecretInClearText; - } - } - string synchEngineStartMode; - public string SynchEngineStartMode - { - get - { - return synchEngineStartMode; - } - } + public class UIPol : CASAPol + { + NameValueCollection m_nvc; + public void SetConfigSetting(string sName, string sValue) + { + if (m_nvc == null) + { + m_nvc = new NameValueCollection(); + } + m_nvc.Set(sName, sValue); + } - public UIPol(bool inTrayIcon, bool inShowVals,bool inClearText,string startMode) - { - policyType = CASAPolType.UI_POL; - showInTaskBar = inTrayIcon; - showSecretValue = inShowVals; - showSecretInClearText = inClearText; - synchEngineStartMode = startMode; - } + public string GetConfigSetting(string sName) + { + if (m_nvc == null) + return null; - public override void DumpPol() - { - Console.WriteLine("\nUIPolicy"); - Console.WriteLine("showInTaskBar = " + showInTaskBar); - Console.WriteLine("showSecretValue = " + showSecretValue); - Console.WriteLine("showSecretInClearText = " + showSecretInClearText); - Console.WriteLine("synchEngineStartMode = " + synchEngineStartMode); - } + return m_nvc.Get(sName); + } + + public void WriteConfig() + { + ICASAPol.SetPolicy(this); + } - internal override void AppendToDoc(XmlDocument doc) - { - XmlElement elem; - XmlAttribute attr; - string xPath = ""; + bool showInTaskBar; + public bool ShowInTaskBar + { + get + { + return showInTaskBar; + } + } + bool showSecretValue; + public bool ShowSecretValue + { + get + { + return showSecretValue; + } + } + bool showSecretInClearText; + public bool ShowSecretInClearText + { + get + { + return showSecretInClearText; + } + } + string synchEngineStartMode; + public string SynchEngineStartMode + { + get + { + return synchEngineStartMode; + } + } + + public UIPol(bool inTrayIcon, bool inShowVals,bool inClearText,string startMode, NameValueCollection nvc) + { + policyType = CASAPolType.UI_POL; + showInTaskBar = inTrayIcon; + showSecretValue = inShowVals; + showSecretInClearText = inClearText; + synchEngineStartMode = startMode; + m_nvc = nvc; + } + + public override void DumpPol() + { + Console.WriteLine("\nUIPolicy"); + Console.WriteLine("showInTaskBar = " + showInTaskBar); + Console.WriteLine("showSecretValue = " + showSecretValue); + Console.WriteLine("showSecretInClearText = " + showSecretInClearText); + Console.WriteLine("synchEngineStartMode = " + synchEngineStartMode); + } + + internal override void AppendToDoc(XmlDocument doc) + { + XmlElement elem; + XmlAttribute attr; + string xPath = ""; - try - { - xPath = "//" + XmlConsts.CASAPolicyNode; - XmlNode rootElem = doc.SelectSingleNode(xPath); + try + { + xPath = "//" + XmlConsts.CASAPolicyNode; + XmlNode rootElem = doc.SelectSingleNode(xPath); - XmlElement uiPolElem = doc.CreateElement(XmlConsts.UIPolicyNode); + XmlElement uiPolElem = doc.CreateElement(XmlConsts.UIPolicyNode); - attr = doc.CreateAttribute(XmlConsts.ShowInTaskBarAttr); - attr.Value = showInTaskBar.ToString(); - uiPolElem.SetAttributeNode(attr); + attr = doc.CreateAttribute(XmlConsts.ShowInTaskBarAttr); + attr.Value = showInTaskBar.ToString(); + uiPolElem.SetAttributeNode(attr); - attr = doc.CreateAttribute(XmlConsts.ShowSecretValueAttr); - attr.Value = showSecretValue.ToString(); - uiPolElem.SetAttributeNode(attr); + attr = doc.CreateAttribute(XmlConsts.ShowSecretValueAttr); + attr.Value = showSecretValue.ToString(); + uiPolElem.SetAttributeNode(attr); - attr = doc.CreateAttribute(XmlConsts.ShowSecretInClearTextAttr); - attr.Value = showSecretInClearText.ToString(); - uiPolElem.SetAttributeNode(attr); + attr = doc.CreateAttribute(XmlConsts.ShowSecretInClearTextAttr); + attr.Value = showSecretInClearText.ToString(); + uiPolElem.SetAttributeNode(attr); - rootElem.AppendChild(uiPolElem); + rootElem.AppendChild(uiPolElem); - elem = doc.CreateElement(XmlConsts.SynchEngineStartModeNode); - elem.InnerText = synchEngineStartMode; + elem = doc.CreateElement(XmlConsts.SynchEngineStartModeNode); + elem.InnerText = synchEngineStartMode; + uiPolElem.AppendChild(elem); - uiPolElem.AppendChild(elem); - } - catch(Exception e) - { - //Console.WriteLine(e.ToString()); - } - } + // write out NameValueCollection + XmlElement configElem = doc.CreateElement("ConfigSettings"); + uiPolElem.AppendChild(configElem); + for (int i=0; i<m_nvc.Count; i++) + { + elem = doc.CreateElement(m_nvc.GetKey(i)); + elem.InnerText = m_nvc.GetValues(i)[0]; + configElem.AppendChild(elem); + } + } + catch(Exception e) + { + //Console.WriteLine(e.ToString()); + } + } + + } } -} + diff --git a/CASA/sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj.user b/CASA/sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj.user index e09d7632..e4dc489a 100644 --- a/CASA/sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj.user +++ b/CASA/sharp/NSSCSWrapper/Novell.CASA.miCASAWrapper.csproj.user @@ -1,7 +1,7 @@ <VisualStudioProject> <CSHARP LastOpenVersion = "7.10.3077" > <Build> - <Settings ReferencePath = "D:\casa\c_micasad\lib\bin\Debug\;D:\casa2\c_micasad\lib\bin\Debug\" > + <Settings ReferencePath = "" > <Config Name = "Debug" EnableASPDebugging = "false" diff --git a/CASA/test/c_sample/CSample.ncb b/CASA/test/c_sample/CSample.ncb index 6554d9e9..84b58287 100644 Binary files a/CASA/test/c_sample/CSample.ncb and b/CASA/test/c_sample/CSample.ncb differ diff --git a/CASA/test/c_sample/CSample.sln b/CASA/test/c_sample/CSample.sln index 5db46a1c..1c036409 100644 --- a/CASA/test/c_sample/CSample.sln +++ b/CASA/test/c_sample/CSample.sln @@ -3,11 +3,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cSample", "CSample.vcproj", ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "c_micasacache", "..\..\c_micasacache\c_micasacache.vcproj", "{B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "micasacache", "..\..\micasacache\c_micasacache.vcproj", "{B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "c_micasadk", "..\..\c_micasadk\c_micasadk.vcproj", "{99988A22-4C58-4BF7-A2DB-57761E76FB26}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "micasa", "..\..\micasadk\c_micasadk.vcproj", "{99988A22-4C58-4BF7-A2DB-57761E76FB26}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject diff --git a/CASA/test/c_sample/CSample.suo b/CASA/test/c_sample/CSample.suo index 5f57adb1..e14a56a0 100644 Binary files a/CASA/test/c_sample/CSample.suo and b/CASA/test/c_sample/CSample.suo differ diff --git a/CASA/test/c_sample/CSample.vcproj b/CASA/test/c_sample/CSample.vcproj index 5251244d..6f4b1ef1 100644 --- a/CASA/test/c_sample/CSample.vcproj +++ b/CASA/test/c_sample/CSample.vcproj @@ -41,7 +41,7 @@ AdditionalDependencies="odbc32.lib odbccp32.lib micasa.lib" LinkIncremental="1" SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories="D:\casaClean2\c_micasadk\Debug" + AdditionalLibraryDirectories="..\..\micasadk\Debug" GenerateDebugInformation="TRUE" SubSystem="1" TargetMachine="1"/> @@ -131,6 +131,9 @@ </Configuration> </Configurations> <References> + <ProjectReference + ReferencedProjectIdentifier="{99988A22-4C58-4BF7-A2DB-57761E76FB26}" + Name="micasa"/> </References> <Files> <File diff --git a/CASA/test/c_sample/cSample.c b/CASA/test/c_sample/cSample.c index 256e4cc1..660a2c15 100644 --- a/CASA/test/c_sample/cSample.c +++ b/CASA/test/c_sample/cSample.c @@ -53,6 +53,77 @@ void Pause() +void RemoveKey() +{ + int rcode = 0; + char inputID[20]; + char inputKey[20]; + char inputValue[128] = {0}; + uint32_t valueLen = 128; + uint32_t bytesRequired = 0; + + SSCS_SECRETSTORE_T store = {0}; + SSCS_SECRET_ID_T appSecretId = {0}; + SSCS_SECRET_ID_T sharedSecretId = {0}; + void *context; + SSCS_KEYCHAIN_ID_T kc = {0}; + + SSCS_EXT_T ext = {0}; + + printf("Enter secretID: "); + gets(inputID); + + printf("Enter Key to remove: "); + gets(inputKey); + + if ((sscs_Utf8Strlen(inputID) > 0) && + (sscs_Utf8Strlen(inputKey) > 0)) + + { + appSecretId.len = sscs_Utf8Strlen(inputID) + 1; + sscs_Utf8Strcpy(appSecretId.id, inputID); + + printf("SAMPLE: Calling miCASAReadKey\r\n"); + + // open secretStore + sscs_Utf8Strcpy(store.ssName, SSCS_DEFAULT_SECRETSTORE_ID); + store.version = 1; + context = miCASAOpenSecretStoreCache(&store, 0, NULL); + + if (context == NULL) + { + return; // NSSCS_E_SYSTEM_FAILURE; + } + + sscs_Utf8Strcpy(kc.keychainID, SSCS_SESSION_KEY_CHAIN_ID); + kc.len = SSCS_S_KC_ID_CHARS; + + rcode = miCASARemoveKey(context, + 0, + &kc, + &appSecretId, + inputKey, + strlen(inputKey)+1, + NULL, + &ext); + + miCASACloseSecretStoreCache(context, 0, NULL); + + if (rcode) + { + printf("miCASARemoveKey returned %d\r\n", rcode); + Pause(); + } + else + { + //set null + //memcpy(inputValue[valueLen + 1], + printf("Remove Key Successful\r\n"); + } + } +} + + void ReadKey() { int rcode = 0; @@ -542,7 +613,8 @@ void displayMenu() printf("* 4. Run automated test *\r\n"); printf("* 5. WriteKey *\r\n"); printf("* 6. ReadKey *\r\n"); - printf("* 7. Quit *\r\n"); + printf("* 7. RemoveKey *\r\n"); + printf("* 8. Quit *\r\n"); printf("**************************\r\n"); @@ -552,7 +624,7 @@ void displayMenu() // get return getchar(); - if (c == '7') + if (c == '8') return; else if (c == '1') AddSecret(); @@ -566,6 +638,8 @@ void displayMenu() WriteKey(); else if (c == '6') ReadKey(); + else if (c == '7') + RemoveKey(); } diff --git a/CASA/test/c_sharp_sample/cSharpSample.sln b/CASA/test/c_sharp_sample/cSharpSample.sln index 10c3a49a..e89e7361 100644 --- a/CASA/test/c_sharp_sample/cSharpSample.sln +++ b/CASA/test/c_sharp_sample/cSharpSample.sln @@ -3,7 +3,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cSharpSample", "cSharpSampl ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Casa", "..\..\c_gacfile\Novell.Casa\Novell.Casa.csproj", "{FEB3F1E3-62DF-43CA-8B1C-144A4680E05A}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "micasacache", "..\..\micasacache\c_micasacache.vcproj", "{B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "micasa", "..\..\micasadk\c_micasadk.vcproj", "{99988A22-4C58-4BF7-A2DB-57761E76FB26}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject @@ -17,10 +21,14 @@ Global {3FB57160-F475-4650-A45C-19D020661A2D}.Debug.Build.0 = Debug|.NET {3FB57160-F475-4650-A45C-19D020661A2D}.Release.ActiveCfg = Release|.NET {3FB57160-F475-4650-A45C-19D020661A2D}.Release.Build.0 = Release|.NET - {FEB3F1E3-62DF-43CA-8B1C-144A4680E05A}.Debug.ActiveCfg = Debug|.NET - {FEB3F1E3-62DF-43CA-8B1C-144A4680E05A}.Debug.Build.0 = Debug|.NET - {FEB3F1E3-62DF-43CA-8B1C-144A4680E05A}.Release.ActiveCfg = Release|.NET - {FEB3F1E3-62DF-43CA-8B1C-144A4680E05A}.Release.Build.0 = Release|.NET + {B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}.Debug.ActiveCfg = Debug|Win32 + {B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}.Debug.Build.0 = Debug|Win32 + {B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}.Release.ActiveCfg = Release|Win32 + {B5DB4B53-AB02-4EDC-9C02-BF7DE68F91A3}.Release.Build.0 = Release|Win32 + {99988A22-4C58-4BF7-A2DB-57761E76FB26}.Debug.ActiveCfg = Debug|Win32 + {99988A22-4C58-4BF7-A2DB-57761E76FB26}.Debug.Build.0 = Debug|Win32 + {99988A22-4C58-4BF7-A2DB-57761E76FB26}.Release.ActiveCfg = Release|Win32 + {99988A22-4C58-4BF7-A2DB-57761E76FB26}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection diff --git a/CASA/test/c_sharp_sample/cSharpSample.suo b/CASA/test/c_sharp_sample/cSharpSample.suo index a2d8a151..6f4c1a20 100644 Binary files a/CASA/test/c_sharp_sample/cSharpSample.suo and b/CASA/test/c_sharp_sample/cSharpSample.suo differ