public Byte[] RequestStorage(string ServerKey, int ChestId)
 {
     OperationsLog("Storge request for " + @ChestId + " on " + @ServerKey + "received.");
       				ServerTracking sInv = sMasterSettings.GlobalTracking.ServerTrackingList.Where(x => @x.ServerKey == @ServerKey).FirstOrDefault();
       				if(sInv == null)
       				{
       					sInv = new ServerTracking(ServerKey);
       					sMasterSettings.GlobalTracking.ServerTrackingList.Add(sInv);
       					OperationsLog("Added Server Inventory for " + @sInv.ServerKey);
       				}
       				ServerStorageTracking sSto = sInv.ServerStorageHash.Where(x => x.StorageChestGUID == ChestId).FirstOrDefault();
       				if(sSto == null)
       				{
       					sSto = new ServerStorageTracking(@ServerKey, ChestId);
       					StorageBuffer.Add(sSto);
       					OperationsLog("Added storage for " + ChestId);
       				}
       				using(MemoryStream stream = new MemoryStream())
       			{
       					try
       					{
             Serializer.PrepareSerializer<ServerStorageTracking>();
             Serializer.Serialize(stream, sSto);
       					}catch(Exception ex){LogError(ex);}
       				return stream.ToArray();
       			}
 }
        private void Storage_ContainerOpened(object sender, ContainerOpenedEventArgs e)
        {
            try
            {
                if (e.ItemGuid == 0) { return; }
                if (AetherObjects.Collection[e.ItemGuid].Name != "Storage") { return; }

                mCurrentStoragePendingIds = new HashSet<int>();
                mCurrentStorage = GetServerStorageFromLocker(@GearFiles.ServerKey, e.ItemGuid);

                if (!AetherObjects.Collection[e.ItemGuid].HasIdData || mCurrentStorage.OwnerName == String.Empty)
                {
                    mCurrentStoragePendingIds.Add(e.ItemGuid);
                    Core.Actions.RequestId(e.ItemGuid);
                }
                else
                {
                    mCurrentStorage.OwnerName = @AetherObjects.Collection[mCurrentStorage.StorageChestGUID].Values(AStringValueKeys.FullDescription).Trim().Substring(9);
                    mCurrentStorage.ChestKey = @mCurrentStorage.OwnerName + @"'s Storage";
                    mCurrentStorage.LastUpdateTime = DateTime.Now.ToString();
                }

                if (StorageRenderTime == DateTime.MinValue)
                {
                    StorageRenderTime = DateTime.Now;
                    Core.RenderFrame += StorageContainerTapback;
                }

            }
            catch (Exception ex) { LogError(ex); }
        }
            internal void StorageUpdate(ServerStorageTracking Storage)
            {
                ServerStorageTracking SafeStorage = Serializer.DeepClone(Storage);

                if(!_ServerKeyDictionary.ContainsKey(SafeStorage.ServerKey)){_ServerKeyDictionary.Add(@SafeStorage.ServerKey, new BlockDictionary());}
                BlockDictionary ServerBlock = _ServerKeyDictionary[@SafeStorage.ServerKey];

                ServerBlock._HolderDictionary.Remove(@SafeStorage.ChestKey);
                foreach(KeyValuePair<AObjectClass, HashSet<InventoryObject>> kvp in ServerBlock._ClassKeyDictionary)
                {
                    kvp.Value.RemoveWhere(x => x.OwnerOrChest == @SafeStorage.ChestKey);
                }
                foreach(KeyValuePair<string, HashSet<InventoryObject>> kvp in ServerBlock._NameKeyDictionary)
                {
                    kvp.Value.RemoveWhere(x => x.OwnerOrChest == @SafeStorage.ChestKey);
                }
                foreach(KeyValuePair<string, HashSet<InventoryObject>> kvp in ServerBlock._FragmentDictionary)
                {
                    kvp.Value.RemoveWhere(x => x.OwnerOrChest == @SafeStorage.ChestKey);
                }
                foreach(KeyValuePair<int, HashSet<InventoryObject>> kvp in ServerBlock._SpellIdDictionary)
                {
                    kvp.Value.RemoveWhere(x => x.OwnerOrChest == @SafeStorage.ChestKey);
                }
                ServerBlock._EquipmentHash.RemoveWhere(x => x.OwnerOrChest == @SafeStorage.ChestKey);

                foreach(InventoryObject io in SafeStorage.StorageChestItems)
                {
                    if(!ServerBlock._HolderDictionary.ContainsKey(@io.OwnerOrChest)){ServerBlock._HolderDictionary.Add(@io.OwnerOrChest, new HashSet<InventoryObject>());}
                    ServerBlock._HolderDictionary[@io.OwnerOrChest].Add(io);
                    if(!ServerBlock._ClassKeyDictionary.ContainsKey(io.ObjectClass)){ServerBlock._ClassKeyDictionary.Add(io.ObjectClass, new HashSet<InventoryObject>());}
                    ServerBlock._ClassKeyDictionary[io.ObjectClass].Add(io);
                    if(!ServerBlock._NameKeyDictionary.ContainsKey(@io.Name)){ServerBlock._NameKeyDictionary.Add(@io.Name, new HashSet<InventoryObject>());}
                    ServerBlock._NameKeyDictionary[@io.Name].Add(io);
                    foreach(string fragement in io.Name.ToLower().Split(' '))
                    {
                        if(!ServerBlock._FragmentDictionary.ContainsKey(@fragement)){ServerBlock._FragmentDictionary.Add(@fragement, new HashSet<InventoryObject>());}
                        ServerBlock._FragmentDictionary[@fragement].Add(io);
                    }
                    foreach(int SpellId in io.aetherObject.Spells)
                    {
                        if(!ServerBlock._SpellIdDictionary.ContainsKey(SpellId)){ServerBlock._SpellIdDictionary.Add(SpellId, new HashSet<InventoryObject>());}
                        ServerBlock._SpellIdDictionary[SpellId].Add(io);
                    }
                    if(io.EquipableSlot != 0) {ServerBlock._EquipmentHash.Add(io);}
                }
            }
 void SubmitStorageToGearLocker(ServerStorageTracking UpdatedStorage)
 {
     try
     {
         using(MemoryStream stream = new MemoryStream())
         {
             Serializer.PrepareSerializer<ServerStorageTracking>();
             Serializer.Serialize(stream, UpdatedStorage);
             LockerAccess.StoreCharacterStorage(stream.ToArray(), @GearFiles.CharacterKey);
         }
     }catch(Exception ex){LogError(ex);}
 }