Browse Source

行为树编辑器重新布局。
需要要支持选择某棵行为树进行编辑

tanghai 11 năm trước cách đây
mục cha
commit
dc3649be23

+ 2 - 2
CSharp/App/BossBase/LoginOKEvent.cs

@@ -1,8 +1,8 @@
-using Microsoft.Practices.Prism.Events;
+using Microsoft.Practices.Prism.PubSubEvents;
 
 namespace BossBase
 {
-    public class LoginOKEvent: CompositePresentationEvent<IMessageChannel>
+    public class LoginOKEvent: PubSubEvent<IMessageChannel>
     {
     }
 }

+ 2 - 2
CSharp/App/BossBase/ReLoginEvent.cs

@@ -1,8 +1,8 @@
-using Microsoft.Practices.Prism.Events;
+using Microsoft.Practices.Prism.PubSubEvents;
 
 namespace BossBase
 {
-    public class ReLoginEvent: CompositePresentationEvent<object>
+    public class ReLoginEvent: PubSubEvent<object>
     {
     }
 }

+ 2 - 6
CSharp/App/Editor/Bootstrapper.cs

@@ -15,12 +15,8 @@ namespace Editor
         protected override void ConfigureAggregateCatalog()
         {
             this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (Bootstrapper).Assembly));
-            this.AggregateCatalog.Catalogs.Add(
-                                               new AssemblyCatalog(
-                                                       typeof (ViewExportAttribute).Assembly));
-            this.AggregateCatalog.Catalogs.Add(
-                                               new AssemblyCatalog(
-                                                       typeof (BehaviorTreeModule).Assembly));
+            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (ViewExportAttribute).Assembly));
+            this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (TreeModule).Assembly));
             this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (RobotModule).Assembly));
             this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (LoginModule).Assembly));
             this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (WCFClientModule).Assembly));

+ 2 - 0
CSharp/App/Editor/Shell.xaml

@@ -8,12 +8,14 @@
 			<TabItem Height="25" Width="80" Header="行为树">
 				<ContentControl Name="behaviorTree" prism:RegionManager.RegionName="BehaviorTreeRegion" />
 			</TabItem>
+			<!--
 			<TabItem Height="25" Width="80" Header="机器人">
 				<ContentControl Name="robot" prism:RegionManager.RegionName="RobotRegion" />
 			</TabItem>
 			<TabItem Height="25" Width="80" Header="WCFClient">
 				<ContentControl Name="wcfClient" prism:RegionManager.RegionName="WCFClientRegion" />
 			</TabItem>
+			-->
 		</TabControl>
 	</Grid>
 </Window>

+ 93 - 0
CSharp/App/Modules/Tree/AllTreeData.cs

@@ -0,0 +1,93 @@
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace Tree
+{
+    [DataContract]
+    public class AllTreeData
+    {
+        private readonly List<TreeNodeData> treeNodeDatas = new List<TreeNodeData>();
+        public int MaxNodeId { get; set; }
+        public int MaxTreeId { get; set; }
+
+        [DataMember(Order = 1)]
+        public List<TreeNodeData> TreeNodeDatas
+        {
+            get
+            {
+                return this.treeNodeDatas;
+            }
+        }
+
+        private readonly Dictionary<int, TreeNodeData> allTreeNodes =
+                new Dictionary<int, TreeNodeData>();
+
+        /// <summary>
+        /// tree对应的root id
+        /// </summary>
+        private readonly Dictionary<int, int> treeRootId = new Dictionary<int, int>();
+
+        public void Init()
+        {
+            this.MaxNodeId = 0;
+            this.MaxTreeId = 0;
+            foreach (TreeNodeData nodeData in this.treeNodeDatas)
+            {
+                this.allTreeNodes[nodeData.Id] = nodeData;
+                if (nodeData.Id > this.MaxNodeId)
+                {
+                    this.MaxNodeId = nodeData.Id;
+                }
+                if (nodeData.TreeId > this.MaxTreeId)
+                {
+                    this.MaxTreeId = nodeData.TreeId;
+                }
+                if (nodeData.Parent == 0)
+                {
+                    this.treeRootId[nodeData.TreeId] = nodeData.Id;
+                }
+            }
+        }
+
+        public void Save()
+        {
+            treeNodeDatas.Clear();
+            foreach (KeyValuePair<int, TreeNodeData> pair in allTreeNodes)
+            {
+                treeNodeDatas.Add(pair.Value);
+            }
+        }
+
+        /// <summary>
+        /// 删除一棵树的所有节点
+        /// </summary>
+        /// <param name="treeId"></param>
+        public void Remove(int treeId)
+        {
+            var removeList = new List<int>();
+            foreach (int key in this.allTreeNodes.Keys)
+            {
+                TreeNodeData nodeData = allTreeNodes[key];
+                if (nodeData.TreeId != treeId)
+                {
+                    continue;
+                }
+                removeList.Add(key);
+            }
+
+            foreach (int key in removeList)
+            {
+                this.allTreeNodes.Remove(key);
+            }
+            Save();
+        }
+
+        public TreeNodeData this[int id]
+        {
+            get
+            {
+                return this.allTreeNodes[id];
+            }
+        }
+    }
+}

+ 39 - 0
CSharp/App/Modules/Tree/AllTreeView.xaml

@@ -0,0 +1,39 @@
+<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+		xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+		xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+		xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+		xmlns:Tree="clr-namespace:Tree"
+		x:Class="Tree.AllTreeView"
+		mc:Ignorable="d" 
+		d:DesignHeight="800" 
+		d:DesignWidth="1280" 
+		d:DataContext="{d:DesignInstance Tree:AllTreeViewModel}">
+	<DockPanel>
+	<Menu DockPanel.Dock="Top">
+		<MenuItem Header="File">
+			<MenuItem Header="打开" Click="MenuItem_Open" />
+			<MenuItem Header="保存" Click="MenuItem_Save" />
+		</MenuItem>
+	</Menu>
+	<Grid>
+		<Grid.RowDefinitions>
+			<RowDefinition></RowDefinition>
+			<RowDefinition></RowDefinition>
+		</Grid.RowDefinitions>
+		<Grid.ColumnDefinitions>
+			<ColumnDefinition Width="230"/>
+			<ColumnDefinition Width="Auto"></ColumnDefinition>
+			<ColumnDefinition />
+		</Grid.ColumnDefinitions>
+		<GroupBox Grid.Row="0" Grid.Column="0" Header="行为树列表:">
+			<ListBox Name="lbTreeId" ></ListBox>
+		</GroupBox>
+		<GroupBox Grid.Row="1" Grid.Column="0" Header="节点编辑:">
+			<Tree:NodeDataEditor x:Name="nodeDataEditor" VerticalAlignment="Top" />
+		</GroupBox>
+		<GridSplitter Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" Width="3" ShowsPreview="False" VerticalAlignment="Stretch"
+				HorizontalAlignment="Stretch" />
+		<Tree:TreeView x:Name="treeView" Grid.Row="0" Grid.Column="2" Grid.RowSpan="2" />
+		</Grid>
+	</DockPanel>
+</UserControl>

+ 46 - 0
CSharp/App/Modules/Tree/AllTreeView.xaml.cs

@@ -0,0 +1,46 @@
+using System.ComponentModel.Composition;
+using System.Windows;
+using Infrastructure;
+using Microsoft.Practices.Prism.PubSubEvents;
+
+namespace Tree
+{
+    /// <summary>
+    /// BehaviorTreeView.xaml 的交互逻辑
+    /// </summary>
+    [ViewExport(RegionName = "BehaviorTreeRegion"), PartCreationPolicy(CreationPolicy.NonShared)]
+    public partial class AllTreeView
+    {
+        private AllTreeViewModel allTreeViewModel;
+
+        [ImportingConstructor]
+        public AllTreeView(IEventAggregator eventAggregator)
+        {
+            this.InitializeComponent();
+
+            this.nodeDataEditor.NodeDataEditorViewModel = new NodeDataEditorViewModel(eventAggregator);
+            this.treeView.TreeViewModel = new TreeViewModel(eventAggregator);
+        }
+
+        [Import]
+        private AllTreeViewModel AllTreeViewModel
+        {
+            get
+            {
+                return allTreeViewModel;
+            }
+            set
+            {
+                this.allTreeViewModel = value;
+            }
+        }
+
+        private void MenuItem_Open(object sender, RoutedEventArgs e)
+        {
+        }
+
+        private void MenuItem_Save(object sender, RoutedEventArgs e)
+        {
+        }
+    }
+}

+ 15 - 0
CSharp/App/Modules/Tree/AllTreeViewModel.cs

@@ -0,0 +1,15 @@
+using System.Collections.ObjectModel;
+using System.ComponentModel.Composition;
+
+namespace Tree
+{
+    [Export(contractType: typeof (AllTreeViewModel)),
+     PartCreationPolicy(creationPolicy: CreationPolicy.NonShared)]
+    internal class AllTreeViewModel
+    {
+        private AllTreeData allTreeData;
+
+        private readonly ObservableCollection<TreeInfoViewModel> treeInfos =
+                new ObservableCollection<TreeInfoViewModel>();
+    }
+}

+ 8 - 0
CSharp/App/Modules/Tree/IEventNotifyView.cs

@@ -0,0 +1,8 @@
+
+namespace Tree
+{
+    public interface IEventNotifyView
+    {
+        void OnDataContextChange();
+    }
+}

+ 3 - 1
CSharp/App/Modules/Tree/NodeDataEditor.xaml

@@ -4,10 +4,12 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:tree="clr-namespace:Tree"
-             mc:Ignorable="d" Height="220" Width="211" DataContextChanged="OnDataContextChanged">
+             mc:Ignorable="d" Height="220" Width="211" DataContextChanged="OnDataContextChanged"
+			 d:DataContext="{d:DesignInstance tree:TreeNodeViewModel}">
 	<UserControl.Resources>
 		<tree:ListToStringConverter x:Key="ListToStringConverter"/>
 	</UserControl.Resources>
+	
 	<Grid VerticalAlignment="Stretch">
 		<Grid.RowDefinitions>
 			<RowDefinition Height="*"/>

+ 35 - 6
CSharp/App/Modules/Tree/NodeDataEditor.xaml.cs

@@ -8,8 +8,10 @@ namespace Tree
     /// <summary>
     /// NodeDataEditor.xaml 的交互逻辑
     /// </summary>
-    public partial class NodeDataEditor: UserControl
+    public partial class NodeDataEditor : IEventNotifyView
     {
+        private NodeDataEditorViewModel nodeDataEditorViewModel;
+
         public NodeDataEditor()
         {
             this.InitializeComponent();
@@ -17,32 +19,59 @@ namespace Tree
             string[] nodeTypes = Enum.GetNames(typeof (NodeType));
             this.cbType.ItemsSource = nodeTypes;
         }
+       
+        public NodeDataEditorViewModel NodeDataEditorViewModel
+        {
+            get
+            {
+                return this.nodeDataEditorViewModel;
+            }
+            set
+            {
+                this.nodeDataEditorViewModel = value;
+                this.nodeDataEditorViewModel.EventNotifyView = this;
+                this.TreeNodeViewModel = this.nodeDataEditorViewModel.TreeNodeViewModel;
+            }
+        }
 
-        public TreeNodeViewModel ViewModel
+        public TreeNodeViewModel TreeNodeViewModel
         {
             get
             {
                 return this.DataContext as TreeNodeViewModel;
             }
+            set
+            {
+                this.DataContext = value;
+            }
+        }
+
+        public void OnDataContextChange()
+        {
+            this.DataContext = this.nodeDataEditorViewModel.TreeNodeViewModel;
         }
 
         private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
         {
-            if (this.ViewModel == null)
+            if (this.TreeNodeViewModel == null)
             {
                 return;
             }
-            this.cbType.SelectedIndex = EnumHelper.EnumIndex<NodeType>(this.ViewModel.Type);
+            this.cbType.SelectedIndex = EnumHelper.EnumIndex<NodeType>(this.TreeNodeViewModel.Type);
         }
 
         private void CbType_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
         {
+            if (this.TreeNodeViewModel == null)
+            {
+                return;
+            }
             if (this.cbType.SelectedValue == null)
             {
-                this.ViewModel.Type = 0;
+                this.TreeNodeViewModel.Type = 0;
                 return;
             }
-            this.ViewModel.Type =
+            this.TreeNodeViewModel.Type =
                     (int) Enum.Parse(typeof (NodeType), this.cbType.SelectedValue.ToString().Trim());
         }
     }

+ 31 - 0
CSharp/App/Modules/Tree/NodeDataEditorViewModel.cs

@@ -0,0 +1,31 @@
+using Microsoft.Practices.Prism.Mvvm;
+using Microsoft.Practices.Prism.PubSubEvents;
+
+namespace Tree
+{
+    public class NodeDataEditorViewModel: BindableBase
+    {
+        private IEventAggregator EventAggregator { get; set; }
+
+        public TreeNodeViewModel TreeNodeViewModel { get; set; }
+
+        public IEventNotifyView EventNotifyView { get; set; }
+
+        public NodeDataEditorViewModel()
+        {
+        }
+
+        public NodeDataEditorViewModel(IEventAggregator eventAggregator)
+        {
+            this.EventAggregator = eventAggregator;
+            this.EventAggregator.GetEvent<SelectNodeChangeEvent>().Subscribe(this.OnSelectNodeChange);
+        }
+
+        private void OnSelectNodeChange(TreeNodeViewModel treeNodeViewModel)
+        {
+            this.TreeNodeViewModel = treeNodeViewModel;
+            // 通知view层datacontext已经发生改变
+            this.EventNotifyView.OnDataContextChange();
+        }
+    }
+}

+ 7 - 0
CSharp/App/Modules/Tree/OneTreeData.cs

@@ -0,0 +1,7 @@
+
+namespace Tree
+{
+    public class OneTreeData
+    {
+    }
+}

+ 8 - 0
CSharp/App/Modules/Tree/SelectNodeChangeEvent.cs

@@ -0,0 +1,8 @@
+using Microsoft.Practices.Prism.PubSubEvents;
+
+namespace Tree
+{
+    public class SelectNodeChangeEvent: PubSubEvent<TreeNodeViewModel>
+    {
+    }
+}

+ 20 - 7
CSharp/App/Modules/Tree/Tree.csproj

@@ -85,11 +85,20 @@
     <Reference Include="WindowsBase" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="BehaviorTreeLayout.cs" />
-    <Compile Include="BehaviorTreeViewModel.cs" />
-    <Compile Include="BehaviorTreeModule.cs" />
-    <Compile Include="BehaviorTreeView.xaml.cs">
-      <DependentUpon>BehaviorTreeView.xaml</DependentUpon>
+    <Compile Include="IEventNotifyView.cs" />
+    <Compile Include="SelectNodeChangeEvent.cs" />
+    <Compile Include="TreeInfoViewModel.cs" />
+    <Compile Include="AllTreeViewModel.cs" />
+    <Compile Include="OneTreeData.cs" />
+    <Compile Include="TreeLayout.cs" />
+    <Compile Include="NodeDataEditorViewModel.cs" />
+    <Compile Include="TreeView.xaml.cs">
+      <DependentUpon>TreeView.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="TreeViewModel.cs" />
+    <Compile Include="TreeModule.cs" />
+    <Compile Include="AllTreeView.xaml.cs">
+      <DependentUpon>AllTreeView.xaml</DependentUpon>
     </Compile>
     <Compile Include="FolderVisiableConverter.cs" />
     <Compile Include="NodeTypeToStringConverter.cs" />
@@ -100,7 +109,7 @@
     </Compile>
     <Compile Include="NodeType.cs" />
     <Compile Include="TreeNodeData.cs" />
-    <Compile Include="TreeNodeDataArray.cs" />
+    <Compile Include="AllTreeData.cs" />
     <Compile Include="TreeNodeViewModel.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -111,7 +120,7 @@
     <None Include="Packages.config" />
   </ItemGroup>
   <ItemGroup>
-    <Page Include="BehaviorTreeView.xaml">
+    <Page Include="AllTreeView.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
@@ -119,6 +128,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="TreeView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\..\..\Platform\Helper\Helper.csproj">

+ 33 - 0
CSharp/App/Modules/Tree/TreeInfoViewModel.cs

@@ -0,0 +1,33 @@
+using System.ComponentModel.Composition;
+
+namespace Tree
+{
+    [Export(contractType: typeof(TreeInfoViewModel)), PartCreationPolicy(creationPolicy: CreationPolicy.NonShared)]
+    internal class TreeInfoViewModel
+    {
+        private int id;
+        private string comment;
+
+        public TreeInfoViewModel(int id, string comment)
+        {
+            this.id = id;
+            this.comment = comment;
+        }
+
+        public int Id
+        {
+            get
+            {
+                return this.id;
+            }
+        }
+
+        public string Comment
+        {
+            get
+            {
+                return this.comment;
+            }
+        }
+    }
+}

+ 1 - 1
CSharp/App/Modules/Tree/BehaviorTreeLayout.cs → CSharp/App/Modules/Tree/TreeLayout.cs

@@ -1,6 +1,6 @@
 namespace Tree
 {
-    public static class BehaviorTreeLayout
+    public static class TreeLayout
     {
         private const double XGap = 20;
         private const double YGap = 10;

+ 2 - 2
CSharp/App/Modules/Tree/BehaviorTreeModule.cs → CSharp/App/Modules/Tree/TreeModule.cs

@@ -3,8 +3,8 @@ using Microsoft.Practices.Prism.Modularity;
 
 namespace Tree
 {
-    [ModuleExport(moduleType: typeof (BehaviorTreeModule))]
-    public class BehaviorTreeModule: IModule
+    [ModuleExport(moduleType: typeof (TreeModule))]
+    public class TreeModule: IModule
     {
         public void Initialize()
         {

+ 7 - 1
CSharp/App/Modules/Tree/TreeNodeData.cs

@@ -45,9 +45,15 @@ namespace Tree
         }
 
         /// <summary>
-        /// 节点说明
+        /// 该节点属于哪颗树
         /// </summary>
         [DataMember(Order = 6)]
+        public int TreeId { get; set; }
+
+        /// <summary>
+        /// 节点说明
+        /// </summary>
+        [DataMember(Order = 7)]
         public string Comment { get; set; }
     }
 }

+ 0 - 44
CSharp/App/Modules/Tree/TreeNodeDataArray.cs

@@ -1,44 +0,0 @@
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-
-namespace Tree
-{
-    [DataContract]
-    public class TreeNodeDataArray
-    {
-        private readonly List<TreeNodeData> treeNodeDatas = new List<TreeNodeData>();
-
-        [DataMember(Order = 1)]
-        public List<TreeNodeData> TreeNodeDatas
-        {
-            get
-            {
-                return this.treeNodeDatas;
-            }
-        }
-
-        private readonly Dictionary<int, TreeNodeData> treeNodeDict =
-                new Dictionary<int, TreeNodeData>();
-
-        public void Init()
-        {
-            foreach (TreeNodeData nodeData in this.treeNodeDatas)
-            {
-                this.treeNodeDict[nodeData.Id] = nodeData;
-            }
-        }
-
-        public void Add(TreeNodeData treeNodeData)
-        {
-            this.treeNodeDatas.Add(treeNodeData);
-        }
-
-        public TreeNodeData this[int id]
-        {
-            get
-            {
-                return this.treeNodeDict[id];
-            }
-        }
-    }
-}

+ 29 - 48
CSharp/App/Modules/Tree/BehaviorTreeView.xaml → CSharp/App/Modules/Tree/TreeView.xaml

@@ -1,13 +1,12 @@
-<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-		xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-		xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-		xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-		xmlns:Tree="clr-namespace:Tree"
-		x:Class="Tree.BehaviorTreeView"
-		mc:Ignorable="d" 
-		d:DesignHeight="800" 
-		d:DesignWidth="1280" 
-		d:DataContext="{d:DesignInstance Tree:BehaviorTreeViewModel}">
+<UserControl x:Class="Tree.TreeView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:tree="clr-namespace:Tree"
+             mc:Ignorable="d"
+             d:DesignHeight="300" d:DesignWidth="300"
+			 d:DataContext="{d:DesignInstance tree:TreeViewModel}">
 	<UserControl.Resources>
 		<LinearGradientBrush x:Key="treeNodeSelectorFillBrush" StartPoint="0,0" EndPoint="0,1">
 			<GradientStop Color="White" Offset="0" />
@@ -30,36 +29,20 @@
 			<GradientStop Color="#FF06CBF7" Offset="0.6" />
 		</LinearGradientBrush>
 		<SolidColorBrush x:Key="treeNodeBorderBrush" Color="Black" />
-		<Tree:NodeTypeColorConverter x:Key="NodeTypeColorConverter"/>
-		<Tree:NodeTypeToStringConverter x:Key="NodeTypeToStringConverter"/>
-		<Tree:FolderVisiableConverter x:Key="FolderVisiableConverter"/>
-	</UserControl.Resources>
-
-	<UserControl.CommandBindings>
-		<CommandBinding Command="ApplicationCommands.New" Executed="MenuNode_New" />
-		<CommandBinding Command="ApplicationCommands.Delete" Executed="MenuNode_Delete" />
-		<CommandBinding Command="ApplicationCommands.Save" Executed="MenuNode_Save" />
-		<CommandBinding Command="ApplicationCommands.Open" Executed="MenuNode_Open" />
-	</UserControl.CommandBindings>
-
-	<UserControl.ContextMenu>
-		<ContextMenu>
-			<MenuItem Header="新建" Command="ApplicationCommands.New"
-					CommandTarget="{Binding Path=PlacementTarget, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
-			<MenuItem Header="删除" Command="ApplicationCommands.Delete"
-					CommandTarget="{Binding Path=PlacementTarget, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
-			<MenuItem Header="保存" Command="ApplicationCommands.Save"
-					CommandTarget="{Binding Path=PlacementTarget, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
-			<MenuItem Header="打开" Command="ApplicationCommands.Open"
-					CommandTarget="{Binding Path=PlacementTarget, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
-		</ContextMenu>
-	</UserControl.ContextMenu>
-	<Grid>
-		<Grid.ColumnDefinitions>
-			<ColumnDefinition Width="5*"/>
-			<ColumnDefinition Width="*"/>
-		</Grid.ColumnDefinitions>
-		<ListBox Name="listBox" SelectionMode="Single" ItemsSource="{Binding TreeNodes}">
+		
+		<tree:NodeTypeColorConverter x:Key="NodeTypeColorConverter"/>
+		<tree:NodeTypeToStringConverter x:Key="NodeTypeToStringConverter"/>
+		<tree:FolderVisiableConverter x:Key="FolderVisiableConverter"/>
+	</UserControl.Resources>
+	
+	<Grid>
+		<ListBox Name="listBox" SelectionMode="Single" ItemsSource="{Binding TreeNodes}" VerticalAlignment="Stretch">
+			<ListBox.ContextMenu>
+				<ContextMenu>
+					<MenuItem Header="新建" Click="MenuItem_New" />
+					<MenuItem Header="删除" Click="MenuItem_Delete" />
+				</ContextMenu>
+			</ListBox.ContextMenu>
 			<ListBox.Resources>
 				<Style TargetType="{x:Type ListBoxItem}">
 					<Setter Property="Canvas.Left" Value="{Binding X}" />
@@ -72,12 +55,13 @@
 				</ItemsPanelTemplate>
 			</ListBox.ItemsPanel>
 			<ListBox.ItemTemplate>
-				<DataTemplate DataType="Tree:TreeNodeViewModel">
+				<DataTemplate DataType="tree:TreeNodeViewModel">
 					<Canvas MouseDown="ListBoxItem_MouseDown" MouseUp="ListBoxItem_MouseUp" MouseMove="ListBoxItem_MouseMove"
 							PreviewMouseLeftButtonDown="ListBoxItem_PreviewMouseLeftButtonDown"
 							PreviewMouseLeftButtonUp="ListBoxItem_PreviewMouseLeftButtonUp">
 						<Rectangle Name="rectNode" Width="{Binding Width}" Height="{Binding Height}" Cursor="Hand" StrokeThickness="2"
-								RadiusX="10" RadiusY="10" Stroke="{StaticResource treeNodeBorderBrush}" Fill="{StaticResource treeNodeSelectorFillBrush}"/>
+								RadiusX="10" RadiusY="10" Stroke="{StaticResource treeNodeBorderBrush}" Fill="{StaticResource treeNodeSelectorFillBrush}">
+						</Rectangle>
 						<Label Content="+" Visibility="{Binding IsFolder, Converter={StaticResource FolderVisiableConverter}}" Canvas.Left="60" Canvas.Top="10"/>
 						<StackPanel>
 							<Label Content="{Binding Type, Converter={StaticResource NodeTypeToStringConverter}}"/>
@@ -108,9 +92,6 @@
 					</DataTemplate.Triggers>
 				</DataTemplate>
 			</ListBox.ItemTemplate>
-		</ListBox>
-		<StackPanel Grid.Column="1">
-			<Tree:NodeDataEditor x:Name="nodeDataEditor" />
-		</StackPanel>
-	</Grid>
-</UserControl>
+		</ListBox>
+	</Grid>
+</UserControl>

+ 57 - 70
CSharp/App/Modules/Tree/BehaviorTreeView.xaml.cs → CSharp/App/Modules/Tree/TreeView.xaml.cs

@@ -2,16 +2,14 @@
 using System.ComponentModel.Composition;
 using System.Windows;
 using System.Windows.Input;
-using Infrastructure;
 using Logger;
 
 namespace Tree
 {
     /// <summary>
-    /// BehaviorTreeView.xaml 的交互逻辑
+    /// TreeView.xaml 的交互逻辑
     /// </summary>
-    [ViewExport(RegionName = "BehaviorTreeRegion"), PartCreationPolicy(CreationPolicy.NonShared)]
-    public partial class BehaviorTreeView
+    public partial class TreeView
     {
         private const double DragThreshold = 5;
         private bool isDragging;
@@ -19,17 +17,16 @@ namespace Tree
         private Point origMouseDownPoint;
         private TreeNodeViewModel moveFromNode;
 
-        public BehaviorTreeView()
+        public TreeView()
         {
             this.InitializeComponent();
         }
 
-        [Import]
-        private BehaviorTreeViewModel ViewModel
+        public TreeViewModel TreeViewModel
         {
             get
             {
-                return this.DataContext as BehaviorTreeViewModel;
+                return this.DataContext as TreeViewModel;
             }
             set
             {
@@ -37,57 +34,6 @@ namespace Tree
             }
         }
 
-        private void MenuNode_New(object sender, ExecutedRoutedEventArgs e)
-        {
-            Point point = Mouse.GetPosition(this.listBox);
-
-            // one root node
-            if (this.ViewModel.TreeNodes.Count == 0)
-            {
-                var addTreeNode = new TreeNodeViewModel(point.X, point.Y)
-                {
-                    Type = (int) NodeType.Selector
-                };
-                this.ViewModel.Add(addTreeNode, null);
-            }
-            else
-            {
-                if (this.listBox.SelectedItem != null)
-                {
-                    var parentNode = this.listBox.SelectedItem as TreeNodeViewModel;
-                    var addTreeNode = new TreeNodeViewModel(parentNode)
-                    {
-                        Type = (int) NodeType.Selector
-                    };
-                    this.ViewModel.Add(addTreeNode, parentNode);
-                }
-            }
-            this.listBox.SelectedItem = null;
-            e.Handled = true;
-        }
-
-        private void MenuNode_Delete(object sender, ExecutedRoutedEventArgs e)
-        {
-            if (this.listBox.SelectedItem == null)
-            {
-                return;
-            }
-            var treeNodeViewModel = this.listBox.SelectedItem as TreeNodeViewModel;
-            this.ViewModel.Remove(treeNodeViewModel);
-            this.listBox.SelectedItem = null;
-            e.Handled = true;
-        }
-
-        private void MenuNode_Save(object sender, ExecutedRoutedEventArgs e)
-        {
-            this.ViewModel.Save("node.bytes");
-        }
-
-        private void MenuNode_Open(object sender, ExecutedRoutedEventArgs e)
-        {
-            this.ViewModel.Load("node.bytes");
-        }
-
         private void ListBoxItem_MouseDown(object sender, MouseButtonEventArgs e)
         {
             if (e.ChangedButton != MouseButton.Left)
@@ -98,15 +44,15 @@ namespace Tree
             // 双击鼠标
             if (e.ClickCount == 2 && e.ChangedButton == MouseButton.Left)
             {
-                var item = (FrameworkElement) sender;
+                var item = (FrameworkElement)sender;
                 var treeNodeViewModel = item.DataContext as TreeNodeViewModel;
                 if (treeNodeViewModel.IsFolder)
                 {
-                    this.ViewModel.UnFold(treeNodeViewModel);
+                    this.TreeViewModel.UnFold(treeNodeViewModel);
                 }
                 else
                 {
-                    this.ViewModel.Fold(treeNodeViewModel);
+                    this.TreeViewModel.Fold(treeNodeViewModel);
                 }
             }
             e.Handled = true;
@@ -120,7 +66,7 @@ namespace Tree
                 return;
             }
 
-            var item = (FrameworkElement) sender;
+            var item = (FrameworkElement)sender;
             var treeNodeViewModel = item.DataContext as TreeNodeViewModel;
 
             if (!this.isDragging)
@@ -137,7 +83,7 @@ namespace Tree
 
         private void ListBoxItem_MouseMove(object sender, MouseEventArgs e)
         {
-            var item = (FrameworkElement) sender;
+            var item = (FrameworkElement)sender;
             var treeNodeViewModel = item.DataContext as TreeNodeViewModel;
             if (treeNodeViewModel == null)
             {
@@ -158,7 +104,7 @@ namespace Tree
 
                 this.origMouseDownPoint = curMouseDownPoint;
 
-                this.ViewModel.MoveToPosition(dragDelta.X, dragDelta.Y);
+                this.TreeViewModel.MoveToPosition(dragDelta.X, dragDelta.Y);
                 return;
             }
 
@@ -182,13 +128,13 @@ namespace Tree
         private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
         {
             this.origMouseDownPoint = e.GetPosition(this);
-            var item = (FrameworkElement) sender;
+            var item = (FrameworkElement)sender;
             var treeNodeViewModel = item.DataContext as TreeNodeViewModel;
 
             this.listBox.SelectedItem = treeNodeViewModel;
             this.moveFromNode = treeNodeViewModel;
 
-            this.nodeDataEditor.DataContext = treeNodeViewModel;
+            this.TreeViewModel.SelectNodeChange(treeNodeViewModel);
         }
 
         private void ListBoxItem_PreviewMouseLeftButtonUp(object sender, MouseEventArgs e)
@@ -201,15 +147,56 @@ namespace Tree
             {
                 return;
             }
-            var item = (FrameworkElement) sender;
+            var item = (FrameworkElement)sender;
             var moveToNode = item.DataContext as TreeNodeViewModel;
             Log.Debug("move to node: {0} {1}", this.moveFromNode.Id, moveToNode.Id);
             if (this.moveFromNode.Id == moveToNode.Id)
             {
                 return;
             }
-            this.ViewModel.MoveToNode(this.moveFromNode, moveToNode);
+            this.TreeViewModel.MoveToNode(this.moveFromNode, moveToNode);
             this.moveFromNode = null;
         }
+
+        private void MenuItem_New(object sender, RoutedEventArgs e)
+        {
+            Point point = Mouse.GetPosition(this.listBox);
+
+            // one root node
+            if (this.TreeViewModel.TreeNodes.Count == 0)
+            {
+                var addTreeNode = new TreeNodeViewModel(point.X, point.Y)
+                {
+                    Type = (int)NodeType.Selector
+                };
+                this.TreeViewModel.Add(addTreeNode, null);
+            }
+            else
+            {
+                if (this.listBox.SelectedItem != null)
+                {
+                    var parentNode = this.listBox.SelectedItem as TreeNodeViewModel;
+                    var addTreeNode = new TreeNodeViewModel(parentNode)
+                    {
+                        Type = (int)NodeType.Selector
+                    };
+                    this.TreeViewModel.Add(addTreeNode, parentNode);
+                }
+            }
+            this.listBox.SelectedItem = null;
+            e.Handled = true;
+        }
+
+        private void MenuItem_Delete(object sender, RoutedEventArgs e)
+        {
+            if (this.listBox.SelectedItem == null)
+            {
+                return;
+            }
+            var treeNodeViewModel = this.listBox.SelectedItem as TreeNodeViewModel;
+            this.TreeViewModel.Remove(treeNodeViewModel);
+            this.listBox.SelectedItem = null;
+            e.Handled = true;
+        }
     }
-}
+}

+ 45 - 36
CSharp/App/Modules/Tree/BehaviorTreeViewModel.cs → CSharp/App/Modules/Tree/TreeViewModel.cs

@@ -2,16 +2,26 @@
 using System.ComponentModel.Composition;
 using System.IO;
 using Helper;
+using Microsoft.Practices.Prism.Mvvm;
+using Microsoft.Practices.Prism.PubSubEvents;
 
 namespace Tree
 {
-    [Export(contractType: typeof (BehaviorTreeViewModel)),
-     PartCreationPolicy(creationPolicy: CreationPolicy.NonShared)]
-    internal class BehaviorTreeViewModel
+    [Export(typeof (TreeViewModel)), PartCreationPolicy(CreationPolicy.NonShared)]
+    public class TreeViewModel: BindableBase
     {
+        public IEventAggregator EventAggregator { get; set; }
+
+        private AllTreeData allTreeData;
+
         private readonly ObservableCollection<TreeNodeViewModel> treeNodes =
                 new ObservableCollection<TreeNodeViewModel>();
 
+        public TreeViewModel(IEventAggregator eventAggregator)
+        {
+            this.EventAggregator = eventAggregator;
+        }
+
         public ObservableCollection<TreeNodeViewModel> TreeNodes
         {
             get
@@ -28,6 +38,11 @@ namespace Tree
             }
         }
 
+        public void SelectNodeChange(TreeNodeViewModel treeNodeViewModel)
+        {
+            this.EventAggregator.GetEvent<SelectNodeChangeEvent>().Publish(treeNodeViewModel);
+        }
+
         public void Add(TreeNodeViewModel treeNode, TreeNodeViewModel parent)
         {
             // 如果父节点是折叠的,需要先展开父节点
@@ -40,7 +55,7 @@ namespace Tree
             {
                 parent.Children.Add(treeNode);
             }
-            BehaviorTreeLayout.ExcuteLayout(this.Root);
+            TreeLayout.ExcuteLayout(this.Root);
         }
 
         private void RecursionRemove(TreeNodeViewModel treeNodeViewModel)
@@ -56,7 +71,7 @@ namespace Tree
         {
             this.RecursionRemove(treeNodeViewModel);
             treeNodeViewModel.Parent.Children.Remove(treeNodeViewModel);
-            BehaviorTreeLayout.ExcuteLayout(this.Root);
+            TreeLayout.ExcuteLayout(this.Root);
         }
 
         private void RecursionMove(
@@ -104,7 +119,7 @@ namespace Tree
             from.Parent.Children.Remove(from);
             to.Children.Add(from);
             from.Parent = to;
-            BehaviorTreeLayout.ExcuteLayout(this.Root);
+            TreeLayout.ExcuteLayout(this.Root);
         }
 
         /// <summary>
@@ -118,7 +133,7 @@ namespace Tree
                 this.RecursionRemove(node);
             }
             treeNodeViewModel.IsFolder = true;
-            BehaviorTreeLayout.ExcuteLayout(this.Root);
+            TreeLayout.ExcuteLayout(this.Root);
         }
 
         /// <summary>
@@ -132,7 +147,7 @@ namespace Tree
                 this.RecursionAdd(tn);
             }
             unFoldNode.IsFolder = false;
-            BehaviorTreeLayout.ExcuteLayout(this.Root);
+            TreeLayout.ExcuteLayout(this.Root);
         }
 
         private void RecursionAdd(TreeNodeViewModel treeNodeViewModel)
@@ -158,26 +173,25 @@ namespace Tree
         /// </summary>
         public void Save(string filePath)
         {
-            var treeNodeDataArray = new TreeNodeDataArray();
-            this.RecursionSave(treeNodeDataArray, this.Root);
-            byte[] bytes = ProtobufHelper.ToBytes(treeNodeDataArray);
-            using (Stream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
-            {
-                stream.Write(bytes, 0, bytes.Length);
-            }
+            //this.RecursionSave(treeNodeDataArray, this.Root);
+            //byte[] bytes = ProtobufHelper.ToBytes(treeNodeDataArray);
+            //using (Stream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
+            //{
+            //    stream.Write(bytes, 0, bytes.Length);
+            //}
         }
 
-        private void RecursionSave(TreeNodeDataArray treeNodeDataArray, TreeNodeViewModel node)
+        private void RecursionSave(AllTreeData allTreeData, TreeNodeViewModel node)
         {
-            if (node == null)
-            {
-                return;
-            }
-            treeNodeDataArray.Add(node.TreeNodeData);
-            foreach (TreeNodeViewModel childNode in node.Children)
-            {
-                this.RecursionSave(treeNodeDataArray, childNode);
-            }
+            //if (node == null)
+            //{
+            //    return;
+            //}
+            //allTreeData.Add(node.TreeNodeData);
+            //foreach (TreeNodeViewModel childNode in node.Children)
+            //{
+            //    this.RecursionSave(allTreeData, childNode);
+            //}
         }
 
         /// <summary>
@@ -188,27 +202,22 @@ namespace Tree
         {
             this.TreeNodes.Clear();
             byte[] bytes = File.ReadAllBytes(filePath);
-            var treeNodeDataArray = ProtobufHelper.FromBytes<TreeNodeDataArray>(bytes);
-            treeNodeDataArray.Init();
-            if (treeNodeDataArray.TreeNodeDatas.Count == 0)
-            {
-                return;
-            }
-            this.RecursionLoad(treeNodeDataArray, treeNodeDataArray.TreeNodeDatas[0], null);
+            this.allTreeData = ProtobufHelper.FromBytes<AllTreeData>(bytes);
+            allTreeData.Init();
         }
 
         private void RecursionLoad(
-                TreeNodeDataArray treeNodeDataArray, TreeNodeData treeNodeData,
+                AllTreeData allTreeData, TreeNodeData treeNodeData,
                 TreeNodeViewModel parentNode)
         {
             var node = new TreeNodeViewModel(treeNodeData, parentNode);
             this.Add(node, parentNode);
             foreach (int id in treeNodeData.Children)
             {
-                TreeNodeData childNodeData = treeNodeDataArray[id];
-                this.RecursionLoad(treeNodeDataArray, childNodeData, node);
+                TreeNodeData childNodeData = allTreeData[id];
+                this.RecursionLoad(allTreeData, childNodeData, node);
             }
-            BehaviorTreeLayout.ExcuteLayout(this.Root);
+            TreeLayout.ExcuteLayout(this.Root);
         }
     }
 }

+ 423 - 423
CSharp/CSharp.sln

@@ -1,423 +1,423 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30501.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{EAEF8202-B3F6-4F9B-9EFD-41C374433612}"
-	ProjectSection(SolutionItems) = preProject
-		.nuget\NuGet.Config = .nuget\NuGet.Config
-		.nuget\NuGet.exe = .nuget\NuGet.exe
-		.nuget\NuGet.targets = .nuget\NuGet.targets
-	EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform", "Platform", "{ADBF5F67-B480-4A93-9D50-C81856FC61A9}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "App", "App", "{6E9D97F0-4243-452E-B832-1A855B8118EB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Editor", "App\Editor\Editor.csproj", "{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robot", "App\Modules\Robot\Robot.csproj", "{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hooks", "Platform\Hooks\Hooks.csproj", "{3A98B35C-DEA8-489C-9203-263FFB6B065D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Infrastructure", "App\Infrastructure\Infrastructure.csproj", "{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{FD5F443E-CBEE-443E-821D-C47C86E09534}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtobufTool", "Tools\ProtobufTool\ProtobufTool.csproj", "{87537C92-B2C7-4E46-A6FB-02B73215C100}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Helper", "Platform\Helper\Helper.csproj", "{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ENetCpp", "Platform\ENetCpp\ENetCpp.vcxproj", "{C9992B7C-313E-4C9F-A954-640D01EDFB58}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENet", "Platform\ENet\ENet.csproj", "{D0B4CFAC-A368-4742-9863-68776CFA9938}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENetTest", "Platform\ENetTest\ENetTest.csproj", "{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BossClient", "App\BossClient\BossClient.csproj", "{8650195A-7904-4EBC-9D81-B392A7E9B9B3}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Login", "App\Modules\Login\Login.csproj", "{5AA48F9A-455D-4CD8-A605-A3AC38283E60}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BossBase", "App\BossBase\BossBase.csproj", "{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BossCommand", "App\BossCommand\BossCommand.csproj", "{6C16281F-5550-4024-9504-295C63889E4F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFClient", "App\Modules\WCFClient\WCFClient.csproj", "{B07D70E7-F902-4F67-A486-B7AF27D6B813}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{D0CC1FF4-2747-4278-A51F-BE9AA959175B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BehaviorTree", "Game\BehaviorTree\BehaviorTree.csproj", "{C4E7A34A-095C-4983-AB63-FC2D20CD6824}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BehaviorTreeTest", "Game\BehaviorTreeTest\BehaviorTreeTest.csproj", "{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "World", "Game\World\World.csproj", "{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorldTest", "Game\WorldTest\WorldTest.csproj", "{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logic", "Game\Logic\Logic.csproj", "{CB5BCF0A-4741-477A-94C6-49ECA782555F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Component", "Game\Component\Component.csproj", "{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tree", "App\Modules\Tree\Tree.csproj", "{6CD185D1-08E0-4729-A999-2D5B57BA8193}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENetExe", "Platform\ENetExe\ENetExe.csproj", "{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2814EB55-E1C2-4751-AC14-94116DA9D22B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logger", "Platform\Logger\Logger.csproj", "{72E16572-FC1F-4A9E-BC96-035417239298}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TNet", "Platform\TNet\TNet.csproj", "{B42D431A-3A54-4649-942A-C5356D7F9FBC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TNetTest", "Platform\TNetTest\TNetTest.csproj", "{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Debug|Mixed Platforms = Debug|Mixed Platforms
-		Debug|Win32 = Debug|Win32
-		Debug|x86 = Debug|x86
-		Release|Any CPU = Release|Any CPU
-		Release|Mixed Platforms = Release|Mixed Platforms
-		Release|Win32 = Release|Win32
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Mixed Platforms.Build.0 = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Win32.ActiveCfg = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Win32.Build.0 = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|x86.ActiveCfg = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|x86.Build.0 = Debug|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Any CPU.ActiveCfg = Release|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Mixed Platforms.Build.0 = Release|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Win32.ActiveCfg = Release|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Win32.Build.0 = Release|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|x86.ActiveCfg = Release|x86
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|x86.Build.0 = Release|x86
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Win32.ActiveCfg = Release|Any CPU
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|x86.ActiveCfg = Release|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Win32.ActiveCfg = Release|Any CPU
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|x86.ActiveCfg = Release|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Any CPU.Build.0 = Release|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Win32.ActiveCfg = Release|Any CPU
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|x86.ActiveCfg = Release|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Any CPU.Build.0 = Release|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Win32.ActiveCfg = Release|Any CPU
-		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|x86.ActiveCfg = Release|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Win32.ActiveCfg = Release|Any CPU
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|x86.ActiveCfg = Release|Any CPU
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Mixed Platforms.Build.0 = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Win32.Build.0 = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|x86.ActiveCfg = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|x86.Build.0 = Debug|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Any CPU.ActiveCfg = Release|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Mixed Platforms.ActiveCfg = Release|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Mixed Platforms.Build.0 = Release|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Win32.ActiveCfg = Release|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Win32.Build.0 = Release|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|x86.ActiveCfg = Release|Win32
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|x86.Build.0 = Release|Win32
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Win32.ActiveCfg = Release|Any CPU
-		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|x86.ActiveCfg = Release|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Win32.ActiveCfg = Release|Any CPU
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|x86.ActiveCfg = Release|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Win32.ActiveCfg = Release|Any CPU
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|x86.ActiveCfg = Release|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Win32.ActiveCfg = Release|Any CPU
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|x86.ActiveCfg = Release|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Win32.ActiveCfg = Release|Any CPU
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|x86.ActiveCfg = Release|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Win32.ActiveCfg = Release|Any CPU
-		{6C16281F-5550-4024-9504-295C63889E4F}.Release|x86.ActiveCfg = Release|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Win32.ActiveCfg = Release|Any CPU
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|x86.ActiveCfg = Release|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Win32.ActiveCfg = Release|Any CPU
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|x86.ActiveCfg = Release|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Any CPU.Build.0 = Release|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Win32.ActiveCfg = Release|Any CPU
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|x86.ActiveCfg = Release|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Win32.ActiveCfg = Release|Any CPU
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|x86.ActiveCfg = Release|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Win32.ActiveCfg = Release|Any CPU
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|x86.ActiveCfg = Release|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Win32.ActiveCfg = Release|Any CPU
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|x86.ActiveCfg = Release|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Win32.ActiveCfg = Release|Any CPU
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|x86.ActiveCfg = Release|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Win32.ActiveCfg = Release|Any CPU
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|x86.ActiveCfg = Release|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Any CPU.Build.0 = Release|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Win32.ActiveCfg = Release|Any CPU
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|x86.ActiveCfg = Release|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Any CPU.Build.0 = Release|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Win32.ActiveCfg = Release|Any CPU
-		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|x86.ActiveCfg = Release|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Win32.ActiveCfg = Release|Any CPU
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|x86.ActiveCfg = Release|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Win32.ActiveCfg = Release|Any CPU
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|x86.ActiveCfg = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
-		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
-		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
-		{3A98B35C-DEA8-489C-9203-263FFB6B065D} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
-		{87537C92-B2C7-4E46-A6FB-02B73215C100} = {FD5F443E-CBEE-443E-821D-C47C86E09534}
-		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{C9992B7C-313E-4C9F-A954-640D01EDFB58} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{D0B4CFAC-A368-4742-9863-68776CFA9938} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{8650195A-7904-4EBC-9D81-B392A7E9B9B3} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
-		{5AA48F9A-455D-4CD8-A605-A3AC38283E60} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
-		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
-		{6C16281F-5550-4024-9504-295C63889E4F} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
-		{B07D70E7-F902-4F67-A486-B7AF27D6B813} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
-		{C4E7A34A-095C-4983-AB63-FC2D20CD6824} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
-		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
-		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
-		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
-		{CB5BCF0A-4741-477A-94C6-49ECA782555F} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
-		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
-		{6CD185D1-08E0-4729-A999-2D5B57BA8193} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
-		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{72E16572-FC1F-4A9E-BC96-035417239298} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{B42D431A-3A54-4649-942A-C5356D7F9FBC} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
-	EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30501.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{EAEF8202-B3F6-4F9B-9EFD-41C374433612}"
+	ProjectSection(SolutionItems) = preProject
+		.nuget\NuGet.Config = .nuget\NuGet.Config
+		.nuget\NuGet.exe = .nuget\NuGet.exe
+		.nuget\NuGet.targets = .nuget\NuGet.targets
+	EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform", "Platform", "{ADBF5F67-B480-4A93-9D50-C81856FC61A9}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "App", "App", "{6E9D97F0-4243-452E-B832-1A855B8118EB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Editor", "App\Editor\Editor.csproj", "{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robot", "App\Modules\Robot\Robot.csproj", "{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hooks", "Platform\Hooks\Hooks.csproj", "{3A98B35C-DEA8-489C-9203-263FFB6B065D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Infrastructure", "App\Infrastructure\Infrastructure.csproj", "{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{FD5F443E-CBEE-443E-821D-C47C86E09534}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtobufTool", "Tools\ProtobufTool\ProtobufTool.csproj", "{87537C92-B2C7-4E46-A6FB-02B73215C100}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Helper", "Platform\Helper\Helper.csproj", "{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ENetCpp", "Platform\ENetCpp\ENetCpp.vcxproj", "{C9992B7C-313E-4C9F-A954-640D01EDFB58}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENet", "Platform\ENet\ENet.csproj", "{D0B4CFAC-A368-4742-9863-68776CFA9938}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENetTest", "Platform\ENetTest\ENetTest.csproj", "{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BossClient", "App\BossClient\BossClient.csproj", "{8650195A-7904-4EBC-9D81-B392A7E9B9B3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Login", "App\Modules\Login\Login.csproj", "{5AA48F9A-455D-4CD8-A605-A3AC38283E60}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BossBase", "App\BossBase\BossBase.csproj", "{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BossCommand", "App\BossCommand\BossCommand.csproj", "{6C16281F-5550-4024-9504-295C63889E4F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFClient", "App\Modules\WCFClient\WCFClient.csproj", "{B07D70E7-F902-4F67-A486-B7AF27D6B813}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Game", "Game", "{D0CC1FF4-2747-4278-A51F-BE9AA959175B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BehaviorTree", "Game\BehaviorTree\BehaviorTree.csproj", "{C4E7A34A-095C-4983-AB63-FC2D20CD6824}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BehaviorTreeTest", "Game\BehaviorTreeTest\BehaviorTreeTest.csproj", "{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "World", "Game\World\World.csproj", "{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorldTest", "Game\WorldTest\WorldTest.csproj", "{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logic", "Game\Logic\Logic.csproj", "{CB5BCF0A-4741-477A-94C6-49ECA782555F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Component", "Game\Component\Component.csproj", "{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tree", "App\Modules\Tree\Tree.csproj", "{6CD185D1-08E0-4729-A999-2D5B57BA8193}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ENetExe", "Platform\ENetExe\ENetExe.csproj", "{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2814EB55-E1C2-4751-AC14-94116DA9D22B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logger", "Platform\Logger\Logger.csproj", "{72E16572-FC1F-4A9E-BC96-035417239298}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TNet", "Platform\TNet\TNet.csproj", "{B42D431A-3A54-4649-942A-C5356D7F9FBC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TNetTest", "Platform\TNetTest\TNetTest.csproj", "{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Win32.ActiveCfg = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Win32.Build.0 = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|x86.ActiveCfg = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|x86.Build.0 = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Any CPU.ActiveCfg = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Mixed Platforms.Build.0 = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Win32.ActiveCfg = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Win32.Build.0 = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|x86.ActiveCfg = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|x86.Build.0 = Release|x86
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|x86.ActiveCfg = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Win32.ActiveCfg = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|x86.ActiveCfg = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Win32.ActiveCfg = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|x86.ActiveCfg = Release|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Any CPU.Build.0 = Release|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|Win32.ActiveCfg = Release|Any CPU
+		{87537C92-B2C7-4E46-A6FB-02B73215C100}.Release|x86.ActiveCfg = Release|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|Win32.ActiveCfg = Release|Any CPU
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB}.Release|x86.ActiveCfg = Release|Any CPU
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|Win32.Build.0 = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|x86.ActiveCfg = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Debug|x86.Build.0 = Debug|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Any CPU.ActiveCfg = Release|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Win32.ActiveCfg = Release|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|Win32.Build.0 = Release|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|x86.ActiveCfg = Release|Win32
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58}.Release|x86.Build.0 = Release|Win32
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Win32.ActiveCfg = Release|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|x86.ActiveCfg = Release|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|Win32.ActiveCfg = Release|Any CPU
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D}.Release|x86.ActiveCfg = Release|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|Win32.ActiveCfg = Release|Any CPU
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3}.Release|x86.ActiveCfg = Release|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60}.Release|x86.ActiveCfg = Release|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|Win32.ActiveCfg = Release|Any CPU
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB}.Release|x86.ActiveCfg = Release|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{6C16281F-5550-4024-9504-295C63889E4F}.Release|x86.ActiveCfg = Release|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|Win32.ActiveCfg = Release|Any CPU
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813}.Release|x86.ActiveCfg = Release|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|Win32.ActiveCfg = Release|Any CPU
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824}.Release|x86.ActiveCfg = Release|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|Win32.ActiveCfg = Release|Any CPU
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236}.Release|x86.ActiveCfg = Release|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0}.Release|x86.ActiveCfg = Release|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|Win32.ActiveCfg = Release|Any CPU
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67}.Release|x86.ActiveCfg = Release|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F}.Release|x86.ActiveCfg = Release|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE}.Release|x86.ActiveCfg = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Win32.ActiveCfg = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|x86.ActiveCfg = Release|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749}.Release|x86.ActiveCfg = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Any CPU.Build.0 = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Win32.ActiveCfg = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|x86.ActiveCfg = Release|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|Win32.ActiveCfg = Release|Any CPU
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC}.Release|x86.ActiveCfg = Release|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|Win32.ActiveCfg = Release|Any CPU
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A}.Release|x86.ActiveCfg = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
+		{87537C92-B2C7-4E46-A6FB-02B73215C100} = {FD5F443E-CBEE-443E-821D-C47C86E09534}
+		{24233CD5-A5DF-484B-A482-B79CB7A0D9CB} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{C9992B7C-313E-4C9F-A954-640D01EDFB58} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{D0B4CFAC-A368-4742-9863-68776CFA9938} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{901A8E5C-C4C6-4C3C-8E18-068D75119F5D} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{8650195A-7904-4EBC-9D81-B392A7E9B9B3} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
+		{5AA48F9A-455D-4CD8-A605-A3AC38283E60} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
+		{999910D3-4E7D-45B1-BD2C-47289CD4D1AB} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
+		{6C16281F-5550-4024-9504-295C63889E4F} = {6E9D97F0-4243-452E-B832-1A855B8118EB}
+		{B07D70E7-F902-4F67-A486-B7AF27D6B813} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
+		{C4E7A34A-095C-4983-AB63-FC2D20CD6824} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
+		{DD6F4735-E8E2-4F10-AE2B-434AB3A40236} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
+		{CBEDBE33-A883-4BFA-AE0A-8B3573F09BD0} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
+		{F2BEB8B2-0D9B-4CD9-A4BD-AE8E00903A67} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
+		{CB5BCF0A-4741-477A-94C6-49ECA782555F} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
+		{0FA529D1-D0A9-4A8E-90F5-117CE80F2EDE} = {D0CC1FF4-2747-4278-A51F-BE9AA959175B}
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193} = {C4C64188-4FAE-4CC3-A9E6-D9D4AF7429B6}
+		{CBA52DC8-1C80-4A79-9AC5-73514EBBD749} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{72E16572-FC1F-4A9E-BC96-035417239298} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{B42D431A-3A54-4649-942A-C5356D7F9FBC} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+		{F176D1FA-63E5-4B89-9A03-D44CCCCC069A} = {ADBF5F67-B480-4A93-9D50-C81856FC61A9}
+	EndGlobalSection
+EndGlobal

+ 1 - 0
CSharp/CSharp.sln.DotSettings

@@ -5,6 +5,7 @@
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CheckNamespace/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertIfStatementToReturnStatement/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertToAutoProperty/@EntryIndexedValue">DO_NOT_SHOW</s:String>
+	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertToAutoPropertyWithPrivateSetter/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=DelegateSubtraction/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ForCanBeConvertedToForeach/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ImplicitlyCapturedClosure/@EntryIndexedValue">DO_NOT_SHOW</s:String>