Browse Source

1.调度增加串行,以及修改liftpin报警

JET-YDB\JET-YANGDB 1 week ago
parent
commit
9ef63100bb

BIN
VirgoRT/Config/DeviceModelVirgo_R.xml


+ 21 - 21
VirgoRT/Config/System.sccfg

@@ -12,19 +12,19 @@
 		<config default="3" name="SmallWafer" nameView="Small Wafer" description="Small Wafer" max="100" min="0" paramter="" tag="" unit="" visible="false" type="Integer" />
 		<config default="4" name="MidWafer" nameView="Mid Wafer" description="Mid Wafer" max="100" min="0" paramter="" tag="" unit="" visible="false" type="Integer" />
 		<config default="6" name="BigWafer" nameView="Big Wafer" description="Big Wafer" max="100" min="0" paramter="" tag="" unit="" visible="false" type="Integer" />
-		<config default="LP1,LP2,EfemRobot,EFEM,Aligner1,Buffer,PMA,PMB,Flipper" name="InstalledModules" description="Installed modules" max="" min="" paramter="" tag="" unit="" visible="false" type="String" />
+		<config default="LP1,LP2,EfemRobot,EFEM,Aligner1,Buffer,PMA,PMB" name="InstalledModules" description="Installed modules" max="" min="" paramter="" tag="" unit="" visible="false" type="String" />
 		<config default="2" name="MaxInternalWaferCount" nameView="Max Internal wafer count" description="Max Internal wafer count" max="25" min="1" paramter="" tag="" unit="" visible="false" type="Integer" />
 		<!--<config default="30" name="DefaultCoolingTime" nameView="Default Cooling Time" description="Default Cooling Time" max="300" min="1" paramter="" tag="" unit="s" type="Integer" />-->
 		<config default="Default" name="LogFilePath"  nameView="LogFilePath"  description="Log File Path" max="" min="" paramter="" tag=""  unit="" visible="false"  type="String" />
 		<config default="true" name="RecipeFolderByType" nameView="Recipe File Saved In Folder Process or Clean" description="Recipe file saved in process or clean folders" max="0" min="0" paramter="" tag="" unit="" type="Bool" visible="false"/>
     <config default="false" name="IsIgnoreCDAPressure2Alarm" nameView="IsIgnoreCDAPressure2Alarm" description="Is Ignore CDAPressure2 Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
-    <config default="0" name="ChamberType"  nameView="Chamber Mode" description="0=>VirgoMask,1=>VirgoR" max="10" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
+    <config default="1" name="ChamberType"  nameView="Chamber Mode" description="0=>VirgoMask,1=>VirgoR" max="10" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
     <config default="false" name="Recipetolerance" nameView="Recipetolerance" description="Recipe tolerance" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
 
     <config default="false" name="EnableSignalTowerLog" nameView="EnableSignalTowerLog" description="Enable Signal Tower Log" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
 
 		<configs name="SetUp" nameView="Set Up" visible="false">
-			<config default="true" name="EPDInstalled" nameView="Is EPD installed" description="Is EPD installed" max="" min="" paramter="" tag="" unit="" type="Bool" />
+			<config default="false" name="EPDInstalled" nameView="Is EPD installed" description="Is EPD installed" max="" min="" paramter="" tag="" unit="" type="Bool" />
 		</configs>
 
 		<configs name="EndPoint" nameView="EndPoint" visible="false">
@@ -144,7 +144,7 @@
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="°C" type="Integer" />
 		<config default="false" name="EnableWallHeater" nameView="Enable Chamber Wall Heater" description="" max="" min="" paramter="" tag="" unit="" type="Bool" />
 		<config default="false" name="EnableGridHeater" nameView="Enable Chamber Grid Heater" description="" max="" min="" paramter="" tag="" unit="" type="Bool" />
-		<config default="0" name="LiftPinMode" nameView="LiftPin Mode" description="liftpin: 0-cylinderliftpin,1-single axis servo liftpin 2-double Axis servo liftpin 4-two double Axis servo liftpin" max="99" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
+		<config default="4" name="LiftPinMode" nameView="LiftPin Mode" description="liftpin: 0-cylinderliftpin,1-single axis servo liftpin 2-double Axis servo liftpin 4-two double Axis servo liftpin" max="99" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
 		<config default="PortU" name="BrooksPortName" nameView="Brooks EFEM Port Name" description="Brooks EFEM Port Name of PMA" max="" min="" paramter="" tag="" unit="" type="String" visible="false"/>
 		<config default="false" name="EnableResetError" nameView="Enable Reset Chamber Error by Click Reset Button" description="" max="1" min="0" paramter="" tag="" unit="" type="Bool" visible="false"/>
     <config default="false" name="ScrubberIsInstalled" nameView="Is Scrubber Installed"  description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" visible="false"/>
@@ -166,7 +166,7 @@
 		</configs>
 
 		<configs name="Chiller" nameView="Chiller" visible="false">
-			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" visible="false"/>
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" visible="false"/>
 			<!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
 			<config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:SMC;" max="10" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
@@ -178,7 +178,7 @@
       <config default="0" name="CoolantOutletTcFeedbackOffset" nameView="Coolant Outlet Tc Feedback Offset" description="" max="5" min="-5" paramter="" tag="" unit="℃" type="Double" visible="false"/>
 		</configs>
     <configs name="GridChiller" nameView="Grid Chiller" visible="false">
-      <config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" visible="false"/>
+      <config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" visible="false"/>
       <!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
       <config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:SMC;" max="10" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
       <config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
@@ -192,14 +192,14 @@
 		<configs name="DryPump" nameView="Dry Pump">
 			<config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM13" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM32" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1000" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" visible="false"/>
 			<config default="20" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="Rf" nameView="Source RF" >
 			<config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM14" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM38" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="EFEM IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="PowerAlarmRange" nameView="Power Alarm Range" description="" max="1000" min="0" paramter="" tag="" unit="W" type="Double" />
 			<config default="10" name="PowerAlarmTime" nameView="Power Alarm Time" description="" max="10" min="0" paramter="" tag="" unit="s" type="Double" />
@@ -236,7 +236,7 @@
 		</configs>
 
 		<configs name="BiasRf" nameView="Bias RF" visible="false" >
-			<config default="true" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="false" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="2" name="MFG" nameView="MFG" description="Manufacturer, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="2" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="COM14" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -488,10 +488,10 @@
 
 
 		<configs name="EPD" nameView="EPD Setting" visible="false">
-			<config default="true" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="false" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="0" name="ChannelNumber" nameView="EPD Channel Number" description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-    <configs name="TriStateLiftPin2" nameView="Group TriState LiftPin Setting" visible="true">
+    <configs name="TriStateLiftPin2" nameView="Group TriState LiftPin Setting" visible="false">
       <config default="1" name="ServoWorkMode" nameView="Lift Servo Work Mode" description="Lift Servo Work Mode" max="1000" min="0"  paramter="" tag="" unit="" type="Double" visible="false"/>
       <config default="3" name="OriginSpeed" nameView="Lift Servo Origin Speed" description="Lift Servo Origin speed" max="30" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
       <config default="5" name="AutoSpeed" nameView="Lift Servo Auto Speed" description="Lift Servo Auto speed" max="30" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
@@ -504,7 +504,7 @@
       <config default="0" name="Position3" nameView="Lift Servo Position3" description="Lift Servo Position3" max="1000" min="-100"  paramter="" tag="" unit="mm" type="Double" />
       <config default="0" name="PosDiff" nameView="Lift Servo Pos Diff" description="Lift Servo Pos Diff" max="5" min="0"  paramter="" tag="" unit="mm" type="Double" />
     </configs>
-    <configs name="TriStateLiftPin4" nameView="Double Group TriState LiftPin Setting" visible="false">
+    <configs name="TriStateLiftPin4" nameView="Double Group TriState LiftPin Setting" visible="true">
       <config default="5" name="AutoSpeed" nameView="Lift Servo Auto Speed" description="Lift Servo Auto speed" max="100" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
       <config default="2" name="ManualSpeed" nameView="Lift Servo Manual Speed" description="Lift Servo manual speed" max="10" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
       <config default="200" name="AccOrDecTime" nameView="Lift Servo Acc or Dec  Time" description="Lift Servo Acc or Dec time" max="1000" min="0"  paramter="" tag="" unit="ms" type="Double" />
@@ -553,7 +553,7 @@
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="℃" type="Integer" />
 		<config default="false" name="EnableWallHeater" nameView="Enable Chamber Wall Heater" description="" max="" min="" paramter="" tag="" unit="" type="Bool" />
 		<config default="false" name="EnableGridHeater" nameView="Enable Chamber Grid Heater" description="" max="" min="" paramter="" tag="" unit="" type="Bool" />
-    <config default="0" name="LiftPinMode" nameView="LiftPin Mode" description="liftpin: 0-cylinderliftpin,1-single axis servo liftpin 2-double Axis servo liftpin  4-two double Axis servo liftpin" max="99" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
+    <config default="4" name="LiftPinMode" nameView="LiftPin Mode" description="liftpin: 0-cylinderliftpin,1-single axis servo liftpin 2-double Axis servo liftpin  4-two double Axis servo liftpin" max="99" min="0" paramter="" tag="" unit="" type="Integer" visible="false"/>
 		<config default="PortV" name="BrooksPortName" nameView="Brooks EFEM Port Name" description="Brooks EFEM Port Name of PMB" max="" min="" paramter="" tag="" unit="" type="String" visible="false"/>
 		<config default="false" name="EnableResetError" nameView="Enable Reset Chamber Error by Click Reset Button" description="" max="1" min="0" paramter="" tag="" unit="" type="Bool" visible="false"/>
     <config default="false" name="ScrubberIsInstalled" nameView="Is Scrubber Installed"  description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" visible="false"/>
@@ -575,7 +575,7 @@
 
 		<configs name="Chiller" nameView="Chiller" visible="false">
 			<config default="false" name="ChillerSameWithPMA" nameView="Chiller Same With PMA" description="enable chiller same with PMA or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:SMC;" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="COM22" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -587,7 +587,7 @@
 		</configs>
     
     <configs name="GridChiller" nameView="Grid Chiller" visible="false">
-      <config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+      <config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
       <!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
       <config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:SMC;" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
       <config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -602,14 +602,14 @@
 		<configs name="DryPump" nameView="Dry Pump">
 			<config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM23" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM34" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1000" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" visible="false"/>
 			<config default="20" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="Rf" nameView="Source RF" >
 			<config default="1" name="MFG" nameView="MFG" description="Manufacturer, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM24" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM36" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="127.0.0.1:502" name="IPAddress" nameView="IP Address" description="EFEM IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="PowerAlarmRange" nameView="Power Alarm Range" description="" max="1000" min="0" paramter="" tag="" unit="W" type="Double" />
 			<config default="10" name="PowerAlarmTime" nameView="Power Alarm Time" description="" max="10" min="0" paramter="" tag="" unit="s" type="Double" />
@@ -645,7 +645,7 @@
       <config default="10" name="MatchPositionC2" nameView="Match Position C2" description="" max="100" min="0" paramter="" tag="" unit="" type="Double" />-->
 		</configs>
 			<configs name="BiasRf" nameView="Bias RF" visible="false">
-			<config default="true" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="false" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="2" name="MFG" nameView="MFG" description="Manufacturer, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="2" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="COM14" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -898,10 +898,10 @@
 		</configs>
 
 		<configs name="EPD" nameView="EPD Setting" visible="false">
-			<config default="true" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
+			<config default="false" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="1" name="ChannelNumber" nameView="EPD Channel Number" description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-    <configs name="TriStateLiftPin2" nameView="Group TriState LiftPin Setting" visible="true">
+    <configs name="TriStateLiftPin2" nameView="Group TriState LiftPin Setting" visible="false">
       <config default="1" name="ServoWorkMode" nameView="Lift Servo Work Mode" description="Lift Servo Work Mode" max="1000" min="0"  paramter="" tag="" unit="" type="Double" visible="false"/>
       <config default="3" name="OriginSpeed" nameView="Lift Servo Origin Speed" description="Lift Servo Origin speed" max="30" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
       <config default="5" name="AutoSpeed" nameView="Lift Servo Auto Speed" description="Lift Servo Auto speed" max="30" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
@@ -914,7 +914,7 @@
       <config default="0" name="Position3" nameView="Lift Servo Position3" description="Lift Servo Position3" max="1000" min="-100"  paramter="" tag="" unit="mm" type="Double" />
       <config default="0" name="PosDiff" nameView="Lift Servo Pos Diff" description="Lift Servo Pos Diff" max="5" min="0"  paramter="" tag="" unit="mm" type="Double" />
     </configs>
-    <configs name="TriStateLiftPin4" nameView="Double Group TriState LiftPin Setting" visible="false">
+    <configs name="TriStateLiftPin4" nameView="Double Group TriState LiftPin Setting" visible="true">
       <config default="5" name="AutoSpeed" nameView="Lift Servo Auto speed" description="Lift Servo Auto speed" max="100" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
       <config default="2" name="ManualSpeed" nameView="Lift Servo manual speed" description="Lift Servo manual speed" max="10" min="0"  paramter="" tag="" unit="mm/s" type="Double" />
       <config default="200" name="AccOrDecTime" nameView="Lift Servo Acc or Dec  time" description="Lift Servo Acc or Dec time" max="1000" min="0"  paramter="" tag="" unit="ms" type="Double" />

+ 2 - 0
VirgoRT/Devices/IODevices/IoTriStateLift4.cs

@@ -291,6 +291,7 @@ namespace VirgoRT.Devices
         }
         public bool GoPosition(Position position)
         {
+            Reset();
             if (_diABSAlarm.Value)
                 return false;
 
@@ -617,6 +618,7 @@ namespace VirgoRT.Devices
         {
 
         }
+
         public void Monitor()
         {
             if (_manualStopTimer.ElapsedMilliseconds > _stopButtonAutoResetTime)

+ 10 - 2
VirgoRT/Devices/JetPM.cs

@@ -468,12 +468,17 @@ namespace VirgoRT.Devices
                 return true;
             });
 
-            if (IsWLK && IO.DI[$"{ModuleName.PMA}.DI_EFEM_Water_Leak_Sensor"].Value)
+            if (_ChamberType == (int)JetChamber.VirgoMask && IsWLK && IO.DI[$"{ModuleName.PMA}.DI_EFEM_Water_Leak_Sensor"].Value)
             {
                 IO.DO[$"{ModuleName.PMA}.DO_EV5_Water_Valve"].Value = true;
                 IO.DO[$"{ModuleName.PMB}.DO_EV5_Water_Valve"].Value = true;
                 LOG.Info($"{Module} DO_EV5_Water_Valve sensor on");
             }
+            else if (_ChamberType == (int)JetChamber.VirgoR && IsWLK && _WaterValve != null)
+            {
+                _WaterValve.TurnValve(true, out _);
+                LOG.Info($"{Module} DO_Water_Valve_On sensor on");
+            }
 
             DATA.Subscribe($"{Name}.IoTemperatureCtrl.TemperatureControl.SubstrateTemperature", () => SubstrateTempFB);
             DATA.Subscribe($"{Module}.WaferSize", () => WaferManager.Instance.GetWafer(Module, 0).Size.ToString());
@@ -512,9 +517,12 @@ namespace VirgoRT.Devices
             _SubstrateTemperature?.SetMessager(SC.GetValue<int>($"{Module}.SubstrateTemperatureTCTMDiff"));
             _ForelineTemperature?.SetMessager(SC.GetValue<int>($"{Module}.ForelineTemperatureTCTMDiff"));
             _CHBWallTemperature?.SetMessager(SC.GetValue<int>($"{Module}.CHBWallTemperatureTCTMDiff"));
+            //_ResetPlcSignal?.Reset();
+        }
+        public void ResetPlcSignal()
+        {
             _ResetPlcSignal?.Reset();
         }
-
         public void SetSlitDoor(bool open, out string reason)
         {
             reason = string.Empty;

+ 98 - 11
VirgoRT/Modules/AutoTransfer_T.cs

@@ -134,6 +134,8 @@ namespace VirgoRT.Modules
         private SchedulerFACallback _faCallback;
         private SchedulerDBCallback _dbCallback;
 
+        private bool _isRunningInParallelMode;
+
         MoveAction _curAction = new MoveAction();
 
         public AutoTransfer_T()
@@ -197,6 +199,7 @@ namespace VirgoRT.Modules
             }
 
             _maxBufferWaferCount = SC.GetValue<int>("EFEM.Buffer.SlotNumber") / 2;
+            _isRunningInParallelMode = SC.GetValue<bool>("Scheduler.IsRunInParallelMode");
         }
 
         private void InitModules()
@@ -1133,6 +1136,9 @@ namespace VirgoRT.Modules
                         break;
                     }
                 }
+
+                if (!_isRunningInParallelMode)
+                    break;
             }
         }
 
@@ -1232,31 +1238,112 @@ namespace VirgoRT.Modules
             if (GetSystemInnerWaferCount() >= SystemInternalWaferCount || GetBufferWaferCount() > _maxBufferWaferCount)
                 return new SlotItem(ModuleName.System, -1);
 
+            if (!_isRunningInParallelMode)
+            {
+                foreach (var cj in _lstControlJobs)
+                {
+                    if (lpModule != ModuleName.System && (cj.Module != lpModule.ToString()))
+                        continue;
+
+                    if (cj.State == EnumControlJobState.Executing)
+                    {
+                        foreach (var pj in _lstProcessJobs)
+                        {
+                            if (pj.ControlJobName == cj.Name && pj.State == EnumProcessJobState.Processing)
+                            {
+                                foreach (var pjSlotWafer in pj.SlotWafers)
+                                {
+                                    if (CheckWaferNeedProcessAndPMAvailable(pjSlotWafer.Item1, pjSlotWafer.Item2))
+                                    {
+                                        return new SlotItem(pjSlotWafer.Item1, pjSlotWafer.Item2);
+                                    }
+
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            //parallel mode 
+            Dictionary<string, SlotItem> pjWafer = new Dictionary<string, SlotItem>();
+            Dictionary<string, List<ModuleName>> pmUsed = new Dictionary<string, List<ModuleName>>();
+
             foreach (var cj in _lstControlJobs)
             {
-                if (lpModule != ModuleName.System && (cj.Module != lpModule.ToString()))
+                if (cj.State != EnumControlJobState.Executing)
                     continue;
 
-                if (cj.State == EnumControlJobState.Executing)
+                foreach (var pj in _lstProcessJobs)
                 {
-                    foreach (var pj in _lstProcessJobs)
+                    if (pj.ControlJobName == cj.Name && pj.State == EnumProcessJobState.Processing)
                     {
-                        if (pj.ControlJobName == cj.Name && pj.State == EnumProcessJobState.Processing)
+                        foreach (var pjSlotWafer in pj.SlotWafers)
                         {
-                            foreach (var pjSlotWafer in pj.SlotWafers)
+                            if (CheckWaferNeedProcessAndPMAvailable(pjSlotWafer.Item1, pjSlotWafer.Item2))
                             {
-                                if (CheckWaferNeedProcessAndPMAvailable(pjSlotWafer.Item1, pjSlotWafer.Item2))
-                                {
-                                    return new SlotItem(pjSlotWafer.Item1, pjSlotWafer.Item2);
-                                }
-                                    
+                                pjWafer[pj.Name] = new SlotItem(pjSlotWafer.Item1, pjSlotWafer.Item2);
+                                break;
                             }
                         }
                     }
                 }
             }
 
-            return new SlotItem(ModuleName.System, -1);
+            if (pjWafer.Count == 0)
+                return null;
+
+            if (pjWafer.Count == 1)
+            {
+                return pjWafer.Values.First().Module != lpModule ? new SlotItem(ModuleName.System, -1) : pjWafer.Values.First();
+            }
+
+            string preferPj = pjWafer.Keys.First();
+            int runningWaferCount = GetWaitingProcessWaferCount(preferPj);
+            foreach (var slotItem in pjWafer)
+            {
+                if (slotItem.Key == preferPj)
+                    continue;
+
+                int count = GetWaitingProcessWaferCount(slotItem.Key);
+                if (count < runningWaferCount)
+                {
+                    preferPj = slotItem.Key;
+                    runningWaferCount = count;
+                }
+            }
+            return pjWafer[preferPj].Module != lpModule ? new SlotItem(ModuleName.System, -1) : pjWafer[preferPj];
+        }
+
+        private int GetWaitingProcessWaferCount(string pjName)
+        {
+            List<Tuple<ModuleName, int>> location = new List<Tuple<ModuleName, int>>()
+            {
+                Tuple.Create(ModuleName.EfemRobot, 0),
+                Tuple.Create(ModuleName.EfemRobot, 1),
+                Tuple.Create(ModuleName.Aligner1, 0),
+                Tuple.Create(ModuleName.Aligner2, 0),
+                Tuple.Create(ModuleName.PMA, 0),
+                Tuple.Create(ModuleName.PMB, 0),
+            };
+
+            int count = 0;
+            foreach (var tuple in location)
+            {
+                if (!ModuleHelper.IsInstalled(tuple.Item1))
+                    continue;
+                if (ModuleHelper.IsPm(tuple.Item1) && !GetModule(tuple.Item1.ToString()).IsOnline)
+                    continue;
+
+                WaferInfo wafer = WaferManager.Instance.GetWafer(tuple.Item1, tuple.Item2);
+                if (wafer.IsEmpty)
+                    continue;
+
+                if (wafer.ProcessJob != null && wafer.ProcessJob.Name == pjName)
+                    count++;
+            }
+
+            return count;
         }
 
         static public int GetSystemInnerWaferCount()

+ 34 - 3
VirgoRT/Modules/PMs/PMHomeRoutine.cs

@@ -10,6 +10,8 @@ namespace VirgoRT.Modules.PMs
         enum RoutineStep
         {
             LiftPinOrig,
+            ResetPlcSignal,
+            ResetPlcSignalDelay,
             Home,
         }
 
@@ -36,8 +38,10 @@ namespace VirgoRT.Modules.PMs
             {
                 if (_chamber != null && _chamber.IsInstalled)
                 {
+                    ResetPlcSignal((int)RoutineStep.ResetPlcSignal, 10);
+                    TimeDelay((int)RoutineStep.ResetPlcSignalDelay, 6);
                     SetLiftPinPos((int)RoutineStep.LiftPinOrig,     MovementPosition.Origin,    200);
-                    Home((int)RoutineStep.Home,                     10);
+                    Home((int)RoutineStep.Home,                     20);
                 }
             }
             catch (RoutineBreakException)
@@ -62,6 +66,33 @@ namespace VirgoRT.Modules.PMs
         public override void Abort()
         {
         }
+        public void ResetPlcSignal(int id, int timeout)
+        {
+            Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
+            {
+                Notify($"Run {_chamber.Name} ResetPlcSignal");
+
+                _chamber.ResetPlcSignal();
+
+                return true;
+            }, () => true, timeout * 1000);
+
+            if (ret.Item1)
+            {
+                if (ret.Item2 == Result.FAIL)
+                {
+                    Stop($"{_chamber.Name} ResetPlcSignal error");
+                    throw new RoutineFaildException();
+                }
+                else if (ret.Item2 == Result.TIMEOUT) //timeout
+                {
+                    Stop($"ResetPlcSignal timeout, over {timeout} seconds");
+                    throw new RoutineFaildException();
+                }
+                else
+                    throw new RoutineBreakException();
+            }
+        }
 
         public void Home(int id, int timeout)
         {
@@ -78,12 +109,12 @@ namespace VirgoRT.Modules.PMs
             {
                 if (ret.Item2 == Result.FAIL)
                 {
-                    Stop($"{_chamber.Name} error");
+                    Stop($"{_chamber.Name} home error");
                     throw new RoutineFaildException();
                 }
                 else if (ret.Item2 == Result.TIMEOUT) //timeout
                 {
-                    Stop($"timeout, over {timeout} seconds");
+                    Stop($"home timeout, over {timeout} seconds");
                     throw new RoutineFaildException();
                 }
                 else

+ 1 - 1
VirgoSimulator/App.config

@@ -8,7 +8,7 @@
   </startup>
   <appSettings>
     <!--0=>VirgoMask,1=>VirgoR-->
-    <add key="ChamberType" value="0"/>
+    <add key="ChamberType" value="1"/>
   </appSettings>
 
   <log4net>

+ 2 - 2
VirgoUI/Models/Operate/WaferAssociation/WaferAssociationUnit.xaml

@@ -55,7 +55,7 @@
             </StackPanel>
 
             <StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,0" HorizontalAlignment="Left" VerticalAlignment="Center">
-                <Button Content="Set All" Width="80" Height="25" Margin="5,0,0,0" Visibility="Collapsed">
+                <Button Content="Set All" Width="80" Height="25" Margin="5,0,0,0">
                     <i:Interaction.Triggers>
                         <i:EventTrigger EventName="Click">
                             <cal:ActionMessage MethodName="SetAll">
@@ -64,7 +64,7 @@
                         </i:EventTrigger>
                     </i:Interaction.Triggers>
                 </Button>
-                <Button Content="Deselect All" Width="80" Height="25" Margin="5,0,0,0" Visibility="Collapsed">
+                <Button Content="Deselect All" Width="80" Height="25" Margin="5,0,0,0">
                     <i:Interaction.Triggers>
                         <i:EventTrigger EventName="Click">
                             <cal:ActionMessage MethodName="DeselectAll">

+ 169 - 169
Virgo_MaskR.sln

@@ -1,169 +1,169 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.10.34916.146
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoRT", "VirgoRT\VirgoRT.csproj", "{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoCommon", "VirgoCommon\VirgoCommon.csproj", "{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoSimulator", "VirgoSimulator\VirgoSimulator.csproj", "{FDF5BB48-689B-4B88-BABC-110F3DC07C67}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Framework", "Framework", "{788A2513-3E85-4D83-A68E-11D2B793A363}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Framework\Common\Common.csproj", "{9CD2A6BE-1971-4E74-B49E-547982F64034}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RTCore", "Framework\RTCore\RTCore.csproj", "{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RTEquipmentLibrary", "Framework\RTEquipmentLibrary\RTEquipmentLibrary.csproj", "{090A1E9C-1087-4C8A-B4E0-FF074459E071}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimulatorCore", "Framework\SimulatorCore\SimulatorCore.csproj", "{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoUI", "VirgoUI\VirgoUI.csproj", "{290FE38F-45F9-408C-B25B-C899B467E3F8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UICore", "Framework\UICore\UICore.csproj", "{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoRT_Setup", "VirgoSetup\VirgoRT_Setup\VirgoRT_Setup.csproj", "{C842F167-DB8E-4827-ACDD-74215AF5100A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0} = {5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoUI_Setup", "VirgoSetup\VirgoUI_Setup\VirgoUI_Setup.csproj", "{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}"
-	ProjectSection(ProjectDependencies) = postProject
-		{290FE38F-45F9-408C-B25B-C899B467E3F8} = {290FE38F-45F9-408C-B25B-C899B467E3F8}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RecipeEditorControl", "RecipeEditorControl\RecipeEditorControl.csproj", "{C226E370-E9FB-48E7-BF40-89A33F88EF17}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RTModuleLibrary", "Framework\RTModuleLibrary\RTModuleLibrary.csproj", "{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Debug|x86 = Debug|x86
-		Release|Any CPU = Release|Any CPU
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|x86.Build.0 = Debug|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|x86.ActiveCfg = Release|Any CPU
-		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|x86.Build.0 = Release|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|x86.Build.0 = Debug|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|x86.ActiveCfg = Release|Any CPU
-		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|x86.Build.0 = Release|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|x86.Build.0 = Debug|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|Any CPU.Build.0 = Release|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|x86.ActiveCfg = Release|Any CPU
-		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|x86.Build.0 = Release|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|x86.Build.0 = Debug|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|Any CPU.Build.0 = Release|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|x86.ActiveCfg = Release|Any CPU
-		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|x86.Build.0 = Release|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|x86.Build.0 = Debug|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|x86.ActiveCfg = Release|Any CPU
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|x86.Build.0 = Release|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|x86.Build.0 = Debug|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|Any CPU.Build.0 = Release|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|x86.ActiveCfg = Release|Any CPU
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|x86.Build.0 = Release|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|x86.Build.0 = Debug|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|Any CPU.Build.0 = Release|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|x86.ActiveCfg = Release|Any CPU
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|x86.Build.0 = Release|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|x86.Build.0 = Debug|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|x86.ActiveCfg = Release|Any CPU
-		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|x86.Build.0 = Release|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|x86.Build.0 = Debug|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|x86.ActiveCfg = Release|Any CPU
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|x86.Build.0 = Release|Any CPU
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|Any CPU.Build.0 = Debug|x86
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|x86.ActiveCfg = Debug|x86
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|x86.Build.0 = Debug|x86
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Release|Any CPU.ActiveCfg = Release|x86
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Release|x86.ActiveCfg = Release|x86
-		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Release|x86.Build.0 = Release|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|Any CPU.Build.0 = Debug|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|x86.ActiveCfg = Debug|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|x86.Build.0 = Debug|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Release|Any CPU.ActiveCfg = Release|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Release|x86.ActiveCfg = Release|x86
-		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Release|x86.Build.0 = Release|x86
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|x86.Build.0 = Debug|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|x86.ActiveCfg = Release|Any CPU
-		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|x86.Build.0 = Release|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|x86.Build.0 = Debug|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|x86.ActiveCfg = Release|Any CPU
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|x86.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{9CD2A6BE-1971-4E74-B49E-547982F64034} = {788A2513-3E85-4D83-A68E-11D2B793A363}
-		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A} = {788A2513-3E85-4D83-A68E-11D2B793A363}
-		{090A1E9C-1087-4C8A-B4E0-FF074459E071} = {788A2513-3E85-4D83-A68E-11D2B793A363}
-		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A} = {788A2513-3E85-4D83-A68E-11D2B793A363}
-		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7} = {788A2513-3E85-4D83-A68E-11D2B793A363}
-		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C} = {788A2513-3E85-4D83-A68E-11D2B793A363}
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {49F07864-CB9F-43CB-97F1-FED8C84760FE}
-	EndGlobalSection
-	GlobalSection(SubversionScc) = preSolution
-		Svn-Managed = True
-		Manager = AnkhSVN - Subversion Support for Visual Studio
-	EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.34916.146
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoRT", "VirgoRT\VirgoRT.csproj", "{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoCommon", "VirgoCommon\VirgoCommon.csproj", "{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoSimulator", "VirgoSimulator\VirgoSimulator.csproj", "{FDF5BB48-689B-4B88-BABC-110F3DC07C67}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Framework", "Framework", "{788A2513-3E85-4D83-A68E-11D2B793A363}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Framework\Common\Common.csproj", "{9CD2A6BE-1971-4E74-B49E-547982F64034}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RTCore", "Framework\RTCore\RTCore.csproj", "{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RTEquipmentLibrary", "Framework\RTEquipmentLibrary\RTEquipmentLibrary.csproj", "{090A1E9C-1087-4C8A-B4E0-FF074459E071}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimulatorCore", "Framework\SimulatorCore\SimulatorCore.csproj", "{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoUI", "VirgoUI\VirgoUI.csproj", "{290FE38F-45F9-408C-B25B-C899B467E3F8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UICore", "Framework\UICore\UICore.csproj", "{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoRT_Setup", "VirgoSetup\VirgoRT_Setup\VirgoRT_Setup.csproj", "{C842F167-DB8E-4827-ACDD-74215AF5100A}"
+	ProjectSection(ProjectDependencies) = postProject
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0} = {5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VirgoUI_Setup", "VirgoSetup\VirgoUI_Setup\VirgoUI_Setup.csproj", "{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}"
+	ProjectSection(ProjectDependencies) = postProject
+		{290FE38F-45F9-408C-B25B-C899B467E3F8} = {290FE38F-45F9-408C-B25B-C899B467E3F8}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RecipeEditorControl", "RecipeEditorControl\RecipeEditorControl.csproj", "{C226E370-E9FB-48E7-BF40-89A33F88EF17}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RTModuleLibrary", "Framework\RTModuleLibrary\RTModuleLibrary.csproj", "{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Debug|x86.Build.0 = Debug|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|x86.ActiveCfg = Release|Any CPU
+		{5EAFA05F-C2C0-40B3-9C8F-46D8559148D0}.Release|x86.Build.0 = Release|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Debug|x86.Build.0 = Debug|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|x86.ActiveCfg = Release|Any CPU
+		{E7966F9D-09AF-42F5-9BFE-F5C070B1B565}.Release|x86.Build.0 = Release|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Debug|x86.Build.0 = Debug|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|x86.ActiveCfg = Release|Any CPU
+		{FDF5BB48-689B-4B88-BABC-110F3DC07C67}.Release|x86.Build.0 = Release|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Debug|x86.Build.0 = Debug|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|x86.ActiveCfg = Release|Any CPU
+		{9CD2A6BE-1971-4E74-B49E-547982F64034}.Release|x86.Build.0 = Release|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Debug|x86.Build.0 = Debug|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|x86.ActiveCfg = Release|Any CPU
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A}.Release|x86.Build.0 = Release|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Debug|x86.Build.0 = Debug|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|Any CPU.Build.0 = Release|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|x86.ActiveCfg = Release|Any CPU
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071}.Release|x86.Build.0 = Release|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Debug|x86.Build.0 = Debug|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|x86.ActiveCfg = Release|Any CPU
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A}.Release|x86.Build.0 = Release|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Debug|x86.Build.0 = Debug|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|Any CPU.Build.0 = Release|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|x86.ActiveCfg = Release|Any CPU
+		{290FE38F-45F9-408C-B25B-C899B467E3F8}.Release|x86.Build.0 = Release|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Debug|x86.Build.0 = Debug|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|x86.ActiveCfg = Release|Any CPU
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7}.Release|x86.Build.0 = Release|Any CPU
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|Any CPU.Build.0 = Debug|x86
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|x86.ActiveCfg = Debug|x86
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Debug|x86.Build.0 = Debug|x86
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Release|Any CPU.ActiveCfg = Release|x86
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Release|x86.ActiveCfg = Release|x86
+		{C842F167-DB8E-4827-ACDD-74215AF5100A}.Release|x86.Build.0 = Release|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|Any CPU.Build.0 = Debug|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|x86.ActiveCfg = Debug|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Debug|x86.Build.0 = Debug|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Release|Any CPU.ActiveCfg = Release|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Release|x86.ActiveCfg = Release|x86
+		{BA51A6BD-0E1E-4CEA-8C08-3453D027C018}.Release|x86.Build.0 = Release|x86
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Debug|x86.Build.0 = Debug|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|x86.ActiveCfg = Release|Any CPU
+		{C226E370-E9FB-48E7-BF40-89A33F88EF17}.Release|x86.Build.0 = Release|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Debug|x86.Build.0 = Debug|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|x86.ActiveCfg = Release|Any CPU
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C}.Release|x86.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{9CD2A6BE-1971-4E74-B49E-547982F64034} = {788A2513-3E85-4D83-A68E-11D2B793A363}
+		{BCBD839A-C9A0-4BE7-98CA-B0A88AD38E5A} = {788A2513-3E85-4D83-A68E-11D2B793A363}
+		{090A1E9C-1087-4C8A-B4E0-FF074459E071} = {788A2513-3E85-4D83-A68E-11D2B793A363}
+		{EBE55E3F-6DCE-47B9-AC61-54A8B9B3482A} = {788A2513-3E85-4D83-A68E-11D2B793A363}
+		{2C9E1DF3-1ABA-4972-BE60-41DD9B3C47A7} = {788A2513-3E85-4D83-A68E-11D2B793A363}
+		{7C395751-ABE6-4B5B-8F3A-BDA0FCE08F6C} = {788A2513-3E85-4D83-A68E-11D2B793A363}
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {49F07864-CB9F-43CB-97F1-FED8C84760FE}
+	EndGlobalSection
+	GlobalSection(SubversionScc) = preSolution
+		Svn-Managed = True
+		Manager = AnkhSVN - Subversion Support for Visual Studio
+	EndGlobalSection
+EndGlobal