Index: trunk/sources/HeuristicLab.Hive.Server.Console/AddJobForm.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/AddJobForm.Designer.cs	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/AddJobForm.Designer.cs	(revision 1483)
@@ -83,4 +83,5 @@
       // btnClose
       // 
+      this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
       this.btnClose.Location = new System.Drawing.Point(254, 65);
       this.btnClose.Name = "btnClose";
@@ -118,6 +119,8 @@
       // AddJobForm
       // 
+      this.AcceptButton = this.btnAdd;
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.CancelButton = this.btnClose;
       this.ClientSize = new System.Drawing.Size(344, 100);
       this.Controls.Add(this.lblError);
Index: trunk/sources/HeuristicLab.Hive.Server.Console/Changes.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/Changes.cs	(revision 1483)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/Changes.cs	(revision 1483)
@@ -0,0 +1,19 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public enum Change { Create, Update, Delete };
+  public enum Type { Client, ClientGroup, Job };
+  public class Changes {
+
+    public Type Types { get; set; }
+
+    public Guid ID { get; set; }
+
+    public Change ChangeType { get; set; }
+
+    public int Position { get; set; }
+  }
+}
Index: trunk/sources/HeuristicLab.Hive.Server.Console/HeuristicLab.Hive.Server.Console.csproj
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/HeuristicLab.Hive.Server.Console.csproj	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/HeuristicLab.Hive.Server.Console.csproj	(revision 1483)
@@ -95,4 +95,5 @@
       <DependentUpon>AddJobForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="Changes.cs" />
     <Compile Include="HiveServerConsole.cs">
       <SubType>Form</SubType>
Index: trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerConsole.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerConsole.Designer.cs	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerConsole.Designer.cs	(revision 1483)
@@ -45,8 +45,5 @@
     /// </summary>
     private void InitializeComponent() {
-      this.msServerConsole = new System.Windows.Forms.MenuStrip();
-      this.tsmiConsole = new System.Windows.Forms.ToolStripMenuItem();
-      this.tsmiExit = new System.Windows.Forms.ToolStripMenuItem();
-      this.gbManager = new System.Windows.Forms.GroupBox();
+      this.gbConfiguration = new System.Windows.Forms.GroupBox();
       this.lblPort = new System.Windows.Forms.Label();
       this.lblIp = new System.Windows.Forms.Label();
@@ -54,5 +51,5 @@
       this.tbIp = new System.Windows.Forms.TextBox();
       this.btnLogin = new System.Windows.Forms.Button();
-      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.gpUser = new System.Windows.Forms.GroupBox();
       this.tbUserName = new System.Windows.Forms.TextBox();
       this.lblPwd = new System.Windows.Forms.Label();
@@ -60,46 +57,20 @@
       this.tbPwd = new System.Windows.Forms.TextBox();
       this.lblError = new System.Windows.Forms.Label();
-      this.msServerConsole.SuspendLayout();
-      this.gbManager.SuspendLayout();
-      this.groupBox1.SuspendLayout();
+      this.gbConfiguration.SuspendLayout();
+      this.gpUser.SuspendLayout();
       this.SuspendLayout();
       // 
-      // msServerConsole
-      // 
-      this.msServerConsole.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.tsmiConsole});
-      this.msServerConsole.Location = new System.Drawing.Point(0, 0);
-      this.msServerConsole.Name = "msServerConsole";
-      this.msServerConsole.Size = new System.Drawing.Size(311, 24);
-      this.msServerConsole.TabIndex = 0;
-      this.msServerConsole.Text = "menuStrip1";
-      // 
-      // tsmiConsole
-      // 
-      this.tsmiConsole.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.tsmiExit});
-      this.tsmiConsole.Name = "tsmiConsole";
-      this.tsmiConsole.Size = new System.Drawing.Size(87, 20);
-      this.tsmiConsole.Text = "Serverconsole";
-      // 
-      // tsmiExit
-      // 
-      this.tsmiExit.Name = "tsmiExit";
-      this.tsmiExit.Size = new System.Drawing.Size(103, 22);
-      this.tsmiExit.Text = "Exit";
-      this.tsmiExit.Click += new System.EventHandler(this.tsmiExit_Click);
-      // 
-      // gbManager
-      // 
-      this.gbManager.Controls.Add(this.lblPort);
-      this.gbManager.Controls.Add(this.lblIp);
-      this.gbManager.Controls.Add(this.tbPort);
-      this.gbManager.Controls.Add(this.tbIp);
-      this.gbManager.Location = new System.Drawing.Point(16, 124);
-      this.gbManager.Name = "gbManager";
-      this.gbManager.Size = new System.Drawing.Size(283, 82);
-      this.gbManager.TabIndex = 4;
-      this.gbManager.TabStop = false;
-      this.gbManager.Text = "Manager";
+      // gbConfiguration
+      // 
+      this.gbConfiguration.Controls.Add(this.lblPort);
+      this.gbConfiguration.Controls.Add(this.lblIp);
+      this.gbConfiguration.Controls.Add(this.tbPort);
+      this.gbConfiguration.Controls.Add(this.tbIp);
+      this.gbConfiguration.Location = new System.Drawing.Point(12, 100);
+      this.gbConfiguration.Name = "gbConfiguration";
+      this.gbConfiguration.Size = new System.Drawing.Size(283, 82);
+      this.gbConfiguration.TabIndex = 4;
+      this.gbConfiguration.TabStop = false;
+      this.gbConfiguration.Text = "Configuration";
       // 
       // lblPort
@@ -139,5 +110,5 @@
       // btnLogin
       // 
-      this.btnLogin.Location = new System.Drawing.Point(183, 212);
+      this.btnLogin.Location = new System.Drawing.Point(179, 188);
       this.btnLogin.Name = "btnLogin";
       this.btnLogin.Size = new System.Drawing.Size(116, 23);
@@ -148,16 +119,16 @@
       this.btnLogin.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
       // 
-      // groupBox1
-      // 
-      this.groupBox1.Controls.Add(this.tbUserName);
-      this.groupBox1.Controls.Add(this.lblPwd);
-      this.groupBox1.Controls.Add(this.lblUsername);
-      this.groupBox1.Controls.Add(this.tbPwd);
-      this.groupBox1.Location = new System.Drawing.Point(16, 36);
-      this.groupBox1.Name = "groupBox1";
-      this.groupBox1.Size = new System.Drawing.Size(283, 82);
-      this.groupBox1.TabIndex = 1;
-      this.groupBox1.TabStop = false;
-      this.groupBox1.Text = "Manager";
+      // gpUser
+      // 
+      this.gpUser.Controls.Add(this.tbUserName);
+      this.gpUser.Controls.Add(this.lblPwd);
+      this.gpUser.Controls.Add(this.lblUsername);
+      this.gpUser.Controls.Add(this.tbPwd);
+      this.gpUser.Location = new System.Drawing.Point(12, 12);
+      this.gpUser.Name = "gpUser";
+      this.gpUser.Size = new System.Drawing.Size(283, 82);
+      this.gpUser.TabIndex = 1;
+      this.gpUser.TabStop = false;
+      this.gpUser.Text = "User";
       // 
       // tbUserName
@@ -207,22 +178,19 @@
       // HiveServerConsole
       // 
+      this.AcceptButton = this.btnLogin;
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(311, 263);
+      this.ClientSize = new System.Drawing.Size(311, 225);
       this.Controls.Add(this.lblError);
-      this.Controls.Add(this.groupBox1);
+      this.Controls.Add(this.gpUser);
       this.Controls.Add(this.btnLogin);
-      this.Controls.Add(this.gbManager);
-      this.Controls.Add(this.msServerConsole);
-      this.MainMenuStrip = this.msServerConsole;
+      this.Controls.Add(this.gbConfiguration);
       this.Name = "HiveServerConsole";
       this.Text = "Server Console";
       this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
-      this.msServerConsole.ResumeLayout(false);
-      this.msServerConsole.PerformLayout();
-      this.gbManager.ResumeLayout(false);
-      this.gbManager.PerformLayout();
-      this.groupBox1.ResumeLayout(false);
-      this.groupBox1.PerformLayout();
+      this.gbConfiguration.ResumeLayout(false);
+      this.gbConfiguration.PerformLayout();
+      this.gpUser.ResumeLayout(false);
+      this.gpUser.PerformLayout();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -232,8 +200,5 @@
     #endregion
 
-    private System.Windows.Forms.MenuStrip msServerConsole;
-    private System.Windows.Forms.ToolStripMenuItem tsmiConsole;
-    private System.Windows.Forms.ToolStripMenuItem tsmiExit;
-    private System.Windows.Forms.GroupBox gbManager;
+    private System.Windows.Forms.GroupBox gbConfiguration;
     private System.Windows.Forms.Label lblPort;
     private System.Windows.Forms.Label lblIp;
@@ -241,5 +206,5 @@
     private System.Windows.Forms.TextBox tbIp;
     private System.Windows.Forms.Button btnLogin;
-    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.GroupBox gpUser;
     private System.Windows.Forms.TextBox tbUserName;
     private System.Windows.Forms.Label lblPwd;
Index: trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerConsole.resx
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerConsole.resx	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerConsole.resx	(revision 1483)
@@ -118,6 +118,3 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="msServerConsole.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
 </root>
Index: trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.Designer.cs	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.Designer.cs	(revision 1483)
@@ -31,22 +31,6 @@
       this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.jobToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.userToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.userToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
-      this.groupToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
-      this.tcManagementConsole = new System.Windows.Forms.TabControl();
-      this.tpClientControl = new System.Windows.Forms.TabPage();
-      this.scClientControl = new System.Windows.Forms.SplitContainer();
-      this.tvClientControl = new System.Windows.Forms.TreeView();
-      this.lvClientControl = new System.Windows.Forms.ListView();
       this.ilClientControl = new System.Windows.Forms.ImageList(this.components);
-      this.tpJobControl = new System.Windows.Forms.TabPage();
-      this.scJobControl = new System.Windows.Forms.SplitContainer();
-      this.tvJobControl = new System.Windows.Forms.TreeView();
-      this.lvJobControl = new System.Windows.Forms.ListView();
       this.ilJobControl = new System.Windows.Forms.ImageList(this.components);
-      this.tpUserControl = new System.Windows.Forms.TabPage();
-      this.scUserControl = new System.Windows.Forms.SplitContainer();
-      this.tvUserControl = new System.Windows.Forms.TreeView();
-      this.lvUserControl = new System.Windows.Forms.ListView();
       this.ilUserControl = new System.Windows.Forms.ImageList(this.components);
       this.plClientDetails = new System.Windows.Forms.Panel();
@@ -85,18 +69,14 @@
       this.fileSystemWatcher1 = new System.IO.FileSystemWatcher();
       this.updaterWoker = new System.ComponentModel.BackgroundWorker();
+      this.tpJobControl = new System.Windows.Forms.TabPage();
+      this.scJobControl = new System.Windows.Forms.SplitContainer();
+      this.tvJobControl = new System.Windows.Forms.TreeView();
+      this.lvJobControl = new System.Windows.Forms.ListView();
+      this.tpClientControl = new System.Windows.Forms.TabPage();
+      this.scClientControl = new System.Windows.Forms.SplitContainer();
+      this.tvClientControl = new System.Windows.Forms.TreeView();
+      this.lvClientControl = new System.Windows.Forms.ListView();
+      this.tcManagementConsole = new System.Windows.Forms.TabControl();
       this.menuStrip1.SuspendLayout();
-      this.tcManagementConsole.SuspendLayout();
-      this.tpClientControl.SuspendLayout();
-      this.scClientControl.Panel1.SuspendLayout();
-      this.scClientControl.Panel2.SuspendLayout();
-      this.scClientControl.SuspendLayout();
-      this.tpJobControl.SuspendLayout();
-      this.scJobControl.Panel1.SuspendLayout();
-      this.scJobControl.Panel2.SuspendLayout();
-      this.scJobControl.SuspendLayout();
-      this.tpUserControl.SuspendLayout();
-      this.scUserControl.Panel1.SuspendLayout();
-      this.scUserControl.Panel2.SuspendLayout();
-      this.scUserControl.SuspendLayout();
       this.plClientDetails.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.pbClientControl)).BeginInit();
@@ -106,4 +86,13 @@
       ((System.ComponentModel.ISupportInitialize)(this.pbJobControl)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).BeginInit();
+      this.tpJobControl.SuspendLayout();
+      this.scJobControl.Panel1.SuspendLayout();
+      this.scJobControl.Panel2.SuspendLayout();
+      this.scJobControl.SuspendLayout();
+      this.tpClientControl.SuspendLayout();
+      this.scClientControl.Panel1.SuspendLayout();
+      this.scClientControl.Panel2.SuspendLayout();
+      this.scClientControl.SuspendLayout();
+      this.tcManagementConsole.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -137,6 +126,5 @@
       // 
       this.addToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.jobToolStripMenuItem,
-            this.userToolStripMenuItem});
+            this.jobToolStripMenuItem});
       this.addToolStripMenuItem.Name = "addToolStripMenuItem";
       this.addToolStripMenuItem.Size = new System.Drawing.Size(38, 20);
@@ -146,92 +134,7 @@
       // 
       this.jobToolStripMenuItem.Name = "jobToolStripMenuItem";
-      this.jobToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
+      this.jobToolStripMenuItem.Size = new System.Drawing.Size(102, 22);
       this.jobToolStripMenuItem.Text = "Job";
       this.jobToolStripMenuItem.Click += new System.EventHandler(this.AddJob_Click);
-      // 
-      // userToolStripMenuItem
-      // 
-      this.userToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.userToolStripMenuItem1,
-            this.groupToolStripMenuItem2});
-      this.userToolStripMenuItem.Name = "userToolStripMenuItem";
-      this.userToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
-      this.userToolStripMenuItem.Text = "User";
-      // 
-      // userToolStripMenuItem1
-      // 
-      this.userToolStripMenuItem1.Name = "userToolStripMenuItem1";
-      this.userToolStripMenuItem1.Size = new System.Drawing.Size(114, 22);
-      this.userToolStripMenuItem1.Text = "User";
-      // 
-      // groupToolStripMenuItem2
-      // 
-      this.groupToolStripMenuItem2.Name = "groupToolStripMenuItem2";
-      this.groupToolStripMenuItem2.Size = new System.Drawing.Size(114, 22);
-      this.groupToolStripMenuItem2.Text = "Group";
-      // 
-      // tcManagementConsole
-      // 
-      this.tcManagementConsole.Controls.Add(this.tpClientControl);
-      this.tcManagementConsole.Controls.Add(this.tpJobControl);
-      this.tcManagementConsole.Controls.Add(this.tpUserControl);
-      this.tcManagementConsole.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tcManagementConsole.Location = new System.Drawing.Point(0, 24);
-      this.tcManagementConsole.Name = "tcManagementConsole";
-      this.tcManagementConsole.SelectedIndex = 0;
-      this.tcManagementConsole.Size = new System.Drawing.Size(651, 378);
-      this.tcManagementConsole.TabIndex = 1;
-      // 
-      // tpClientControl
-      // 
-      this.tpClientControl.AllowDrop = true;
-      this.tpClientControl.Controls.Add(this.scClientControl);
-      this.tpClientControl.Location = new System.Drawing.Point(4, 22);
-      this.tpClientControl.Name = "tpClientControl";
-      this.tpClientControl.Padding = new System.Windows.Forms.Padding(3);
-      this.tpClientControl.Size = new System.Drawing.Size(643, 352);
-      this.tpClientControl.TabIndex = 0;
-      this.tpClientControl.Text = "Client Control";
-      this.tpClientControl.UseVisualStyleBackColor = true;
-      // 
-      // scClientControl
-      // 
-      this.scClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scClientControl.Location = new System.Drawing.Point(3, 3);
-      this.scClientControl.Name = "scClientControl";
-      // 
-      // scClientControl.Panel1
-      // 
-      this.scClientControl.Panel1.Controls.Add(this.tvClientControl);
-      // 
-      // scClientControl.Panel2
-      // 
-      this.scClientControl.Panel2.Controls.Add(this.lvClientControl);
-      this.scClientControl.Size = new System.Drawing.Size(637, 346);
-      this.scClientControl.SplitterDistance = 139;
-      this.scClientControl.TabIndex = 0;
-      // 
-      // tvClientControl
-      // 
-      this.tvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tvClientControl.Location = new System.Drawing.Point(0, 0);
-      this.tvClientControl.Name = "tvClientControl";
-      this.tvClientControl.Size = new System.Drawing.Size(139, 346);
-      this.tvClientControl.TabIndex = 0;
-      this.tvClientControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVClientClicked);
-      // 
-      // lvClientControl
-      // 
-      this.lvClientControl.AllowDrop = true;
-      this.lvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.lvClientControl.ImeMode = System.Windows.Forms.ImeMode.Off;
-      this.lvClientControl.LargeImageList = this.ilClientControl;
-      this.lvClientControl.Location = new System.Drawing.Point(0, 0);
-      this.lvClientControl.MultiSelect = false;
-      this.lvClientControl.Name = "lvClientControl";
-      this.lvClientControl.Size = new System.Drawing.Size(494, 346);
-      this.lvClientControl.TabIndex = 0;
-      this.lvClientControl.UseCompatibleStateImageBehavior = false;
-      this.lvClientControl.Click += new System.EventHandler(this.OnLVClientClicked);
       // 
       // ilClientControl
@@ -242,55 +145,5 @@
       this.ilClientControl.Images.SetKeyName(1, "monitor-orange.png");
       this.ilClientControl.Images.SetKeyName(2, "monitor-red.png");
-      // 
-      // tpJobControl
-      // 
-      this.tpJobControl.Controls.Add(this.scJobControl);
-      this.tpJobControl.Location = new System.Drawing.Point(4, 22);
-      this.tpJobControl.Name = "tpJobControl";
-      this.tpJobControl.Padding = new System.Windows.Forms.Padding(3);
-      this.tpJobControl.Size = new System.Drawing.Size(643, 352);
-      this.tpJobControl.TabIndex = 1;
-      this.tpJobControl.Text = "Job Control";
-      this.tpJobControl.UseVisualStyleBackColor = true;
-      // 
-      // scJobControl
-      // 
-      this.scJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scJobControl.Location = new System.Drawing.Point(3, 3);
-      this.scJobControl.Name = "scJobControl";
-      // 
-      // scJobControl.Panel1
-      // 
-      this.scJobControl.Panel1.Controls.Add(this.tvJobControl);
-      // 
-      // scJobControl.Panel2
-      // 
-      this.scJobControl.Panel2.Controls.Add(this.lvJobControl);
-      this.scJobControl.Size = new System.Drawing.Size(637, 346);
-      this.scJobControl.SplitterDistance = 139;
-      this.scJobControl.TabIndex = 1;
-      // 
-      // tvJobControl
-      // 
-      this.tvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tvJobControl.Location = new System.Drawing.Point(0, 0);
-      this.tvJobControl.Name = "tvJobControl";
-      this.tvJobControl.Size = new System.Drawing.Size(139, 346);
-      this.tvJobControl.TabIndex = 2;
-      this.tvJobControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVJobControlClicked);
-      // 
-      // lvJobControl
-      // 
-      this.lvJobControl.AllowDrop = true;
-      this.lvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.lvJobControl.LargeImageList = this.ilJobControl;
-      this.lvJobControl.Location = new System.Drawing.Point(0, 0);
-      this.lvJobControl.MultiSelect = false;
-      this.lvJobControl.Name = "lvJobControl";
-      this.lvJobControl.Size = new System.Drawing.Size(494, 346);
-      this.lvJobControl.TabIndex = 0;
-      this.lvJobControl.UseCompatibleStateImageBehavior = false;
-      this.lvJobControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvJobControl_MouseMove);
-      this.lvJobControl.Click += new System.EventHandler(this.OnLVJobControlClicked);
+      this.ilClientControl.Images.SetKeyName(3, "monitor-gray.png");
       // 
       // ilJobControl
@@ -299,51 +152,4 @@
       this.ilJobControl.TransparentColor = System.Drawing.Color.Transparent;
       this.ilJobControl.Images.SetKeyName(0, "PlayHS.png");
-      // 
-      // tpUserControl
-      // 
-      this.tpUserControl.Controls.Add(this.scUserControl);
-      this.tpUserControl.Location = new System.Drawing.Point(4, 22);
-      this.tpUserControl.Name = "tpUserControl";
-      this.tpUserControl.Padding = new System.Windows.Forms.Padding(3);
-      this.tpUserControl.Size = new System.Drawing.Size(643, 352);
-      this.tpUserControl.TabIndex = 2;
-      this.tpUserControl.Text = "User Control";
-      this.tpUserControl.UseVisualStyleBackColor = true;
-      // 
-      // scUserControl
-      // 
-      this.scUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scUserControl.Location = new System.Drawing.Point(3, 3);
-      this.scUserControl.Name = "scUserControl";
-      // 
-      // scUserControl.Panel1
-      // 
-      this.scUserControl.Panel1.Controls.Add(this.tvUserControl);
-      // 
-      // scUserControl.Panel2
-      // 
-      this.scUserControl.Panel2.Controls.Add(this.lvUserControl);
-      this.scUserControl.Size = new System.Drawing.Size(637, 346);
-      this.scUserControl.SplitterDistance = 139;
-      this.scUserControl.TabIndex = 1;
-      // 
-      // tvUserControl
-      // 
-      this.tvUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tvUserControl.Location = new System.Drawing.Point(0, 0);
-      this.tvUserControl.Name = "tvUserControl";
-      this.tvUserControl.Size = new System.Drawing.Size(139, 346);
-      this.tvUserControl.TabIndex = 1;
-      // 
-      // lvUserControl
-      // 
-      this.lvUserControl.AllowDrop = true;
-      this.lvUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.lvUserControl.LargeImageList = this.ilUserControl;
-      this.lvUserControl.Location = new System.Drawing.Point(0, 0);
-      this.lvUserControl.Name = "lvUserControl";
-      this.lvUserControl.Size = new System.Drawing.Size(494, 346);
-      this.lvUserControl.TabIndex = 1;
-      this.lvUserControl.UseCompatibleStateImageBehavior = false;
       // 
       // ilUserControl
@@ -461,5 +267,4 @@
       this.btnUserControlClose.Text = "Close";
       this.btnUserControlClose.UseVisualStyleBackColor = true;
-      this.btnUserControlClose.Click += new System.EventHandler(this.btnUserControlClose_Click);
       // 
       // pbUserControl
@@ -665,4 +470,119 @@
       // 
       this.updaterWoker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.updaterWoker_DoWork);
+      this.updaterWoker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.updaterWoker_RunWorkerCompleted);
+      // 
+      // tpJobControl
+      // 
+      this.tpJobControl.Controls.Add(this.scJobControl);
+      this.tpJobControl.Location = new System.Drawing.Point(4, 22);
+      this.tpJobControl.Name = "tpJobControl";
+      this.tpJobControl.Padding = new System.Windows.Forms.Padding(3);
+      this.tpJobControl.Size = new System.Drawing.Size(643, 352);
+      this.tpJobControl.TabIndex = 1;
+      this.tpJobControl.Text = "Job Control";
+      this.tpJobControl.UseVisualStyleBackColor = true;
+      // 
+      // scJobControl
+      // 
+      this.scJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scJobControl.Location = new System.Drawing.Point(3, 3);
+      this.scJobControl.Name = "scJobControl";
+      // 
+      // scJobControl.Panel1
+      // 
+      this.scJobControl.Panel1.Controls.Add(this.tvJobControl);
+      // 
+      // scJobControl.Panel2
+      // 
+      this.scJobControl.Panel2.Controls.Add(this.lvJobControl);
+      this.scJobControl.Size = new System.Drawing.Size(637, 346);
+      this.scJobControl.SplitterDistance = 139;
+      this.scJobControl.TabIndex = 1;
+      // 
+      // tvJobControl
+      // 
+      this.tvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tvJobControl.Location = new System.Drawing.Point(0, 0);
+      this.tvJobControl.Name = "tvJobControl";
+      this.tvJobControl.Size = new System.Drawing.Size(139, 346);
+      this.tvJobControl.TabIndex = 2;
+      this.tvJobControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVJobControlClicked);
+      // 
+      // lvJobControl
+      // 
+      this.lvJobControl.AllowDrop = true;
+      this.lvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lvJobControl.LargeImageList = this.ilJobControl;
+      this.lvJobControl.Location = new System.Drawing.Point(0, 0);
+      this.lvJobControl.MultiSelect = false;
+      this.lvJobControl.Name = "lvJobControl";
+      this.lvJobControl.Size = new System.Drawing.Size(494, 346);
+      this.lvJobControl.TabIndex = 0;
+      this.lvJobControl.UseCompatibleStateImageBehavior = false;
+      this.lvJobControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvJobControl_MouseMove);
+      this.lvJobControl.Click += new System.EventHandler(this.OnLVJobControlClicked);
+      // 
+      // tpClientControl
+      // 
+      this.tpClientControl.AllowDrop = true;
+      this.tpClientControl.Controls.Add(this.scClientControl);
+      this.tpClientControl.Location = new System.Drawing.Point(4, 22);
+      this.tpClientControl.Name = "tpClientControl";
+      this.tpClientControl.Padding = new System.Windows.Forms.Padding(3);
+      this.tpClientControl.Size = new System.Drawing.Size(643, 352);
+      this.tpClientControl.TabIndex = 0;
+      this.tpClientControl.Text = "Client Control";
+      this.tpClientControl.UseVisualStyleBackColor = true;
+      // 
+      // scClientControl
+      // 
+      this.scClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scClientControl.Location = new System.Drawing.Point(3, 3);
+      this.scClientControl.Name = "scClientControl";
+      // 
+      // scClientControl.Panel1
+      // 
+      this.scClientControl.Panel1.Controls.Add(this.tvClientControl);
+      // 
+      // scClientControl.Panel2
+      // 
+      this.scClientControl.Panel2.Controls.Add(this.lvClientControl);
+      this.scClientControl.Size = new System.Drawing.Size(637, 346);
+      this.scClientControl.SplitterDistance = 139;
+      this.scClientControl.TabIndex = 0;
+      // 
+      // tvClientControl
+      // 
+      this.tvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tvClientControl.Location = new System.Drawing.Point(0, 0);
+      this.tvClientControl.Name = "tvClientControl";
+      this.tvClientControl.Size = new System.Drawing.Size(139, 346);
+      this.tvClientControl.TabIndex = 0;
+      this.tvClientControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVClientClicked);
+      // 
+      // lvClientControl
+      // 
+      this.lvClientControl.AllowDrop = true;
+      this.lvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lvClientControl.ImeMode = System.Windows.Forms.ImeMode.Off;
+      this.lvClientControl.LargeImageList = this.ilClientControl;
+      this.lvClientControl.Location = new System.Drawing.Point(0, 0);
+      this.lvClientControl.MultiSelect = false;
+      this.lvClientControl.Name = "lvClientControl";
+      this.lvClientControl.Size = new System.Drawing.Size(494, 346);
+      this.lvClientControl.TabIndex = 0;
+      this.lvClientControl.UseCompatibleStateImageBehavior = false;
+      this.lvClientControl.Click += new System.EventHandler(this.OnLVClientClicked);
+      // 
+      // tcManagementConsole
+      // 
+      this.tcManagementConsole.Controls.Add(this.tpClientControl);
+      this.tcManagementConsole.Controls.Add(this.tpJobControl);
+      this.tcManagementConsole.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tcManagementConsole.Location = new System.Drawing.Point(0, 24);
+      this.tcManagementConsole.Name = "tcManagementConsole";
+      this.tcManagementConsole.SelectedIndex = 0;
+      this.tcManagementConsole.Size = new System.Drawing.Size(651, 378);
+      this.tcManagementConsole.TabIndex = 1;
       // 
       // HiveServerManagementConsole
@@ -679,17 +599,4 @@
       this.menuStrip1.ResumeLayout(false);
       this.menuStrip1.PerformLayout();
-      this.tcManagementConsole.ResumeLayout(false);
-      this.tpClientControl.ResumeLayout(false);
-      this.scClientControl.Panel1.ResumeLayout(false);
-      this.scClientControl.Panel2.ResumeLayout(false);
-      this.scClientControl.ResumeLayout(false);
-      this.tpJobControl.ResumeLayout(false);
-      this.scJobControl.Panel1.ResumeLayout(false);
-      this.scJobControl.Panel2.ResumeLayout(false);
-      this.scJobControl.ResumeLayout(false);
-      this.tpUserControl.ResumeLayout(false);
-      this.scUserControl.Panel1.ResumeLayout(false);
-      this.scUserControl.Panel2.ResumeLayout(false);
-      this.scUserControl.ResumeLayout(false);
       this.plClientDetails.ResumeLayout(false);
       this.plClientDetails.PerformLayout();
@@ -702,4 +609,13 @@
       ((System.ComponentModel.ISupportInitialize)(this.pbJobControl)).EndInit();
       ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).EndInit();
+      this.tpJobControl.ResumeLayout(false);
+      this.scJobControl.Panel1.ResumeLayout(false);
+      this.scJobControl.Panel2.ResumeLayout(false);
+      this.scJobControl.ResumeLayout(false);
+      this.tpClientControl.ResumeLayout(false);
+      this.scClientControl.Panel1.ResumeLayout(false);
+      this.scClientControl.Panel2.ResumeLayout(false);
+      this.scClientControl.ResumeLayout(false);
+      this.tcManagementConsole.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -712,25 +628,9 @@
     private System.Windows.Forms.ToolStripMenuItem informationToolStripMenuItem;
     private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
-    private System.Windows.Forms.TabControl tcManagementConsole;
-    private System.Windows.Forms.TabPage tpClientControl;
-    private System.Windows.Forms.TabPage tpJobControl;
-    private System.Windows.Forms.SplitContainer scClientControl;
-    private System.Windows.Forms.TabPage tpUserControl;
-    private System.Windows.Forms.TreeView tvClientControl;
-    private System.Windows.Forms.ListView lvClientControl;
-    private System.Windows.Forms.SplitContainer scJobControl;
-    private System.Windows.Forms.ListView lvJobControl;
-    private System.Windows.Forms.SplitContainer scUserControl;
     private System.Windows.Forms.TreeView treeView2;
     private System.Windows.Forms.ListView listView2;
-    private System.Windows.Forms.TreeView tvJobControl;
-    private System.Windows.Forms.TreeView tvUserControl;
-    private System.Windows.Forms.ListView lvUserControl;
     private System.Windows.Forms.ImageList ilClientControl;
     private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem;
     private System.Windows.Forms.ToolStripMenuItem jobToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem userToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem userToolStripMenuItem1;
-    private System.Windows.Forms.ToolStripMenuItem groupToolStripMenuItem2;
     private System.Windows.Forms.ImageList ilUserControl;
     private System.Windows.Forms.Timer timerSyncronize;
@@ -768,4 +668,13 @@
     private System.Windows.Forms.Label lblState;
     private System.ComponentModel.BackgroundWorker updaterWoker;
+    private System.Windows.Forms.TabControl tcManagementConsole;
+    private System.Windows.Forms.TabPage tpClientControl;
+    private System.Windows.Forms.SplitContainer scClientControl;
+    private System.Windows.Forms.TreeView tvClientControl;
+    private System.Windows.Forms.ListView lvClientControl;
+    private System.Windows.Forms.TabPage tpJobControl;
+    private System.Windows.Forms.SplitContainer scJobControl;
+    private System.Windows.Forms.TreeView tvJobControl;
+    private System.Windows.Forms.ListView lvJobControl;
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs	(revision 1483)
@@ -48,6 +48,4 @@
     private Dictionary<Guid, ListViewItem> clientInfoObjects;
     private Dictionary<Guid, ListViewItem> jobObjects;
-    private Dictionary<Guid, ListViewGroup> userGroupsObjects;
-    private Dictionary<Guid, ListViewItem> userListObjects;
 
     private Job currentJob = null;
@@ -60,4 +58,6 @@
     private bool flagUser = false;
 
+    private List<Changes> changes = new List<Changes>();
+
     private ToolTip tt = new ToolTip();
     #endregion
@@ -76,6 +76,7 @@
     /// <param name="e"></param>
     private void TickSync(object obj, EventArgs e) {
-      Refresh();
-      //updaterWoker.RunWorkerAsync();
+      if (!updaterWoker.IsBusy) {
+        updaterWoker.RunWorkerAsync();
+      }
     }
 
@@ -94,26 +95,55 @@
         tvClientControl.Nodes.Clear();
         int count = 0;
+        List<Guid> inGroup = new List<Guid>();
         foreach (ClientGroup cg in clients.List) {
           tvClientControl.Nodes.Add(cg.Name);
           ListViewGroup lvg = new ListViewGroup(cg.Name, HorizontalAlignment.Left);
-          foreach (ClientInfo ci in clientManager.GetAllClients().List) {
+          foreach (ClientInfo ci in cg.Resources) {
             tvClientControl.Nodes[tvClientControl.Nodes.Count - 1].Nodes.Add(ci.Name);
-            ListViewItem item = new ListViewItem(ci.Name, count, lvg);
+            ListViewItem item = null;
+            if ((ci.State == State.offline) || (ci.State == State.nullState)) {
+              item = new ListViewItem(ci.Name, 3, lvg);
+            } else {
+              item = new ListViewItem(ci.Name, count, lvg);
+            }
+            item.Tag = ci.Id;
             lvClientControl.Items.Add(item);
             clientInfoObjects.Add(ci.Id, item);
             count = (count + 1) % 3;
-          }
+            inGroup.Add(ci.Id);
+            
+          }
+          lvClientControl.BeginUpdate();
           lvClientControl.Groups.Add(lvg);
+          lvClientControl.EndUpdate();
           clientObjects.Add(cg.Id, lvg);
         } // Groups
 
         clientInfo = clientManager.GetAllClients();
-        ListViewGroup lvunsorted = new ListViewGroup("unsorted", HorizontalAlignment.Left);
+        ListViewGroup lvunsorted = new ListViewGroup("no group", HorizontalAlignment.Left);
         foreach (ClientInfo ci in clientInfo.List) {
-          tvClientControl.Nodes.Add(ci.Name);
-          lvClientControl.Items.Add(new ListViewItem(ci.Name, count, lvunsorted));
-          count = (count + 1) % 3;
-        }
+          bool help = false;
+          foreach (Guid client in inGroup) {
+            if (client == ci.Id) {
+              help = true;
+              break;
+            }
+          }
+          if (!help) {
+            tvClientControl.Nodes.Add(ci.Name);
+            ListViewItem item = null;
+            if ((ci.State == State.offline) || (ci.State == State.nullState)) {
+              item = new ListViewItem(ci.Name, 3, lvunsorted);
+            } else {
+              item = new ListViewItem(ci.Name, count, lvunsorted);
+            }
+            item.Tag = ci.Id;
+            lvClientControl.Items.Add(item);
+            count = (count + 1) % 3;
+          }
+        }
+        lvClientControl.BeginUpdate();
         lvClientControl.Groups.Add(lvunsorted);
+        lvClientControl.EndUpdate();
         if (flagClient) {
           ClientClicked();
@@ -126,4 +156,6 @@
     }
 
+
+    List<ListViewGroup> jobGroup;
     /// <summary>
     /// Adds jobs to ListView and TreeView
@@ -142,4 +174,10 @@
         ListViewGroup lvJobFinished = new ListViewGroup("finished", HorizontalAlignment.Left);
         ListViewGroup lvJobPending = new ListViewGroup("pending", HorizontalAlignment.Left);
+
+        jobGroup = new List<ListViewGroup>();
+        jobGroup.Add(lvJobCalculating);
+        jobGroup.Add(lvJobFinished);
+        jobGroup.Add(lvJobPending);
+        
         tvJobControl.Nodes.Add("calculating");
         tvJobControl.Nodes.Add("finished");
@@ -150,5 +188,7 @@
             jobObjects.Add(job.Id, lvi);
             tvJobControl.Nodes[0].Nodes.Add(job.Id.ToString());
-            lvJobControl.Items.Add(lvi);
+
+            //lvJobControl.Items.Add(lvi);
+            
             lvi.ToolTipText = (job.Percentage * 100) + "% of job calculated";
           } else if (job.State == State.finished) {
@@ -156,15 +196,20 @@
             jobObjects.Add(job.Id, lvi);
             tvJobControl.Nodes[1].Nodes.Add(job.Id.ToString());
-            lvJobControl.Items.Add(lvi);
+            //lvJobControl.Items.Add(lvi);
           } else if (job.State == State.offline) {
             ListViewItem lvi = new ListViewItem(job.Id.ToString(), 0, lvJobPending);
             jobObjects.Add(job.Id, lvi);
             tvJobControl.Nodes[2].Nodes.Add(job.Id.ToString());
-            lvJobControl.Items.Add(lvi);
+            //lvJobControl.Items.Add(lvi);
           }
         } // Jobs
+        lvJobControl.BeginUpdate();
+        foreach (ListViewItem lvi in jobObjects.Values) {
+          lvJobControl.Items.Add(lvi);
+        }
         lvJobControl.Groups.Add(lvJobCalculating);
         lvJobControl.Groups.Add(lvJobFinished);
         lvJobControl.Groups.Add(lvJobPending);
+        lvJobControl.EndUpdate();
         if (flagJob) {
           JobClicked();
@@ -267,4 +312,87 @@
     }
 
+    private void Refresh() {
+      foreach (Changes change in changes) {
+        if (change.Types == Type.Job) {
+          RefreshJob(change);
+        } else if (change.Types == Type.Client) {
+          RefreshClient(change);
+        } else if (change.Types == Type.ClientGroup) {
+          RefreshClientGroup(change);
+        }
+      }
+    }
+
+    private void RefreshJob(Changes change) {
+      if (change.ChangeType == Change.Update) {
+        for (int i = 0; i < lvJobControl.Items.Count; i++) {
+          if (lvJobControl.Items[i].Text == change.ID.ToString()) {
+            State state = jobs.List[change.Position].State;
+            System.Diagnostics.Debug.WriteLine(lvJobControl.Items[i].Text.ToString());
+            if (state == State.finished) {
+              lvJobControl.Items[i].Group = jobGroup[1];
+              System.Diagnostics.Debug.WriteLine("finished");
+            } else if (state == State.calculating) {
+              lvJobControl.Items[i].Group = jobGroup[0];
+              System.Diagnostics.Debug.WriteLine("calculating");
+            } else if (state == State.offline) {
+              lvJobControl.Items[i].Group = jobGroup[2];
+              System.Diagnostics.Debug.WriteLine("offline");
+
+            }
+            lvJobControl.Refresh();
+          }
+        }
+      } else if (change.ChangeType == Change.Create) {
+        ListViewItem lvi = new ListViewItem(
+          change.ID.ToString(), 0, jobGroup[2]);
+        jobObjects.Add(change.ID, lvi);
+        lvJobControl.Items.Add(lvi);
+
+      } else if (change.ChangeType == Change.Delete) {
+        jobObjects.Remove(change.ID);
+        for (int i = 0; i < lvJobControl.Items.Count; i++) {
+          if (change.ID.ToString() == lvJobControl.Items[i].Text.ToString()) {
+            lvJobControl.Items[i].Remove();
+            break;
+          }
+        }
+      }
+    }
+
+    private void RefreshClient(Changes change) {
+      if (change.ChangeType == Change.Update) {
+        for (int i = 0; i < lvClientControl.Items.Count; i++) {
+          if (lvClientControl.Items[i].Tag.ToString() == change.ID.ToString()) {
+            State state = clientInfo.List[change.Position].State;
+            System.Diagnostics.Debug.WriteLine(lvClientControl.Items[i].Text.ToString());
+            if ((state == State.offline) || (state == State.nullState)) {
+              lvClientControl.Items[i].ImageIndex = 3;
+            } else {
+              lvClientControl.Items[i].ImageIndex = 1;
+            }
+            lvClientControl.Refresh();
+          }
+        }
+
+
+      } else if (change.ChangeType == Change.Create) {
+        
+      } else if (change.ChangeType == Change.Delete) {
+        clientInfoObjects.Remove(change.ID);
+        for (int i = 0; i < lvClientControl.Items.Count; i++) {
+          if (change.ID.ToString() == lvClientControl.Items[i].Text.ToString()) {
+            lvClientControl.Items[i].Remove();
+            break;
+          }
+        }
+
+      }
+    }
+
+    private void RefreshClientGroup(Changes change) {
+
+    }
+
     #region Eventhandlers
     /// <summary>
@@ -294,10 +422,5 @@
       AddJobForm newForm = new AddJobForm();
       newForm.Show();
-      newForm.addJobEvent += new addDelegate(Refresh);
-    }
-
-    private void Refresh() {
-      AddClients();
-      AddJobs();
+      //newForm.addJobEvent += new addDelegate(updaterWoker.RunWorkerAsync);
     }
 
@@ -351,10 +474,4 @@
     }
 
-    private void btnUserControlClose_Click(object sender, EventArgs e) {
-      scUserControl.Panel2.Controls.Clear();
-      scUserControl.Panel2.Controls.Add(lvUserControl);
-      flagUser = false;
-    }
-
     private void lvJobControl_MouseMove(object sender, MouseEventArgs e) {
       if ((lvJobControl.GetItemAt(e.X, e.Y) != null) &&
@@ -365,16 +482,213 @@
 
     private void updaterWoker_DoWork(object sender, DoWorkEventArgs e) {
-      ResponseList<ClientInfo> clientInfoOld = clientInfo;
+
+        changes.Clear();
       IClientManager clientManager =
           ServiceLocator.GetClientManager();
+      
+      #region ClientInfo
+      ResponseList<ClientInfo> clientInfoOld = clientInfo;
       clientInfo = clientManager.GetAllClients();
-      foreach (ClientInfo ci in clientInfo.List) {
-        foreach (ClientInfo cio in clientInfoOld.List) {
-          ci.Id.Equals(cio.Id);
-        }
-      }
-      
+
+      IDictionary<int, ClientInfo> clientInfoOldHelp;
+
+      CloneList(clientInfoOld, out clientInfoOldHelp);
+
+      GetDelta(clientInfoOld.List, clientInfoOldHelp);
+      #endregion
+
+      #region Clients
+      ResponseList<ClientGroup> clientsOld = clients;
+     
+      clients = clientManager.GetAllClientGroups();
+
+      IDictionary<int, ClientGroup> clientsOldHelp;
+
+      CloneList(clientsOld, out clientsOldHelp);
+
+      GetDelta(clientsOld.List, clientsOldHelp);
+      #endregion
+
+      #region Job
+      ResponseList<Job> jobsOld = jobs;
+      IJobManager jobManager =
+          ServiceLocator.GetJobManager();
+
+      jobs = jobManager.GetAllJobs();
+
+      IDictionary<int, Job> jobsOldHelp;
+      CloneList(jobsOld, out jobsOldHelp);
+
+      GetDelta(jobsOld.List, jobsOldHelp);
+
+      #endregion
+
+      foreach (Changes change in changes) {
+        System.Diagnostics.Debug.WriteLine(change.ID + " " + change.ChangeType);
+      }
+
     }
     #endregion
+
+    #region Helper methods
+
+    private void CloneList(ResponseList<Job> oldList, out IDictionary<int, Job> newList) {
+      newList = new Dictionary<int, Job>();
+      for (int i = 0; i < oldList.List.Count; i++) {
+        newList.Add(i, oldList.List[i]);
+      }
+    }
+
+    private void CloneList(ResponseList<ClientInfo> oldList, out IDictionary<int, ClientInfo> newList) {
+      newList = new Dictionary<int, ClientInfo>();
+      for (int i = 0; i < oldList.List.Count; i ++) {
+        newList.Add(i, oldList.List[i]);
+      }
+    }
+
+    private void CloneList(ResponseList<ClientGroup> oldList, out IDictionary<int, ClientGroup> newList) {
+      newList = new Dictionary<int, ClientGroup>();
+      for (int i = 0; i < oldList.List.Count; i++) {
+        newList.Add(i, oldList.List[i]);
+      }
+    }
+
+    private bool IsEqual(ClientInfo ci1, ClientInfo ci2) {
+      if (ci2 == null) {
+        return false;
+      }
+      if (ci1.Id.Equals(ci2.Id)) {
+        return true;
+      } else return false;
+    }
+
+    private void GetDelta(IList<ClientInfo> oldClient, IDictionary<int, ClientInfo> helpClients) {
+      bool found = false;
+
+      for (int i = 0; i < clientInfo.List.Count; i ++) {
+        ClientInfo ci = clientInfo.List[i];
+        for (int j = 0; j < oldClient.Count; j++) {
+          ClientInfo cio = oldClient[j];
+          if (ci.Id.Equals(cio.Id)) {
+            found = true;
+            if (ci.State != cio.State) {
+              changes.Add(new Changes { Types = Type.Client, ID = ci.Id, ChangeType = Change.Update, Position = i });
+            }
+            int removeAt = -1;
+            foreach (KeyValuePair<int, ClientInfo> kvp in helpClients) {
+              if (cio.Id.Equals(kvp.Value.Id)) {
+                removeAt = kvp.Key;
+                break;
+              }
+            }
+            if (removeAt >= 0) {
+              helpClients.Remove(removeAt);
+            }
+            break;
+          }
+        }
+        if (found == false) {
+          changes.Add(new Changes { Types = Type.Client, ID = ci.Id, ChangeType = Change.Create });
+        }
+        found = false;
+      }
+      foreach (KeyValuePair<int, ClientInfo> kvp in helpClients) {
+        changes.Add(new Changes { Types = Type.Client, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+      }
+
+    }
+
+    private void GetDelta(IList<ClientGroup> oldClient, IDictionary<int, ClientGroup> helpClients) {
+
+      bool found = false;
+      for (int i = 0; i < clients.List.Count; i++) {
+        ClientGroup cg = clients.List[i];
+        for (int j = 0; j < oldClient.Count; i++) {
+          ClientGroup cgo = oldClient[j];
+          if (cg.Id.Equals(cgo.Id)) {
+            found = true;
+            foreach (Resource resource in cg.Resources) {
+              foreach (Resource resourceold in cgo.Resources) {
+                if (resource.Id.Equals(resourceold.Id)) {
+                  if (resourceold.Name != resource.Name) {
+                    changes.Add(new Changes { Types = Type.Client, ID = cg.Id, ChangeType = Change.Update, Position = i });
+                  }
+                }
+              }
+            }
+            for (int k = 0; k < helpClients.Count; k++) {
+              if (cgo.Id.Equals(helpClients[k].Id)) {
+                helpClients.Remove(k);
+                break;
+              }
+            }
+            break;
+          }
+        }
+        if (found == false) {
+          changes.Add(new Changes { Types = Type.ClientGroup, ID = cg.Id, ChangeType = Change.Create });
+        }
+        found = false;
+      }
+      foreach (KeyValuePair<int, ClientGroup> kvp in helpClients) {
+        changes.Add(new Changes { Types = Type.ClientGroup, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+      }
+    }
+
+    private void GetDelta(IList<Job> oldJobs, IDictionary<int, Job> helpJobs) {
+      bool found = false;
+      for (int i = 0; i < jobs.List.Count; i ++ ) {
+        Job job = jobs.List[i];
+        for (int j = 0; j < oldJobs.Count; j++) {
+
+          Job jobold = oldJobs[j];
+
+          if (job.Id.Equals(jobold.Id)) {
+
+            found = true;
+            if (job.State != State.offline) {
+              if (!IsEqual(job.Client, jobold.Client)) {
+                changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update, Position = i });
+              } else if (job.State != jobold.State) {
+                changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update, Position = i });
+              }
+            } else if (job.DateCalculated != jobold.DateCalculated) {
+              changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update, Position = i });
+            }
+
+            int removeAt = -1;
+            foreach (KeyValuePair<int, Job> kvp in helpJobs) {
+              if (job.Id.Equals(kvp.Value.Id)) {
+                removeAt = kvp.Key;
+                break;
+              }
+            }
+            if (removeAt >= 0) {
+              helpJobs.Remove(removeAt);
+            }
+            break;
+          }
+
+        }
+        if (found == false) {
+          changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Create });
+          System.Diagnostics.Debug.WriteLine("new Job: " + job.Id);
+        }
+        found = false;
+      }
+      foreach (KeyValuePair<int, Job> kvp in helpJobs) {
+        changes.Add(new Changes { Types = Type.Job, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+        System.Diagnostics.Debug.WriteLine("delete Job: " + kvp.Value.Id);
+      }
+    }
+
+
+    #endregion
+
+    private void updaterWoker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
+      Refresh();
+    }
+
+
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.resx
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.resx	(revision 1474)
+++ trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.resx	(revision 1483)
@@ -128,7 +128,7 @@
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACo
-        EwAAAk1TRnQBSQFMAgEBAwEAAQQBAAEEAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
-        AwABgAMAASADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB0
+        FwAAAk1TRnQBSQFMAgEBBAEAAQkBAAEEAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABgAMAAUADAAEBAQABCAYAASAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
         AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
         AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -157,60 +157,77 @@
         AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
         AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
-        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEACzUCVgGXA3gBlwNW
-        CjUBNAssAlMFdAFSAUwBTQssDEABRgFpBG8CRgxAIAAJNQJWAZgBBwG8A/ACvAHvAXgCVgQ1ATQDNQE0
-        CSwBTQFSAZMBBwG8A/ACvAHvAXQBUgFNCSwKQAFpAZMBBwG8A/ACvAHvAW8BRgpAIAAINQFWAZgBvAHw
-        BPEC8AHxAfACBwGYAVYFNAI1ATQILAFSAZMBvAHwBPEC8AHxAfACBwGTAUwCLAErBSwIQAFGAZMBvAHw
-        BPEC8AHxAfACBwGTAUYCQAEgBUAgAAc1AVYB7wO8AfAD8QPwBAcB9wFQAi4FNAcsAVIBmQO8AfAD8QPw
-        BAcB7wFuBCsDLAdAAUYBkwO8AfAD8QPwBAcB7wFoAukCIANAIAAGNQFWAZgDBwG8AfAC8QHwA7wCBwHv
-        AvcB7QFPAi4ENAYsAU0BkwMHAbwB8ALxAfADvAIHAe8C9wHtAUsDKwMsB0ABkwMHAbwB8ALxAfADvAIH
-        Ae8C9wHtAukCIANAIAAGNQFWAZgEBwG8A/ABvAMHAe8B9wHtAZIB7QFPBjQGLAFTAZMEBwG8A/ABvAMH
-        Ae8B9wHtAZIBHAFLAysDLAdAAZMEBwG8A/ABvAMHAe8B9wHtAZIB7QHpAyADQCAABzUBlwHvBQcBvAIH
-        Au8B7QLsAe0BkgFyAi4FNAcsAXQB7wUHAbwCBwLvAe0C7AHtAfcBcwErAUwCKwMsB0ABaQGTBQcBvAIH
-        Au8B7QLsAe0BkgFuAukFQCAACDUBVgEcAe8BBwPvAZIC7AJtAesB7AH3Ae8B9wLvAXIENAgsAUwBHAIH
-        A+8BkgLsAm0B6wHsAfcB7wEcAu8BdAQsCEABRgGTAe8BBwPvAZIC7AJtAesB7AH3Ae8BHALvAW8EQCAA
-        CTUBNAFQAXIC7QXsAZIC7wEHAbwB8AG8Ae8BcwM1ATQJLAErAUwBbgHtAZIF7AGSAu8BBwG8AfABvAEH
-        AXQELApAAUUBbgHsAe0F7AGSAu8BBwG8AfABvAHvAW8EQCAACjUBNAFVAVAD7AHtAfcBBwO8AQcB7wH3
-        AgcBcwM1ATQLLAJMA+wB7QH3AQcDvAEHAe8B9wIHARwELAxAAUUD7AHtAfcBBwO8AQcB7wH3AgcBjQRA
-        IAAFNQI0AlABcgHtAZIB9wPvAgcB7wHtAW0BEwEVAREBFQHsAbwB7QFWAjUBNAUsASsCTAFLAXMB7QL3
-        A+8CBwHvAe0BbQETARUBEQEVAewBvAEcAU0DLAdAAUYBRQFuAe0BkgH3A+8CBwHvAe0BbQETARUBEQEV
-        AewBvAHtBEAgAAE1AlYBcgHsAe0B9wUHAe8B9wHsAW0BFAJDAhEDQwEUAewBvAHtAVYCNQE0ASwBTQFM
-        AXMB7AHtAe8FBwHvAfcB7AFtARQCQwIRA0MBFAHsAbwBHAFTAywBQAJGAm4B7QH3BQcB7wH3AewBbQEU
-        AkMCEQNDARQB7AG8AZIBRgNAIAABNQGXAe0C7wMHAfcB7AHqARUBEQMQARECFQUUARMB7AG8ARwBVgI1
-        ATQBLAF0Ae0C7wMHAfcB7AHqARUBEQMQARECFQUUARMB7AG8ARwBUgMsAUABaQHtAu8DBwH3AewB6gEV
-        AREDEAERAhUFFAETAewBvAGSAUYDQCAAATUBeAH3Ae0B7AFtARUBEAMPAxACEQEVARQCEwUSAewBvAH3
-        AVYCNQE0ASwBdAH3Ae0B7AFtARUBEAMPAxACEQEVARQCEwUSAewBvAEcAVIDLAFAAW8B9wHtAewBbQEV
-        ARADDwMQAhEBFQEUAhMFEgHsAbwB9wFGA0AgAAE1AXgB9wERCBADEQFDARQBEgLqBW0B7AG8Ae8BVgI1
-        ATQBLAF1AfcBEQgQAxEBQwEUARIC6gVtAewBvAHvAVIDLAFAAW8B9wERCBADEQFDARQBEgLqBW0B7AG8
-        Ae8BaQNAIAABNQFWAe8BFQERAUMDEQIQAxECQwETBG0E6wHsAQcB7wGXAjUBNAEsAVMB7wEVAREBQwMR
-        AhADEQJDARMEbQTrAewBBwHvAXQDLAFAARcB7wEVAREBQwMRAhADEQJDARMEbQTrAewBBwHvAW8DQCAA
-        ATUBVgHvARMBQwEVAkMBEQEQAxECQwEVAeoJ7AIHAXMCNQE0ASwBUwHvARMBQwEVAkMBEQEQAxECQwEV
-        AeoJ7AIHAXQDLAFAAUYB7wETAUMBFQJDAREBEAMRAkMBFQHqCewBBwHvAW8DQCAAATUBVgHvAW0BFQIU
-        ARUEEQNDARQBbQXsA+0B7AIHAXMCNQE0ASwBUwHvAW0BFQIUARUEEQNDARQBbQXsA+0B7AIHARwDLAJA
-        Ae8BbQEVAhQBFQQRA0MBFAFtBewD7QHsAgcBbgNAIAACNQHvAesBFQETARIBFAMRBEMBEwHsBpIB9wKS
-        Ae8BvAHtAjUBNAIsAe8B6wEVARMBEgEUAxEEQwETAewGkgH3ApIB7wG8ARwDLAJAAZMB6wEVARMBEgEU
-        AxEEQwETAewGkgH3ApIB7wG8Ae0DQCAAAjUBmAHsARQC6gEVAxEDQwEVARIB7AHvAvcF7wH3Ae8B8AHt
-        AjUBNAIsAZkB7AEUAuoBFQMRA0MBFQESAewB7wL3Be8B9wHvAfABHAFNAiwCQAGTAewBFALqARUDEQND
-        ARUBEgHsAe8C9wXvAfcB7wHwAe0DQCAAAjUBmAH3ARQBbQHqAUMCEQNDAhUBbQGSBe8DBwLvAfABkgFW
-        ATUBNAIsAZMB9wEUAW0B6gFDAhEDQwIVAW0BkgXvAwcC7wHwARwBUgIsAkABkwH3ARQBbQHqAUMCEQND
-        AhUBbQGSBe8DBwLvAfAB7QFGAkAgAAI1AXgB9wETAW0BEgIRA0MCFQEUAewB7wYHArwCBwHwAZIBVgE1
-        ATQCLAF0Ae8BEwFtARICEQNDAhUBFAHsAe8GBwK8AgcB8AEcAVICLAJAAW8B9wETAW0BEgIRA0MCFQEU
-        AewB7wYHArwCBwHwAZIBRgJAIAACNQF4Ae8BEwFtARUBEQJDAhUCFAETAewFvATwAbwBBwHwAfcBlwE1
-        ATQCLAF0Ae8BEwFtARUBEQJDAhUCFAETAewFvATwAbwBBwHwARwBdAIsAkABbwH3ARMBbQEVARECQwIV
-        AhQBEwHsBbwE8AG8AQcB8AH3AWkCQCAAAjUBVgHvAhIBQwERAkMCFQIUAeoB9wXwBfEBBwHwAe8BlwE1
-        ATQCLAFTAe8CEgFDARECQwIVAhQB6gH3BfAF8QEHAfAB7wF0AiwCQAFGAe8CEgFDARECQwIVAhQB6gH3
-        BfAF8QEHAfAB7wFvAkAgAAI1AVYB7wESARUBEQJDAhUDFAFtAQcB8gTxBfIBvAHxAe8BcgE1ATQCLAFT
-        Ae8BEgEVARECQwIVAxQBbQEHAfIE8QXyAbwB8QHvAXQCLAJAAUYB7wESARUBEQJDAhUDFAFtAQcB8gTx
-        BfIBvAHxAe8BbwJAIAADNQEcARICEQJDAhUCFAETAewB8AXyBfMC8QG8AXMBNQE0AiwBTQGTARICEQJD
-        AhUCFAETAewB8AXyBfMC8QG8AXQCLANAAZMBEgIRAkMCFQIUARMB7AHwBfIF8wLxAbwBbgJAIAADNQGY
-        AW0CEQJDAhUCFAETAZIB8gjzAfIB8QEHAvAB7QE1ATQDLAGTAW0CEQJDAhUCFAETAZIB8gjzAfIB8QEH
-        AvAB7QFNASwDQAGTAW0CEQJDAhUCFAETAZIB8gjzAfIB8QEHAvAB7AJAIAADNQGYAewBQwERAkMCFQIU
-        ARIB7wHyAfEB8AO8BQcBvALxARwBNQE0AywBHAHsAUMBEQJDAhUCFAESAe8B8gHxAfADvAUHAbwC8QEc
-        AU0BLANAAZMB7AFDARECQwIVAhQBEgHvAfIB8QHwA7wFBwG8AvEB7QJAIAADNQGYAe0BFQIRAkMBFQIU
-        AeoB7QPvAgcEvAEIApkCmAFWATUBNAMsAZMB7QEVAhECQwEVAhQB6gHtA+8CBwW8A5kBkwFTAiwDQAGO
-        Ae0BFQIRAkMBFQIUAeoB7QPvAgcEvAEHA5MBjgFGAkAgAAM1AXgB9wIUAeoBbQHsAZIB7wEHArwBBwII
-        AZkDmAN4BVYBNQE0AywBdAH3AhQB6gFtAewBkgHvAQcDvAEHA5kCkwJ0AXUFUwIsA0ABbwH3AhQB6gFt
-        AewBkgHvAQcCvAIHBZMBjgJvAWkERgJAIAADNQF4Ae8BBwG8AQcCCAGZApgCeAZWCjUBNAMsAXQCBwK8
-        AQcDmQGTAXQBdQVTAU0LLANAAW8B7wEHAbwDBwOTAm8BaQNGDUAgAAQ1AVYBlwNWFjUBNAQsAVMBdQNT
-        FywEQANpAkYXQCAAAUIBTQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA///AP8AAwAL
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8A/wD/AP8A
+        /wD/AP8A/wD/AP8A/wD/AP8AEQALNQJWAZcDeAGXA1YKNQE0CywCUwV0AVIBTAFNCywMQAFGAWkEbwJG
+        DEAfkgHtCTUCVgGYAQcBvAPwArwB7wF4AlYENQE0AzUBNAksAU0BUgGTAQcBvAPwArwB7wF0AVIBTQks
+        CkABaQGTAQcBvAPwArwB7wFvAUYKQAuSAfcBBwG8AvACvAHuAe8LkgHtCDUBVgGYAbwB8ATxAvAB8QHw
+        AgcBmAFWBTQCNQE0CCwBUgGTAbwB8ATxAvAB8QHwAgcBkwFMAiwBKwUsCEABRgGTAbwB8ATxAvAB8QHw
+        AgcBkwFGAkABIAVACZIB7wG8AfAE8QLwAfEBvAIHAe8IkgHtBzUBVgHvA7wB8APxA/AEBwH3AVACLgU0
+        BywBUgGZA7wB8APxA/AEBwHvAW4EKwMsB0ABRgGTA7wB8APxA/AEBwHvAWgC6QIgA0AIkgEHA7wB8APx
+        A/AEBwHvAewGkgHtBjUBVgGYAwcBvAHwAvEB8AO8AgcB7wL3Ae0BTwIuBDQGLAFNAZMDBwG8AfAC8QHw
+        A7wCBwHvAvcB7QFLAysDLAdAAZMDBwG8AfAC8QHwA7wCBwHvAvcB7QLpAiADQAeSAe8DBwG8AfAC8QHw
+        A7wCBwHvA/cB7QWSAe0GNQFWAZgEBwG8A/ABvAMHAe8B9wHtAZIB7QFPBjQGLAFTAZMEBwG8A/ABvAMH
+        Ae8B9wHtAZIBHAFLAysDLAdAAZMEBwG8A/ABvAMHAe8B9wHtAZIB7QHpAyADQAeSAe8EBwG8A/ABvAMH
+        Ae8B9wHtAZIB9waSAe0HNQGXAe8FBwG8AgcC7wHtAuwB7QGSAXICLgU0BywBdAHvBQcBvAIHAu8B7QLs
+        Ae0B9wFzASsBTAIrAywHQAFpAZMFBwG8AgcC7wHtAuwB7QGSAW4C6QVAB5IB7QHvBQcBvAIHAu8B7QLs
+        Ae0IkgHtCDUBVgEcAe8BBwPvAZIC7AJtAesB7AH3Ae8B9wLvAXIENAgsAUwBHAIHA+8BkgLsAm0B6wHs
+        AfcB7wEcAu8BdAQsCEABRgGTAe8BBwPvAZIC7AJtAesB7AH3Ae8BHALvAW8EQAmSAfcF7wGSAewB+AJt
+        AesB7AH3Ae8B9wLvAe0DkgHtCTUBNAFQAXIC7QXsAZIC7wEHAbwB8AG8Ae8BcwM1ATQJLAErAUwBbgHt
+        AZIF7AGSAu8BBwG8AfABvAEHAXQELApAAUUBbgHsAe0F7AGSAu8BBwG8AfABvAHvAW8EQAuSA+0B7AL4
+        AuwBkgLvAQcBvAHwAbwBBwHtA5IB7Qo1ATQBVQFQA+wB7QH3AQcDvAEHAe8B9wIHAXMDNQE0CywCTAPs
+        Ae0B9wEHA7wBBwHvAfcCBwEcBCwMQAFFA+wB7QH3AQcDvAEHAe8B9wIHAY0EQA2SAe0C7AHtAfcBBwO8
+        AQcB7wH3AgcEkgHtBTUCNAJQAXIB7QGSAfcD7wIHAe8B7QFtARMBFQERARUB7AG8Ae0BVgI1ATQFLAEr
+        AkwBSwFzAe0C9wPvAgcB7wHtAW0BEwEVAREBFQHsAbwBHAFNAywHQAFGAUUBbgHtAZIB9wPvAgcB7wHt
+        AW0BEwEVAREBFQHsAbwB7QRACZIC7QGSAfcD7wIHAe8B7QFtARMBFQERARUB7AG8BJIB7QE1AlYBcgHs
+        Ae0B9wUHAe8B9wHsAW0BFAJDAhEDQwEUAewBvAHtAVYCNQE0ASwBTQFMAXMB7AHtAe8FBwHvAfcB7AFt
+        ARQCQwIRA0MBFAHsAbwBHAFTAywBQAJGAm4B7QH3BQcB7wH3AewBbQEUAkMCEQNDARQB7AG8AZIBRgNA
+        BJIB7AHtAfcFBwHvAfcB7AFtARQCQwIRA0MBFAHsAbwB9wOSAe0BNQGXAe0C7wMHAfcB7AHqARUBEQMQ
+        ARECFQUUARMB7AG8ARwBVgI1ATQBLAF0Ae0C7wMHAfcB7AHqARUBEQMQARECFQUUARMB7AG8ARwBUgMs
+        AUABaQHtAu8DBwH3AewB6gEVAREDEAERAhUFFAETAewBvAGSAUYDQAKSAe0C7wMHAfcB7AHqARUBEQMQ
+        ARECFQUUARMB7AG8AfcDkgHtATUBeAH3Ae0B7AFtARUBEAMPAxACEQEVARQCEwUSAewBvAH3AVYCNQE0
+        ASwBdAH3Ae0B7AFtARUBEAMPAxACEQEVARQCEwUSAewBvAEcAVIDLAFAAW8B9wHtAewBbQEVARADDwMQ
+        AhEBFQEUAhMFEgHsAbwB9wFGA0ACkgH3Ae0B7AFtARUBEAMPAxACEQEVARQCEwUSAfgBvAHvA5IB7QE1
+        AXgB9wERCBADEQFDARQBEgLqBW0B7AG8Ae8BVgI1ATQBLAF1AfcBEQgQAxEBQwEUARIC6gVtAewBvAHv
+        AVIDLAFAAW8B9wERCBADEQFDARQBEgLqBW0B7AG8Ae8BaQNAAZIB7QH3AREIEAMRAUMBFAESAuoFbQH4
+        AbwB7wOSAe0BNQFWAe8BFQERAUMDEQIQAxECQwETBG0E6wHsAQcB7wGXAjUBNAEsAVMB7wEVAREBQwMR
+        AhADEQJDARMEbQTrAewBBwHvAXQDLAFAARcB7wEVAREBQwMRAhADEQJDARMEbQTrAewBBwHvAW8DQAKS
+        Ae8BFQERAUMDEQIQAxECQwETBG0E6wHsAQcB7wHtApIB7QE1AVYB7wETAUMBFQJDAREBEAMRAkMBFQHq
+        CewCBwFzAjUBNAEsAVMB7wETAUMBFQJDAREBEAMRAkMBFQHqCewCBwF0AywBQAFGAe8BEwFDARUCQwER
+        ARADEQJDARUB6gnsAQcB7wFvA0ACkgHvARMBQwEVAkMBEQEQAxECQwEVAeoF+ATsAgcB7QKSAe0BNQFW
+        Ae8BbQEVAhQBFQQRA0MBFAFtBewD7QHsAgcBcwI1ATQBLAFTAe8BbQEVAhQBFQQRA0MBFAFtBewD7QHs
+        AgcBHAMsAkAB7wFtARUCFAEVBBEDQwEUAW0F7APtAewCBwFuA0ACkgHvAW0BFQIUARUEEQNDARQBbQXs
+        A+0B7AIHAe0CkgHtAjUB7wHrARUBEwESARQDEQRDARMB7AaSAfcCkgHvAbwB7QI1ATQCLAHvAesBFQET
+        ARIBFAMRBEMBEwHsBpIB9wKSAe8BvAEcAywCQAGTAesBFQETARIBFAMRBEMBEwHsBpIB9wKSAe8BvAHt
+        A0ACkgHvAesBFQETARIBFAMRBEMBEwH4BpIB9wKSAe8BvAHtApIB7QI1AZgB7AEUAuoBFQMRA0MBFQES
+        AewB7wL3Be8B9wHvAfAB7QI1ATQCLAGZAewBFALqARUDEQNDARUBEgHsAe8C9wXvAfcB7wHwARwBTQIs
+        AkABkwHsARQC6gEVAxEDQwEVARIB7AHvAvcF7wH3Ae8B8AHtA0ACkgHvAewBFALqARUDEQNDARUBEgHs
+        Ae8C9wXvAfcB7wHwAfcCkgHtAjUBmAH3ARQBbQHqAUMCEQNDAhUBbQGSBe8DBwLvAfABkgFWATUBNAIs
+        AZMB9wEUAW0B6gFDAhEDQwIVAW0BkgXvAwcC7wHwARwBUgIsAkABkwH3ARQBbQHqAUMCEQNDAhUBbQGS
+        Be8DBwLvAfAB7QFGAkAB7QGSAfcBkgEUAW0B6gFDAhEDQwIVAW0BkgXvAwcC7wHwAfcCkgHtAjUBeAH3
+        ARMBbQESAhEDQwIVARQB7AHvBgcCvAIHAfABkgFWATUBNAIsAXQB7wETAW0BEgIRA0MCFQEUAewB7wYH
+        ArwCBwHwARwBUgIsAkABbwH3ARMBbQESAhEDQwIVARQB7AHvBgcCvAIHAfABkgFGAkAB7QKSAfcBEwFt
+        ARICEQNDAhUBFAH4Ae8GBwK8AgcB8AH3ApIB7QI1AXgB7wETAW0BFQERAkMCFQIUARMB7AW8BPABvAEH
+        AfAB9wGXATUBNAIsAXQB7wETAW0BFQERAkMCFQIUARMB7AW8BPABvAEHAfABHAF0AiwCQAFvAfcBEwFt
+        ARUBEQJDAhUCFAETAewFvATwAbwBBwHwAfcBaQJAAe0CkgHvARMBbQEVARECQwIVAhQBEwHsBbwE8AG8
+        AQcB8AH3ApIB7QI1AVYB7wISAUMBEQJDAhUCFAHqAfcF8AXxAQcB8AHvAZcBNQE0AiwBUwHvAhIBQwER
+        AkMCFQIUAeoB9wXwBfEBBwHwAe8BdAIsAkABRgHvAhIBQwERAkMCFQIUAeoB9wXwBfEBBwHwAe8BbwJA
+        Ae0CkgHvAhIBQwERAkMCFQIUAeoB9wXwBfEBBwHwAe8B7QGSAe0CNQFWAe8BEgEVARECQwIVAxQBbQEH
+        AfIE8QXyAbwB8QHvAXIBNQE0AiwBUwHvARIBFQERAkMCFQMUAW0BBwHyBPEF8gG8AfEB7wF0AiwCQAFG
+        Ae8BEgEVARECQwIVAxQBbQEHAfIE8QXyAbwB8QHvAW8CQAHtApIB7wESARUBEQJDAhUDFAFtAQcB8gTx
+        BfIBvAHxAQcB7QGSAe0DNQEcARICEQJDAhUCFAETAewB8AXyBfMC8QG8AXMBNQE0AiwBTQGTARICEQJD
+        AhUCFAETAewB8AXyBfMC8QG8AXQCLANAAZMBEgIRAkMCFQIUARMB7AHwBfIF8wLxAbwBbgJAA5IB7wES
+        AhECQwIVAhQBEwHsAfAF8gXzAvEB7gHtAZIB7QM1AZgBbQIRAkMCFQIUARMBkgHyCPMB8gHxAQcC8AHt
+        ATUBNAMsAZMBbQIRAkMCFQIUARMBkgHyCPMB8gHxAQcC8AHtAU0BLANAAZMBbQIRAkMCFQIUARMBkgHy
+        CPMB8gHxAQcC8AHsAkADkgHvAW0CEQJDAhUCFAETAZIB8gjzAfIB8QEHAvAB7QGSAe0DNQGYAewBQwER
+        AkMCFQIUARIB7wHyAfEB8AO8BQcBvALxARwBNQE0AywBHAHsAUMBEQJDAhUCFAESAe8B8gHxAfADvAUH
+        AbwC8QEcAU0BLANAAZMB7AFDARECQwIVAhQBEgHvAfIB8QHwA7wFBwG8AvEB7QJABJIB+AFDARECQwIV
+        AhQBEgHvAfIB8QHwA7wGBwLxApIB7QM1AZgB7QEVAhECQwEVAhQB6gHtA+8CBwS8AQgCmQKYAVYBNQE0
+        AywBkwHtARUCEQJDARUCFAHqAe0D7wIHBbwDmQGTAVMCLANAAY4B7QEVAhECQwEVAhQB6gHtA+8CBwS8
+        AQcDkwGOAUYCQASSAe0BFQIRAkMBFQIUAeoB7QPvAgcEvAEIAe8B9wSSAe0DNQF4AfcCFAHqAW0B7AGS
+        Ae8BBwK8AQcCCAGZA5gDeAVWATUBNAMsAXQB9wIUAeoBbQHsAZIB7wEHA7wBBwOZApMCdAF1BVMCLANA
+        AW8B9wIUAeoBbQHsAZIB7wEHArwCBwWTAY4CbwFpBEYCQASSAfcCFAHqAW0B7AGSAe8BBwG8Ae4BBwEI
+        Ae8C9wuSAe0DNQF4Ae8BBwG8AQcCCAGZApgCeAZWCjUBNAMsAXQCBwK8AQcDmQGTAXQBdQVTAU0LLANA
+        AW8B7wEHAbwDBwOTAm8BaQNGDUACkgLtAe8BBwHuAQcCCAHvAfcTkgHtBDUBVgGXA1YWNQE0BCwBUwF1
+        A1MXLARAA2kCRhdAA5IB7RuSAe0BQgFNAT4HAAE+AwABKAMAAYADAAFAAwABAQEAAQEGAAEEFgAD//8A
+        /wD/AP8ABQAL
 </value>
   </data>
