Compare commits

...

4 Commits

Author SHA1 Message Date
bmgjet 37363ed989
Remove Info 2024-12-25 23:12:04 +13:00
bmgjet d3911e4a9b
Link to complete archive 2024-12-25 23:11:38 +13:00
bmgjet 2c5f80a0c8
Auto clone Ruyi github if missing 2024-12-25 23:08:30 +13:00
bmgjet b1dfba87a5
Auto Clone Ruyi github if missing, 2024-12-25 23:07:32 +13:00
6 changed files with 197 additions and 184 deletions

View File

@ -1,40 +1,7 @@
# Ruyi-GUI Setup Guide
Complete Environment Download at<br>
[Ruyi-GUI-V1.0.7z](https://mega.nz/file/GS4hjbrJ#kjpc8buBUnuw11lOTo0HwLKmzKeORvLTEO7dRsmgS5Q)
## Prerequisites
1. **Download and set up a Python environment**
The recommended environment is `webui_forge_cu124_torch24.7z`, which you can download from the [Stable Diffusion WebUI Forge GitHub Releases](https://github.com/lllyasviel/stable-diffusion-webui-forge/releases/tag/latest).
2. **Extract and run Forge**
- Extract the contents of the downloaded file.
- Run `run.bat` to let Forge automatically download all necessary dependencies.
- After setup, your folder structure should look like this:
```
system/
webui/
environment.bat
run.bat
update.bat
```
## Setting Up Ruyi-GUI
1. **Download Ruyi-GUI**
- Navigate to [Ruyi-GUI/bin/Release/](https://github.com/bmgjet/Ruyi-GUI/blob/master/Ruyi-GUI/bin/Release/Ruyi-GUI.exe).
- Download the `Ruyi-GUI.exe` file.
2. **Place Ruyi-GUI.exe in the Forge folder**
Copy the downloaded `Ruyi-GUI.exe` into the root of the Forge folder (the same location as `run.bat`).
3. **Prepare the Ruyi-Models folder**
- Create a new folder named `Ruyi-Models` in the Forge folder.
- Download the Ruyi Models from [IamCreateAI/Ruyi-Models](https://github.com/IamCreateAI/Ruyi-Models).
- Extract the contents of the downloaded archive into the `Ruyi-Models` folder.
## Running the Application
1. Double-click `Ruyi-GUI.exe` to start the application.
2. Follow the on-screen instructions to load models and begin using the GUI.
## Screenshot
@ -44,6 +11,4 @@
---
Additional respective GitHub repositories:
- [Stable Diffusion WebUI Forge](https://github.com/lllyasviel/stable-diffusion-webui-forge)
- [Ruyi-GUI](https://github.com/bmgjet/Ruyi-GUI)
- [Ruyi-Models](https://github.com/IamCreateAI/Ruyi-Models)

View File

@ -73,6 +73,7 @@
this.timer2 = new System.Windows.Forms.Timer(this.components);
this.Batch = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.Updates = new System.Windows.Forms.CheckBox();
this.Weighttxt = new System.Windows.Forms.TextBox();
this.Weightlbl = new System.Windows.Forms.Label();
this.LoraButton = new System.Windows.Forms.Button();
@ -81,7 +82,6 @@
this.label1 = new System.Windows.Forms.Label();
this.VideoRes = new System.Windows.Forms.ComboBox();
this.timer3 = new System.Windows.Forms.Timer(this.components);
this.Updates = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.panel1.SuspendLayout();
@ -610,6 +610,16 @@
this.panel1.Size = new System.Drawing.Size(544, 507);
this.panel1.TabIndex = 41;
//
// Updates
//
this.Updates.AutoSize = true;
this.Updates.Location = new System.Drawing.Point(382, 449);
this.Updates.Name = "Updates";
this.Updates.Size = new System.Drawing.Size(150, 17);
this.Updates.TabIndex = 48;
this.Updates.Text = "Check For Model Updates";
this.Updates.UseVisualStyleBackColor = true;
//
// Weighttxt
//
this.Weighttxt.Location = new System.Drawing.Point(330, 422);
@ -700,21 +710,11 @@
this.timer3.Interval = 5000;
this.timer3.Tick += new System.EventHandler(this.timer3_Tick);
//
// Updates
//
this.Updates.AutoSize = true;
this.Updates.Location = new System.Drawing.Point(382, 449);
this.Updates.Name = "Updates";
this.Updates.Size = new System.Drawing.Size(150, 17);
this.Updates.TabIndex = 48;
this.Updates.Text = "Check For Model Updates";
this.Updates.UseVisualStyleBackColor = true;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(555, 577);
this.ClientSize = new System.Drawing.Size(552, 577);
this.Controls.Add(this.panel1);
this.Controls.Add(this.RunJobs);
this.Controls.Add(this.RemoveJob);

View File

@ -14,8 +14,11 @@ using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Security.Cryptography;
using System.Security.Policy;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@ -27,6 +30,7 @@ namespace Ruyi_GUI
{
public static List<string> LogMessages = new List<string>();
public string[] PythonCode;
public static Process process;
public bool DoingJobs = false;
public bool Not100 = true;
@ -35,21 +39,32 @@ namespace Ruyi_GUI
InitializeComponent();
if (File.Exists("Config.cfg")) { LoadSettings(File.ReadAllText("Config.cfg")); }
else { SaveSettings(); }
if(!File.Exists("environment.bat"))
if (!File.Exists("environment.bat"))
{
MessageBox.Show("environment.bat file missing, Is this exe being ran from Forge Install folder?","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
MessageBox.Show("environment.bat file missing, Is this exe being ran from Forge Install folder?", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (!Directory.Exists("Ruyi-Models"))
if (!Directory.Exists("Ruyi-Models-main") || !File.Exists(Path.Combine("Ruyi-Models-main", "predict_i2v.py")))
{
MessageBox.Show("Missing Ruyi-Models Folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
if (MessageBox.Show("Missing predict_i2v.py! Download from Github Repo?", "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
{
using (var client = new WebClient())
{
client.DownloadFile("https://github.com/IamCreateAI/Ruyi-Models/archive/refs/heads/main.zip", "Ruyi-Models.zip");
Thread.Sleep(1000);
if (File.Exists("Ruyi-Models.zip"))
{
ZipFile.ExtractToDirectory("Ruyi-Models.zip", Path.Combine(AssemblyDirectory()));
Thread.Sleep(1000);
File.Delete("Ruyi-Models.zip");
}
}
}
else { return; }
}
if(!File.Exists(Path.Combine("Ruyi-Models", "predict_i2v.py")))
if (File.Exists(Path.Combine("Ruyi-Models-main", "predict_i2v.py")))
{
MessageBox.Show("Missing predict_i2v.py", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
PythonCode = File.ReadAllLines(Path.Combine("Ruyi-Models-main", "predict_i2v.py"));
}
PythonCode = File.ReadAllLines(Path.Combine("Ruyi-Models", "predict_i2v.py"));
}
private string SettingsString() { return Img1.Text + "|" + Img2.Text + "|" + VideoOut.Text + "|" + FrameRate.Text + "|" + AspectRatio.Text + "|" + Resolution.Text + "|" + Direction.Text + "|" + Motion.Text + "|" + GPUOffload.Text + "|" + LowMemoryMode.Checked + "|" + Steps.Text + "|" + Cfg.Text + "|" + Seed.Text + "|" + Scheduler.Text + "|" + VideoRes.Text + "|" + Loratxt.Text + "|" + Weighttxt.Text + "|" + Updates.Checked; }
@ -76,7 +91,7 @@ namespace Ruyi_GUI
Seed.Text = SSettings[12];
Scheduler.Text = SSettings[13];
VideoRes.Text = SSettings[14];
Loratxt.Text = SSettings[15];
Loratxt.Text = SSettings[15];
Weighttxt.Text = SSettings[16];
Updates.Checked = bool.Parse(SSettings[17]);
}
@ -185,9 +200,9 @@ namespace Ruyi_GUI
string Lora = string.IsNullOrEmpty(Loratxt.Text) ? "None" : @"""" + Loratxt.Text.Replace(@"\", @"\\") + @"""";
foreach (string line in PythonCode)
{
if(line.StartsWith("start_image_path = "))
if (line.StartsWith("start_image_path = "))
{
code += @"start_image_path = """ + Img1.Text.Replace(@"\", @"\\") + @""""+ System.Environment.NewLine;
code += @"start_image_path = """ + Img1.Text.Replace(@"\", @"\\") + @"""" + System.Environment.NewLine;
continue;
}
if (line.StartsWith("end_image_path = "))
@ -212,7 +227,7 @@ namespace Ruyi_GUI
}
if (line.StartsWith("video_size = "))
{
code += @"video_size = " + VideoRes.Text.Replace("auto","None") + System.Environment.NewLine;
code += @"video_size = " + VideoRes.Text.Replace("auto", "None") + System.Environment.NewLine;
continue;
}
if (line.StartsWith("aspect_ratio = "))
@ -282,22 +297,22 @@ namespace Ruyi_GUI
private void ExecuteCommand()
{
string CallCode = ParsePythonCode();
string CallCode = ParsePythonCode();
if (string.IsNullOrEmpty(CallCode)) { MessageBox.Show("Bad Python Code", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
File.WriteAllText(Path.Combine("Ruyi-Models", "i2v.py"), CallCode);
File.WriteAllText(Path.Combine("Ruyi-Models-main", "i2v.py"), CallCode);
if (File.Exists(VideoOut.Text)) { File.Move(VideoOut.Text, VideoOut.Text.Replace(".mp4", "-" + GetTimestamp() + ".mp4")); }
LogMessages.Add("Starting Generation: ["+FrameRate.Text + "-"+ Resolution.Text +"] " + Path.GetFileName(Img1.Text) + " @ " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
LogMessages.Add("Starting Generation: [" + FrameRate.Text + "-" + Resolution.Text + "] " + Path.GetFileName(Img1.Text) + " @ " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
Task.Run(() =>
{
GenerateButton.BeginInvoke(new Action(() => { GenerateButton.Enabled = false; }));
panel1.BeginInvoke(new Action(() => { panel1.Enabled = false; }));
AppendTextBox("Loading AI Please Wait...");
var processInfo = new ProcessStartInfo("cmd.exe", "/c call " + Path.Combine(AssemblyDirectory(), "environment.bat") + " && cd " + Path.Combine(AssemblyDirectory(), "Ruyi-Models") + " && python i2v.py %*");
var processInfo = new ProcessStartInfo("cmd.exe", "/c call " + Path.Combine(AssemblyDirectory(), "environment.bat") + " && cd " + Path.Combine(AssemblyDirectory(), "Ruyi-Models-main") + " && python i2v.py %*");
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
var process = Process.Start(processInfo);
process = Process.Start(processInfo);
process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => LogFiltered(e.Data);
process.BeginOutputReadLine();
process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => LogFiltered(e.Data);
@ -350,7 +365,29 @@ namespace Ruyi_GUI
VideoOut.Text = saveFileDialog1.FileName;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { SaveSettings(); }
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
SaveSettings();
if (process != null)
{
try { process.Kill(); } catch { }
}
Process[] processes = Process.GetProcesses();
bool isPythonRunning = processes.Any(p => p.ProcessName.Equals("python", StringComparison.OrdinalIgnoreCase));
if (isPythonRunning)
{
if (MessageBox.Show("python.exe is running. Do you want to close it?", "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
{
foreach (var process in processes)
{
if (process.ProcessName.Equals("python", StringComparison.OrdinalIgnoreCase))
{
process.Kill();
}
}
}
}
}
private void PlayVideo_Click(object sender, EventArgs e)
{
@ -387,7 +424,7 @@ namespace Ruyi_GUI
if (string.IsNullOrEmpty(Seed.Text)) { MessageBox.Show("Seed Can't Be Null", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; }
if (string.IsNullOrEmpty(Scheduler.Text)) { MessageBox.Show("Scheduler Can't Be Null", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; }
if (string.IsNullOrEmpty(Weighttxt.Text)) { MessageBox.Show("Lora Weight Can't Be Null", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; }
if(!AspectRatio.Text.Contains(":")){ MessageBox.Show("Aspect Ratio Not Valid Format", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; }
if (!AspectRatio.Text.Contains(":")) { MessageBox.Show("Aspect Ratio Not Valid Format", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; }
if (!VideoRes.Text.Contains(", ") && !VideoRes.Text.Contains("None") && !VideoRes.Text.Contains("auto")) { MessageBox.Show("Mp4 Resolution Not Valid Format", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; }
return true;
}
@ -460,7 +497,7 @@ namespace Ruyi_GUI
private void Batch_Click(object sender, EventArgs e)
{
if (this.Width == 810) { this.Width = 575; JobList.Items.Clear(); GenerateButton.Enabled = true; }
if (this.Width == 810) { this.Width = 572; JobList.Items.Clear(); GenerateButton.Enabled = true; }
else
{
GenerateButton.Enabled = false;
@ -505,7 +542,7 @@ namespace Ruyi_GUI
private void VideoRes_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != ',' && e.KeyChar != ' ' && e.KeyChar != 'N' && e.KeyChar != 'o' && e.KeyChar != 'n' && e.KeyChar != 'e' && e.KeyChar != 'a' && e.KeyChar != 'u' && e.KeyChar != 't';
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != ',' && e.KeyChar != ' ' && e.KeyChar != 'N' && e.KeyChar != 'o' && e.KeyChar != 'n' && e.KeyChar != 'e' && e.KeyChar != 'a' && e.KeyChar != 'u' && e.KeyChar != 't';
}
private void LoraButton_Click(object sender, EventArgs e)
@ -523,8 +560,18 @@ namespace Ruyi_GUI
bool isPythonRunning = processes.Any(p => p.ProcessName.Equals("python", StringComparison.OrdinalIgnoreCase));
if (!isPythonRunning)
{
AppendTextBox("Error");
timer3.Enabled = false;
MessageBox.Show("python.exe is not running. Maybe it crashed, Please check the log.txt","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
MessageBox.Show("python.exe is not running. Maybe it crashed, Please check the log.txt", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
GenerateButton.Enabled = true;
panel1.Enabled = true;
RunJobs.Enabled = true;
JobList.Enabled = true;
AddJob.Enabled = true;
RemoveJob.Enabled = true;
timer2.Enabled = false;
DoingJobs = false;
timer2.Enabled = false;
}
}
}

View File

@ -1,22 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ruyi_GUI
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ruyi_GUI
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@ -1,91 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{69020BE2-E87C-4ECD-8E8F-A1591EC00174}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Ruyi_GUI</RootNamespace>
<AssemblyName>Ruyi-GUI</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>0</WarningLevel>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>AIIcon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="AIIcon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{69020BE2-E87C-4ECD-8E8F-A1591EC00174}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Ruyi_GUI</RootNamespace>
<AssemblyName>Ruyi-GUI</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>0</WarningLevel>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>AIIcon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="AIIcon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Binary file not shown.