1、添加双击工具箱添加工具功能,使用工厂模式,工具类与工具箱分开 2、添加工具间拖拽画线功能

This commit is contained in:
liu.wenjie
2019-07-30 17:23:32 +08:00
committed by liu.wenjie
parent bca077b840
commit 61de0d1236
57 changed files with 1486 additions and 205238 deletions

Binary file not shown.

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.exe.config
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.exe
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.pdb
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.HalconWindow.HWindow_Final.resources
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.MainForm.resources
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.Properties.Resources.resources
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.exe
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.pdb

View File

@@ -17,6 +17,7 @@ namespace VisionEdit.FormLib
public FormImageWindow() public FormImageWindow()
{ {
InitializeComponent(); InitializeComponent();
_instance = this;
} }
public string m_fileName = string.Empty; public string m_fileName = string.Empty;
/// <summary> /// <summary>

View File

@@ -16,6 +16,7 @@ namespace VisionEdit.FormLib
public FormJobManage() public FormJobManage()
{ {
InitializeComponent(); InitializeComponent();
_instance = this;
} }
/// <summary> /// <summary>

View File

@@ -29,99 +29,112 @@
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("流程", 1, 1); System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("流程", 1, 1);
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Halcon窗口", 3, 3); System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("Halcon窗口", 3, 3);
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Basler"); System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("Basler");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("HIKVision"); System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("HIKVision");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("获取图像", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("获取图像", new System.Windows.Forms.TreeNode[] {
treeNode2, treeNode18,
treeNode3, treeNode19,
treeNode4}); treeNode20});
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("滤波"); System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("滤波");
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("平滑"); System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("平滑");
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("去噪"); System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("去噪");
System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("图像预处理", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("图像预处理", new System.Windows.Forms.TreeNode[] {
treeNode6, treeNode22,
treeNode7, treeNode23,
treeNode8}); treeNode24});
System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("形状匹配"); System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("形状匹配");
System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("可变形匹配"); System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("可变形匹配");
System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("灰度匹配"); System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("灰度匹配");
System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("匹配", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("匹配", new System.Windows.Forms.TreeNode[] {
treeNode10, treeNode26,
treeNode11, treeNode27,
treeNode12}); treeNode28});
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("找线"); System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("找线");
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("几何", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("找圆");
treeNode14}); System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("几何", new System.Windows.Forms.TreeNode[] {
treeNode30,
treeNode31});
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormToolBox)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormToolBox));
this.tvw_ToolBox = new System.Windows.Forms.TreeView(); this.tvw_ToolBox = new System.Windows.Forms.TreeView();
this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.richTextBoxEx1 = new DevComponents.DotNetBar.Controls.RichTextBoxEx(); this.richTextBoxEx1 = new DevComponents.DotNetBar.Controls.RichTextBoxEx();
this.imageListTool = new System.Windows.Forms.ImageList(this.components);
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// tvw_ToolBox // tvw_ToolBox
// //
this.tvw_ToolBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.tvw_ToolBox.Dock = System.Windows.Forms.DockStyle.Fill;
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tvw_ToolBox.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.tvw_ToolBox.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tvw_ToolBox.ImageIndex = 4; this.tvw_ToolBox.ImageIndex = 4;
this.tvw_ToolBox.ImageList = this.imageList1; this.tvw_ToolBox.ImageList = this.imageList1;
this.tvw_ToolBox.Indent = 32; this.tvw_ToolBox.Indent = 32;
this.tvw_ToolBox.Location = new System.Drawing.Point(0, 4); this.tvw_ToolBox.Location = new System.Drawing.Point(0, 0);
this.tvw_ToolBox.Name = "tvw_ToolBox"; this.tvw_ToolBox.Name = "tvw_ToolBox";
treeNode1.ImageIndex = 1; treeNode17.ImageIndex = 1;
treeNode1.Name = "NodeJob"; treeNode17.Name = "NodeJob";
treeNode1.SelectedImageIndex = 1; treeNode17.SelectedImageIndex = 1;
treeNode1.Text = "流程"; treeNode17.Text = "流程";
treeNode2.ImageIndex = 3; treeNode18.ImageIndex = 3;
treeNode2.Name = "节点1"; treeNode18.Name = "节点1";
treeNode2.SelectedImageIndex = 3; treeNode18.SelectedImageIndex = 3;
treeNode2.Tag = "HalconToolInterface"; treeNode18.Tag = "HalconTool";
treeNode2.Text = "Halcon窗口"; treeNode18.Text = "Halcon窗口";
treeNode3.ImageKey = "图像.png"; treeNode19.ImageKey = "图像.png";
treeNode3.Name = "节点2"; treeNode19.Name = "节点2";
treeNode3.SelectedImageIndex = 3; treeNode19.SelectedImageIndex = 3;
treeNode3.Text = "Basler"; treeNode19.Text = "Basler";
treeNode4.ImageKey = "图像.png"; treeNode20.ImageKey = "图像.png";
treeNode4.Name = "节点3"; treeNode20.Name = "节点3";
treeNode4.SelectedImageIndex = 3; treeNode20.SelectedImageIndex = 3;
treeNode4.Text = "HIKVision"; treeNode20.Text = "HIKVision";
treeNode5.ImageIndex = 4; treeNode21.ImageIndex = 4;
treeNode5.Name = "节点0"; treeNode21.Name = "节点0";
treeNode5.Text = "获取图像"; treeNode21.Text = "获取图像";
treeNode6.Name = "节点5"; treeNode22.Name = "节点5";
treeNode6.Text = "滤波"; treeNode22.Text = "滤波";
treeNode7.Name = "节点6"; treeNode23.Name = "节点6";
treeNode7.Text = "平滑"; treeNode23.Text = "平滑";
treeNode8.Name = "节点7"; treeNode24.Name = "节点7";
treeNode8.Text = "去噪"; treeNode24.Text = "去噪";
treeNode9.Name = "节点4"; treeNode25.Name = "节点4";
treeNode9.Text = "图像预处理"; treeNode25.Text = "图像预处理";
treeNode10.Name = "节点9"; treeNode26.Name = "节点9";
treeNode10.Text = "形状匹配"; treeNode26.Text = "形状匹配";
treeNode11.Name = "节点10"; treeNode27.Name = "节点10";
treeNode11.Text = "可变形匹配"; treeNode27.Text = "可变形匹配";
treeNode12.Name = "节点11"; treeNode28.Name = "节点11";
treeNode12.Text = "灰度匹配"; treeNode28.Text = "灰度匹配";
treeNode13.Name = "节点8"; treeNode29.Name = "节点8";
treeNode13.Text = "匹配"; treeNode29.Text = "匹配";
treeNode14.Name = "FindLine"; treeNode30.ImageKey = "Line.png";
treeNode14.Tag = "FindLine"; treeNode30.Name = "FindLine";
treeNode14.Text = "找线"; treeNode30.SelectedImageKey = "Line.png";
treeNode15.Name = "节点0"; treeNode30.Tag = "FindLine";
treeNode15.Text = "几何"; treeNode30.Text = "找线";
treeNode31.ImageKey = "Circle.png";
treeNode31.Name = "FindCircle";
treeNode31.SelectedImageKey = "Circle.png";
treeNode31.Text = "找圆";
treeNode32.Name = "节点0";
treeNode32.Text = "几何";
this.tvw_ToolBox.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.tvw_ToolBox.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1, treeNode17,
treeNode5, treeNode21,
treeNode9, treeNode25,
treeNode13, treeNode29,
treeNode15}); treeNode32});
this.tvw_ToolBox.SelectedImageIndex = 4; this.tvw_ToolBox.SelectedImageIndex = 4;
this.tvw_ToolBox.Size = new System.Drawing.Size(367, 545); this.tvw_ToolBox.Size = new System.Drawing.Size(417, 543);
this.tvw_ToolBox.TabIndex = 1; this.tvw_ToolBox.TabIndex = 1;
this.tvw_ToolBox.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvw_ToolBox_AfterSelect); this.tvw_ToolBox.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvw_ToolBox_AfterSelect);
this.tvw_ToolBox.Click += new System.EventHandler(this.tvw_ToolBox_Click);
this.tvw_ToolBox.DoubleClick += new System.EventHandler(this.tvw_ToolBox_DoubleClick); this.tvw_ToolBox.DoubleClick += new System.EventHandler(this.tvw_ToolBox_DoubleClick);
// //
// imageList1 // imageList1
@@ -133,65 +146,70 @@
this.imageList1.Images.SetKeyName(2, "流程图.png"); this.imageList1.Images.SetKeyName(2, "流程图.png");
this.imageList1.Images.SetKeyName(3, "图像.png"); this.imageList1.Images.SetKeyName(3, "图像.png");
this.imageList1.Images.SetKeyName(4, "文件夹.png"); this.imageList1.Images.SetKeyName(4, "文件夹.png");
this.imageList1.Images.SetKeyName(5, "20190709065619943_easyicon_net_256.ico"); this.imageList1.Images.SetKeyName(5, "Line.png");
this.imageList1.Images.SetKeyName(6, "20190715063459237_easyicon_net_256.ico"); this.imageList1.Images.SetKeyName(6, "Circle.png");
this.imageList1.Images.SetKeyName(7, "20190716033549111_easyicon_net_128.ico");
this.imageList1.Images.SetKeyName(8, "20190716033559344_easyicon_net_128.ico");
this.imageList1.Images.SetKeyName(9, "avatar_guy_male_man_user_64px_1212479_easyicon.net.ico");
this.imageList1.Images.SetKeyName(10, "avatar_male_man_user_64px_1212481_easyicon.net.ico");
this.imageList1.Images.SetKeyName(11, "camera_96px_1157134_easyicon.net.ico");
this.imageList1.Images.SetKeyName(12, "start.ico");
this.imageList1.Images.SetKeyName(13, "stop.ico");
this.imageList1.Images.SetKeyName(14, "User_64px_1115223_easyicon.net.ico");
this.imageList1.Images.SetKeyName(15, "user_64px_1218470_easyicon.net.ico");
this.imageList1.Images.SetKeyName(16, "保存.png");
this.imageList1.Images.SetKeyName(17, "保存2.png");
this.imageList1.Images.SetKeyName(18, "保存3.png");
this.imageList1.Images.SetKeyName(19, "打开.png");
this.imageList1.Images.SetKeyName(20, "复位.png");
this.imageList1.Images.SetKeyName(21, "工具箱.ico");
this.imageList1.Images.SetKeyName(22, "工具箱.png");
this.imageList1.Images.SetKeyName(23, "镜头.png");
this.imageList1.Images.SetKeyName(24, "开始.png");
this.imageList1.Images.SetKeyName(25, "流程.ico");
this.imageList1.Images.SetKeyName(26, "流程.png");
this.imageList1.Images.SetKeyName(27, "流程图.png");
this.imageList1.Images.SetKeyName(28, "删除.png");
this.imageList1.Images.SetKeyName(29, "停止.png");
this.imageList1.Images.SetKeyName(30, "图像.png");
this.imageList1.Images.SetKeyName(31, "文件夹.png");
this.imageList1.Images.SetKeyName(32, "相机.png");
this.imageList1.Images.SetKeyName(33, "新建.png");
this.imageList1.Images.SetKeyName(34, "新建2.png");
// //
// richTextBoxEx1 // richTextBoxEx1
// //
this.richTextBoxEx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
// //
// //
// //
this.richTextBoxEx1.BackgroundStyle.Class = "RichTextBoxBorder"; this.richTextBoxEx1.BackgroundStyle.Class = "RichTextBoxBorder";
this.richTextBoxEx1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.richTextBoxEx1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.richTextBoxEx1.Location = new System.Drawing.Point(0, 548); this.richTextBoxEx1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBoxEx1.Location = new System.Drawing.Point(0, 0);
this.richTextBoxEx1.Name = "richTextBoxEx1"; this.richTextBoxEx1.Name = "richTextBoxEx1";
this.richTextBoxEx1.Rtf = "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset134 \\\'cb\\\'ce\\\'cc\\\'e5;}}\r\n\\viewkind4\\u" + this.richTextBoxEx1.Rtf = "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset134 \\\'cb\\\'ce\\\'cc\\\'e5;}}\r\n\\viewkind4\\u" +
"c1\\pard\\lang2052\\f0\\fs18 richTextBoxEx1\\par\r\n}\r\n"; "c1\\pard\\lang2052\\f0\\fs18 richTextBoxEx1\\par\r\n}\r\n";
this.richTextBoxEx1.Size = new System.Drawing.Size(367, 96); this.richTextBoxEx1.Size = new System.Drawing.Size(417, 95);
this.richTextBoxEx1.TabIndex = 2; this.richTextBoxEx1.TabIndex = 2;
this.richTextBoxEx1.Text = "richTextBoxEx1"; this.richTextBoxEx1.Text = "richTextBoxEx1";
// //
// imageListTool
//
this.imageListTool.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListTool.ImageStream")));
this.imageListTool.TransparentColor = System.Drawing.Color.Transparent;
this.imageListTool.Images.SetKeyName(0, "流程图.png");
this.imageListTool.Images.SetKeyName(1, "图像.png");
this.imageListTool.Images.SetKeyName(2, "图像.png");
this.imageListTool.Images.SetKeyName(3, "图像.png");
this.imageListTool.Images.SetKeyName(4, "图像.png");
this.imageListTool.Images.SetKeyName(5, "分析 数据.png");
this.imageListTool.Images.SetKeyName(6, "Line 1.png");
this.imageListTool.Images.SetKeyName(7, "Circle.png");
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tvw_ToolBox);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.richTextBoxEx1);
this.splitContainer1.Size = new System.Drawing.Size(417, 642);
this.splitContainer1.SplitterDistance = 543;
this.splitContainer1.TabIndex = 7;
//
// FormToolBox // FormToolBox
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(367, 642); this.ClientSize = new System.Drawing.Size(417, 642);
this.Controls.Add(this.richTextBoxEx1); this.Controls.Add(this.splitContainer1);
this.Controls.Add(this.tvw_ToolBox);
this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormToolBox"; this.Name = "FormToolBox";
this.Text = "工具箱"; this.Text = "工具箱";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@@ -201,5 +219,7 @@
private System.Windows.Forms.TreeView tvw_ToolBox; private System.Windows.Forms.TreeView tvw_ToolBox;
private DevComponents.DotNetBar.Controls.RichTextBoxEx richTextBoxEx1; private DevComponents.DotNetBar.Controls.RichTextBoxEx richTextBoxEx1;
public System.Windows.Forms.ImageList imageList1; public System.Windows.Forms.ImageList imageList1;
public System.Windows.Forms.ImageList imageListTool;
private System.Windows.Forms.SplitContainer splitContainer1;
} }
} }

View File

@@ -27,7 +27,23 @@ namespace VisionEdit.FormLib
private void tvw_ToolBox_AfterSelect(object sender, TreeViewEventArgs e) private void tvw_ToolBox_AfterSelect(object sender, TreeViewEventArgs e)
{ {
if(e.Node.Level == 0)
{
this.richTextBoxEx1.Text = e.Node.Text;
}
else if(e.Node.Level == 1)
{
object selectTag = tvw_ToolBox.SelectedNode.Tag;
if (selectTag != null)
{
IToolInfo insertTool = VisionToolFactory.CreateToolVision((ToolType)Enum.Parse(typeof(ToolType), selectTag.ToString()));
this.richTextBoxEx1.Text = insertTool.toolDescription;
}
else
{
this.richTextBoxEx1.Text = "此工具尚未开发";
}
}
} }
private void tvw_ToolBox_DoubleClick(object sender, EventArgs e) private void tvw_ToolBox_DoubleClick(object sender, EventArgs e)
@@ -58,22 +74,29 @@ namespace VisionEdit.FormLib
/// </summary> /// </summary>
/// <param name="tool">工具类型</param> /// <param name="tool">工具类型</param>
/// <param name="isInsert">插入位置,当为-1时表示在末尾插入当不为-1时表示被插入的工具索引</param> /// <param name="isInsert">插入位置,当为-1时表示在末尾插入当不为-1时表示被插入的工具索引</param>
internal void Add_Tool(ToolType tool, int insertPos = -1) internal void Add_Tool(ToolType tool, int insertPos = -1, int imageKey = 0)
{ {
string toolName = GetNewToolName(tool.ToString()); string toolName = GetNewToolName(tool.ToString());
IToolInfo insertTool = VisionToolFactory.CreateToolVision(tool, toolName); IToolInfo insertTool = VisionToolFactory.CreateToolVision(tool, toolName);
TreeNode insertNode = new TreeNode(); TreeNode insertNode = new TreeNode();
insertNode = GlobalParams.myJobTreeView.Nodes.Add("", insertTool.toolName, (int)tool, (int)tool); // 该工具对应的节点 insertNode = GlobalParams.myJobTreeView.Nodes.Add("", insertTool.toolName, (int)tool, (int)tool); // 该工具对应的节点
// 判断节点是否添加默认输入输出图 // 判断节点是否添加默认输入输出图
// 输入
for (int i = 0; i < insertTool.toolInput.Count; i++)
{
TreeNode childrenInputNode = insertNode.Nodes.Add("<--" + insertTool.toolInput[i].IOName);
childrenInputNode.Tag = insertTool.toolInput[i].ioType;
childrenInputNode.ForeColor = Color.DarkMagenta;
}
// 输出
for (int i = 0; i < insertTool.toolOutput.Count; i++) for (int i = 0; i < insertTool.toolOutput.Count; i++)
{ {
TreeNode childrenNode = new TreeNode(); TreeNode childrenOutputNode = insertNode.Nodes.Add("-->" + insertTool.toolOutput[i].IOName);
childrenNode.Text = "-->" + insertTool.toolOutput[i].IOName; childrenOutputNode.Tag = insertTool.toolOutput[i].ioType;
childrenNode.Tag = insertTool.toolOutput[i].ioType; childrenOutputNode.ForeColor = Color.Blue;
insertNode.Nodes.Add(childrenNode);
} }
insertNode.Expand();
GlobalParams.myVisionJob.L_toolList.Add(insertTool); GlobalParams.myVisionJob.L_toolList.Add(insertTool);
} }
@@ -125,6 +148,9 @@ namespace VisionEdit.FormLib
} }
} }
private void tvw_ToolBox_Click(object sender, EventArgs e)
{
}
} }
} }

View File

@@ -124,372 +124,224 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAG
VQAAAk1TRnQBSQFMAgEBIwEAAUgBAAEYAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo FAAAAk1TRnQBSQFMAgEBBwEAATABAAEwAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABgAMAASABAQIAAQEBAAEIBgABkBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc AwABgAMAAUADAAEBAQABCAYAASAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AwABZgMAAZkDAAHMAgABMwMAAjMCAAEzAWYCAAEzAZkCAAEzAcwCAAEzAf8CAAFmAwABZgEzAgACZgIA AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AWYBmQIAAWYBzAIAAWYB/wIAAZkDAAGZATMCAAGZAWYCAAKZAgABmQHMAgABmQH/AgABzAMAAcwBMwIA AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AcwBZgIAAcwBmQIAAswCAAHMAf8CAAH/AWYCAAH/AZkCAAH/AcwBAAEzAf8CAAH/AQABMwEAATMBAAFm AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
AQABMwEAAZkBAAEzAQABzAEAATMBAAH/AQAB/wEzAgADMwEAAjMBZgEAAjMBmQEAAjMBzAEAAjMB/wEA ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
ATMBZgIAATMBZgEzAQABMwJmAQABMwFmAZkBAAEzAWYBzAEAATMBZgH/AQABMwGZAgABMwGZATMBAAEz AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AZkBZgEAATMCmQEAATMBmQHMAQABMwGZAf8BAAEzAcwCAAEzAcwBMwEAATMBzAFmAQABMwHMAZkBAAEz AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AswBAAEzAcwB/wEAATMB/wEzAQABMwH/AWYBAAEzAf8BmQEAATMB/wHMAQABMwL/AQABZgMAAWYBAAEz AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AQABZgEAAWYBAAFmAQABmQEAAWYBAAHMAQABZgEAAf8BAAFmATMCAAFmAjMBAAFmATMBZgEAAWYBMwGZ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AQABZgEzAcwBAAFmATMB/wEAAmYCAAJmATMBAANmAQACZgGZAQACZgHMAQABZgGZAgABZgGZATMBAAFm AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AZkBZgEAAWYCmQEAAWYBmQHMAQABZgGZAf8BAAFmAcwCAAFmAcwBMwEAAWYBzAGZAQABZgLMAQABZgHM AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
Af8BAAFmAf8CAAFmAf8BMwEAAWYB/wGZAQABZgH/AcwBAAHMAQAB/wEAAf8BAAHMAQACmQIAAZkBMwGZ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AQABmQEAAZkBAAGZAQABzAEAAZkDAAGZAjMBAAGZAQABZgEAAZkBMwHMAQABmQEAAf8BAAGZAWYCAAGZ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
AWYBMwEAAZkBMwFmAQABmQFmAZkBAAGZAWYBzAEAAZkBMwH/AQACmQEzAQACmQFmAQADmQEAApkBzAEA ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
ApkB/wEAAZkBzAIAAZkBzAEzAQABZgHMAWYBAAGZAcwBmQEAAZkCzAEAAZkBzAH/AQABmQH/AgABmQH/ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
ATMBAAGZAcwBZgEAAZkB/wGZAQABmQH/AcwBAAGZAv8BAAHMAwABmQEAATMBAAHMAQABZgEAAcwBAAGZ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AQABzAEAAcwBAAGZATMCAAHMAjMBAAHMATMBZgEAAcwBMwGZAQABzAEzAcwBAAHMATMB/wEAAcwBZgIA AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AcwBZgEzAQABmQJmAQABzAFmAZkBAAHMAWYBzAEAAZkBZgH/AQABzAGZAgABzAGZATMBAAHMAZkBZgEA AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
AcwCmQEAAcwBmQHMAQABzAGZAf8BAALMAgACzAEzAQACzAFmAQACzAGZAQADzAEAAswB/wEAAcwB/wIA ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
AcwB/wEzAQABmQH/AWYBAAHMAf8BmQEAAcwB/wHMAQABzAL/AQABzAEAATMBAAH/AQABZgEAAf8BAAGZ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AQABzAEzAgAB/wIzAQAB/wEzAWYBAAH/ATMBmQEAAf8BMwHMAQAB/wEzAf8BAAH/AWYCAAH/AWYBMwEA AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AcwCZgEAAf8BZgGZAQAB/wFmAcwBAAHMAWYB/wEAAf8BmQIAAf8BmQEzAQAB/wGZAWYBAAH/ApkBAAH/ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AZkBzAEAAf8BmQH/AQAB/wHMAgAB/wHMATMBAAH/AcwBZgEAAf8BzAGZAQAB/wLMAQAB/wHMAf8BAAL/ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
ATMBAAHMAf8BZgEAAv8BmQEAAv8BzAEAAmYB/wEAAWYB/wFmAQABZgL/AQAB/wJmAQAB/wFmAf8BAAL/ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AWYBAAEhAQABpQEAA18BAAN3AQADhgEAA5YBAAPLAQADsgEAA9cBAAPdAQAD4wEAA+oBAAPxAQAD+AEA AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfAB+wH/AQABpAKgAQADgAMAAf8CAAH/AwAC/wEAAf8DAAH/AQAB/wEAAv8CAAP/AgAfZykAAf8D8jMA AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8AJAAB8wNaKAAB8wNa
AfQBZx2YAWcpAAEJA7IHAAj0JAAB7QFnHZgBZykAAQkDsgcACLIkAAHtAWcMmAFtA2cB6wyYAWcpAAEJ MAAB9htZBAAB8wFaAQABWiYABFoBAARaLQAdWQMAAfMDWiMAAf8CWgH0AQAB8wNaAgABCAJaKwAdWQQA
A7IHAAiyJAAB7QFnCpgB7AdnAZIKmAFnFgACshEAAQkDsg0AArIkAAHtAWcJmANnBf8CZwHrCZgBZxYA AvMBwgFaIQABngFaAf8EAAPzBAABwgFaAfUpAB1ZBwAB9AFaHwACWg8AAVoBwigAHVkIAAH1AVodAAHk
ArIMAAXzAQkDsgXzAf8HAAKyJAAB7QFnCZgBZwH3B/8CZwmYAWcHAAqyBQACsgwADrIB9AcAArIkAAHt AVoRAAFaAfUnAB1ZCQAB9QFaGwAB/wFaEwABWicAHVkKAAH0AVoaAAFaFAABwgFaJgAdWQsAAfQBWhgA
AWcImAJnCf8CZwiYAWcHAAqyBQACsgwADrIB9AcAArIkAAHtAWcHmAHrAWcE/wHzAe0B9AT/AWcImAFn Af8BWhUAAVomAB1ZDAAB9QFaFwABWhYAAQgBWiUAHVkNAAH1AVoWAAFaFwABWiUAHVkOAAH0AVoVAAFa
BwACsgoACbIIAA6yAfQHAAKyJAAB7QFnB5gCZwP/BWcD/wJnB5gBZwcAArIKAAmyCAAF8wG7A7IF8wH/ FwABWiUAHVkPAAH0AVoSAAHzA1oUAAHzA1okAB1ZEAAB9QFaEQAB8wFaAQABWhQAAfMBWgEAAVokAB1Z
BwACsiQAAe0BZweYAWcD/wFtAWcCmAHtAWcBBwP/AWcHmAFnBwACsg0AArIRAAEJA7INAAKyJAAB7QFn EQAB9QFaEAAB8wNaFAAB8wNaJAAdWRIAAfQBWhAAAfMBWgHzFQAB8wFaAfMkAB1ZEwAB9AFaEAABWhcA
B5gBZwP/AWcB7AOYAmcD/wFnB5gBZwcAArINAAKyEQABCQOyDQACsiQAAe0BZweYAWcD/wFnBZgBZwP/ AVolAB1ZFAAB9QFaDwABWhYAAfQBWiUAATEbWQExFQAB9QFaDgABngFaFQABWiYAAzEBWBX/BDEWAAH0
AWcHmAFnBwACsgMACAkCAAKyEQABCQOyDQACsiQAAe0BZweYAWcD/wFnBZgBZwP/AWcHmAFnBwACsgMA AVoOAAFaFAAB/wFaJgADMQFYFf8EMRcAAfQBWg0AARsBWhMAAVoB/yYAHTEYAAH1AVoNAAJaEQABWgGe
CLIVAAEJA7INAAKyJAAB7QFnB5gBZwP/AWcBkgOYAeoBZwP/AWcHmAFnBwACsgMACAkDAAHzARkB8w8A JwAbMQF5GgAB9QFaDQACWg8AAlooABIxJQAB9AFaDQACWg0AAVoB5CkAETEBmSYAAcIDWgsAARsCWgIA
AfQDCQ0AArIkAAHtAWcHmAFnA/8CZwOYAWcBjQP/AWcHmAFnBwACsg4AAboBsgG6IAACsiQAAe0BZweY AfMDWgMAAloB/yoAETEnAAHzAVoBAAFaDQABngRaAQAEWgH/ZAAB8wNaEAAB8wNaaQAD8xEAA/P/ADYA
AWcB6wP/BWcD/wJnB5gBZwcAArIOAAG6AbIBuiAAArIkAAHtAWcHmAHrAWcE/wH3AWcBvAT/AWcImAFn AbMQAAH/AbttAAGyEQABsmwAAbIBCQGyAgkBswIJAboCCQG7BwkBugGzagAC/wEAAbMCAAEJAgAB8wIA
BwACsg4AAboBsgG6IAACsiQAAe0BZwiYAWcBbQn/AmcImAFnBwACsgMACAkDAAG6AbIBuiAAArIkAAHt Af8IAAEJagAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkUAAuyAbMGAB30
AWcImAHsAWcB8wf/AZIBZwOYBWcBmAFnBwACsgMACLIDAAG6AbIBuiAAArIkAAHtAWcJmANnBf8DZwOY BgAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkTAAEJDLIFAB+KBQAB/wKz
BWcBmAFnBwACsgMACLoDAAG6AbIBugoAArIB9BMAArIkAAHtAWcKmAFtB2cB7ASYAWcD4wFnAZgBZwcA AbISswkAAf8CCQH/AgkB9AIAARkBCQEZAf8CCQH/AgADCQH/AfIBCQoAAbMKsgH0CAABugGyBAABtAGK
ArIOAAG6AbIBugoAArIB9BMAArIkAAHtAWcMmAVnBpgFZwGYAWcHAAKyDgABugGyAboKAAKyAfQTAAKy AWUCuxoZAYoFAAH/FAABGQkAAf8CCQEAAgkB9AIAARkBCQHzAQACCQH/AgADCQEAAfMBCQkAAfMBswgA
JAAB7QFnF5gBbQNnAewBmAFnBwACsg4AAboBsgG6CgACsgH0EwACsiQAAfABZx2YAWcHAAKyDgABugGy AboBsgH0CAABugGyBAABswGKAmUCuxkZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJAf8CAAYJCQABugH0
AboKAAKyAfQTAAKyJQAfZwcAErIBugoAArIB9BMAArImAAUHAmcPbgFnAewFBwgAErIBugoAArIB9BMA CAABCQyyBAABswGKAbsCZQG7AQkYGQGKBQAB/xQAARkJAAH/BQkB9AIAARkFCQH/AgAGCQkAAboB9AkA
ArIrAAHwAWcPmgFnAf8qAAKyAfQTAAKyLAABZw+aAWcrABiyLAABZw+aAWcrAAKzFrosABFnbwAB9A9n DLIEAAGzAYoBuwEZAmUBuwEJCRkBCQwZAbsBigUAAf8UAAEZCgAB/wIJAv8DAAL/AwkB/wMAAv8CCQHz
Af+SAAolAW9zAA8lUwAL9BEACSUBTAglAW9PAA/rDgAFJQFvCQABRgUlJwAB9htZCgAC6wHyCwABBwLr Af8JAAG6AfQZAAGzAYoBuwIZAmUBuwgZArsLGQEJAWUBigUAAf8UAAEZCwACCQcAAwkGAAIJAfQKAAG6
DAAEJQFMDQAFJQYAHfQDAB1ZCQAB6wHtDQAC6wsABCUQAAH0BCUEAB+KAgAdWQkAAesB8gEAAusCAAHy AfQZAAGzAYoBuwMZAmUBuwYZAbsCZQG7ChkCZQGKBQAB/xQAARkLAAIJB/8DCQb/AgkB9AoAAboB9AkA
AesDAAHrAewBAAHsAesKAAQlEgAB/wMlAW8CAAG0AYoBZQK7GhkBigIAHVkJAAHrAfQBAALrAgAB8gHr C7IBswQAAbMBigG7BBkCZQG7BRkBZgJlAWYBCQgZAbsBZQEZAYoFAAH/FAABGQsAFAkB9AoAAboB9AgA
AwAB6wHsAQABkgHrCQAB/wMlFAAB9AMlAgABswGKAmUCuxkZAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMA AQkMsgQAAbMBigG7BRkCZQG7AxkBuwFlAWYBkQFlAbsHGQEJAmUBGQGKBQAB/xQAARkLABQJAfQKAAG6
AesB7AEAAZIB6wkAAyUBFhUAAUYDJQEAAbMBigG7AmUBuwEJGBkBigIAHVkJAAHrAfQBAALrAgAB8gHr AfQEAAT0AbMBsgH0CAABugGyBAABswGKAbsGGQFlAWYBuwEJAbsCZQIZAWUBZgEJBhkBZgFlAhkBigUA
AwAB6wHsAQABkgHrCAAB/wMlBQAM/wYAAyUBAAGzAYoBuwEZAmUBuwEJCRkBCQwZAbsBigIAHVkJAAHr Af8VshQAAfMCCRMAAboB9AIACLIB9AgAAboBsgQAAbMBigG7BhkBuwJlAbsCZQMZAQkBZQG7BRkBuwFl
AfQBAALrAgAB8gHrAwAB6wHsAQABkgHrCAADJQHzBQABbwslBgABRgIlAW8BswGKAbsCGQJlAbsIGQK7 AWwCGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZFAAB8wIJEwABugH0AgABsgUAAQkMsgQAAbMBigG7
CxkBCQFlAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlAbMBigG7 BxkBtQNlBRkCZQG7AxkBCQJlAxkBigUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQ0AB/8BGQIJB/8MAAG6
AxkCZQG7BhkBuwJlAbsKGQJlAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFv AfQCAAGyBgAMsgQAAbMBigG7EBkBCQFlAbsDGQGuAWUEGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZ
CyUHAAMlAbMBigG7BBkCZQG7BRkBZgJlAWYBCQgZAbsBZQEZAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMA DAAB8xIJCwABugH0AgABshYAAbMBigG7AhkBZgJlDBkCZQG7ARkBuwJlBBkBigUAAf8CAAGzAgABCQIA
AesB7AEAAZIB6wcAAf8DJQYAAW8LJQcAAyUBswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZ AfMCAAH/CAABGQwAAfMBCQ7/AwkLAAG6AfQCAAGyFgABswGKAbsBGQFlAYsCGQFlDBkBZQK7AmUFGQGK
AYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wcAAZQCJQEaBgABbwslBwADJQGzAYoBuwYZ BAAB/wGyFbQBsgsAAfMBCQ4AAwkKAAeyAbMEAAuyAbMEAAGzAYoBuwEZAWUBuwIZAWUMGQRlAZEFGQGK
AWUBZgG7AQkBuwJlAhkBZQFmAQkGGQFmAWUCGQGKAgAdWQkAAesB9AEAAusCAAHyAesDAAHrAewBAAGS BAABshcAAbIKAAHzAQkDAAIJCQADCQkAAQkIsgMAAQkMsgQAAbMBigG7ARkBZQG7AgkBZQ4ZAbUHGQGK
AesHAAFGAiUB9AYAAW8LJQcAAW8CJQGzAYoBuwYZAbsCZQG7AmUDGQEJAWUBuwUZAbsBZQFsAhkBigIA BAABshezAbIKAAHzAQkDAAIJCQADCQkAAboBsgH0BAABugGyA/QBswGyAfQIAAG6AbIEAAGzAYoBuwIZ
HVkJAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwABkwIlARoGAAFvCyUHAAMlAbMBigG7BxkBtQNl A2UBuxYZAYoEAAG6FwABsgoAAfMBCQ4AAwkJAAG6AbIB9AQAAboGsgH0CAABugGyBAABswGKAbscGQGK
BRkCZQG7AxkBCQJlAxkBigIAHVkJAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwAB/wIlAUwGAAFv BAABuhcAAbIKAAHzAQkOAAMJCQABCQiyAwABCQyyBAABswGKHbsBigQAAboXAAGyCgAB8xIJCgAIsgQA
CyUHAAMlAbMBigG7EBkBCQFlAbsDGQGuAWUEGQGKAgAdWQkAAesB9AEAAusCAAHyAesDAAHrAewBAAGS DLIFAB+KBAABugQAAbIB9AsAAQkBsgQAAbIKAAH/EQkB8ycAAf8crQG0BQABugMAAbIBAAGzCwABCQEA
AesIAAMlBgABbwslBwADJQGzAYoBuwIZAWYCZQwZAmUBuwEZAbsCZQQZAYoCAB1ZCQAB6wH0AQAC6wIA AbIDAAGyZwABugIAAbIDAAGyCQABsgMAAbMCAAGyZwABugGzAboEAAG6CAAC8wMAAf8BugGzAQlvAAGy
AfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlAbMBigG7ARkBZQGLAhkBZQwZAWUCuwJlBRkBigIA AQkFAAG6AbN5AAG6A7IBCW0AAUIBTQE+BwABPgMAASgDAAGAAwABQAMAAQEBAAEBBgABBBYAA/8BAAz/
HVkJAAHrAfQNAAGSAesIAAMlAf8FAAFvCyUGAAEWAyUBswGKAbsBGQFlAbsCGQFlDBkEZQGRBRkBigIA BAAM/wQABP8BwwT/AfwBPwH/BAABwAIAAQMBywT/AfABhwH/BAABwAIAAQEBwwT/AYQBMQH/BAABwAIA
ATEbWQExBwAC/wHrAfAN/wHsAesC/wYAAfQDJQUAARYLRgYAAyUB/wGzAYoBuwEZAWUBuwIJAWUOGQG1 AQEB4QT/AR4BPAF/BAABwAIAAQEB/AP/Af4BfwH/AT8EAAHAAgABAQH+AX8C/wH8Av8BnwQAAcACAAEB
BxkBigIAAzEBWBX/BDEHABXrBwADJQHzFQABbwMlAQABswGKAbsCGQNlAbsWGQGKAgADMQFYFf8EMQcA Af8BPwL/AfkC/wHfBAABwAIAAQEB/wGfAv8B+wL/Ac8EAAHAAgABAQH/Ac8C/wHzAv8B7wQAAcACAAEB
FesHAAEaAyUVAAMlAgABswGKAbscGQGKAgAdMQcAFesIAAQlEwAEJQIAAbMBih27AYoCABsxAXkNAALr Af8B5wL/AfcC/wHnBAABwAIAAQEB/wHzAv8B9wL/AfcEAAHAAgABAQH/AfkC/wH3Av8B9wQAAcACAAEB
BwAB6wHsDgAEJREABCUEAB+KAgASMRcAAusB9AUAAbwB6wHvDwAEJQHzDQABkwQlBQAB/xytAbQDABEx Af8B/AL/AcMC/wHDBAABwAIAAQEB/wH+AX8B/wHLAv8BywQAAcACAAEBAv8BPwH/AcMC/wHDBAABwAIA
AZkYAAnrEQAFJQH/CQAB8wUlJwARMRoAAfEFkgH0EwAHJQFvARsB9AEaAUYHJW4AARoPJQH/cQAB9Asl AQEC/wGfAf8B4wL/AeMEAAHAAgABAQL/Ac8B/wH3Av8B9wQAAcACAAEBAv8B5wH/AfcC/wHnBAABwAIA
Af93AAH/AZMBRgGTAf9ZAAH0BlUBdwH/dQANVXEAB1UBlwGYAXcGVQF3bgAEVQGYCQABdwRVawAB9ANV AQEC/wHzAf8B8wL/Ae8EAAHAAgABAQL/AfkB/wH7Av8BzwQAAcACAAEBAv8B/AH/AfkC/wHPBAABwAIA
AZ0NAAGXA1UB/xMAAf8BGQkJARkB/wgAAf8FCQH0AgABGQUJAf8CAAYJFAALsgGzCAAB/wNVEAAB/wNV AQEC/wH+AX8B/AL/AZ8EAAHAAgABAwP/AT8B/gF/Af8BPwQAAcABAAEPBP8BnwH/AT8B/gF/BAABwAEA
EwABuwuyAbsIAAH/BQkB9AIAARkFCQH/AgAGCRMAAQkMsggAA1USAAH/A1UIAAH/ARkICQKzCQkCswgA AQ8E/wHDAf8BjAE4Af8EAAHAAQABHwT/AcsB/wHgAYMB/wQAB/8BwwH/AfwBPwH/BAAH/wHjAf8B/gE/
Af8CCQH/AgkB9AIAARkBCQEZAf8CCQH/AgADCQH/AfIBCQoAAbMKsgH0CAABugGyBwADVRQAAfQCVQGX Af8EAAz/BAAM/wQAAf4C/wE/DP8B/gL/Ab8M/wH8AgABHwz/AfkBbQG/Ad8M/wH7AW0BvwHfAfABGAEM
BwACuwgJArMB/wcAAf8BswGyCAAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJAQAB8wEJCQAB8wGz AQ8C/wEAAQ8BwAIAAQEB+wFtAb8B3wHwARgBDAEPAf8B/gEAAQ8BgAMAAfgCAAEfAfABGAEMAQ8B/AEA
CAABugGyAfQIAAG6AbIGAAH/AlUBCAcAAfENAAF3AlUGAAH/AbMB/wcAAf8CswkJAbMBsggAAf8FCQH0 AT8BzwQAAfsC/wHfAfEBGAGMAU8B+QH+AT8BzwQAAfsC/wHfAfABGAEMAQ8B+QH+AQABDwQAAfsC/wHf
AgABGQUJAf8CAAYJCQABugH0CAABCQyyBgADVQgAAlUNAAJVAXcFAAH/AbMB/wgAAbsLsgG7CAAB/wUJ AfABGAEMAQ8B+QH/AQABDwQAAfsC/wHfAfgBOAEcAQ8B+QP/BAAB+wL/Ad8B/AH+AT8BHwH5A/8EAAH7
AfQCAAEZBQkB/wIABgkJAAG6AfQJAAyyBgACVQH0CAADVQwAAXcCVQUAAf8BswH/CAAB/wEZCQkBGQH/ Av8B3wH8AgABHwH5Af8BAAEPBAAB+wL/Ad8B/AIAAR8B+QH+AQABDwQAAfsC/wHfAfwCAAEfAfkB4AE/
CQAB/wIJAv8DAAL/AwkB/wMAAv8CCQHzAf8JAAG6AfQaAAEIAlUJAARVAfELAAJVAf8EAAH/AbMB/x8A Ac8EAAH4AgABHwH/Af4BPwH/AfkBgAE/Ac8EAAH7AW0BvwHfAf8B/gE/Af8B+QG+AQABDwQAAfsBbQG/
AgkHAAMJBgACCQH0CgABugH0GgADVQkABlUKAAJVAXcEAAH/AbMB/wgAAf8BGQkJARkB/woAAgkH/wMJ Ad8B/wIAAX8B+QG/AQABDwQAAfsBbQG/Ad8B/gIAAT8B+QG/Av8EAAH7AW0BvwHfAf4CAAE/AfkBvwL/
Bv8CCQH0CgABugH0CQALsgGzBQACVQGXCQAHVQkAA1UEAAH/AbMB/wgAAbsLsgG7CgAUCQH0CgABugH0 BAAB8AIAAQ8B/gF/Af4BPwHwAQ8BAAEPBAAB9wL/AfcB/gFzAf4BPwHgAQ4BAAEPBAAB8AIAAQcB/gFz
CAABCQyyBQACVQHzCQAIVQEIBwADVQQAAf8BswH/AwAF/wKzCQkCswoAFAkB9AoAAboB9AQABPQBswGy Af4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHgAQ4BAAEP
AfQIAAG6AbIFAAJVAfQJAAlVBwABnQJVBAAB/wGzAf8BAAH/AbsFswGyAbMB/wcAAf8BswGyEwAB8wIJ BAAB9wL/AfcB/gIAAT8B8AEPAQABDwGAAwAB9wGfAfwB9wH+AgABPwT/AYACAAEBAfcBXwH9AXcM/wH2
EwABugH0AgAIsgH0CAABugGyBQACVQHzCQAIVQgAA1UEAAH/AbMB/wEAARkBuwH/AwAB/wKzCQkBswGy Ae8B+wG3DP8B8QHvAfMBhw3/AfMB5w7/AfwBHw3/Cw==
EwAB8wIJEwABugH0AgABsgUAAQkMsgUAAlUBlwkABlUBCAkAA1UEAAH/AbMB/wEAAgkFAAG7C7IBuwwA </value>
B/8BGQIJB/8MAAG6AfQCAAGyBgAMsgUAA1UJAAVVAf8KAANVBAAB/wGzAf8BAAIJBQAB/wEZCQkBGQH/ </data>
CwAB8xIJCwABugH0AgABshcAAZgCVQkABFUMAAJVAfQEAAH/AbMB/wEAAgkdAAHzAQkO/wMJCwABugH0 <metadata name="imageListTool.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
AgABshgAAlUB/wgAAlUBCAwAAZcCVQQAAf8BGQGzAgkCugEZAf8DAAH/ARkJCQEZAf8LAAHzAQkOAAMJ <value>132, 17</value>
CgAHsgGzBAALsgGzBgADVQgAAVUOAANVBAABuweyAbsDAAG7C7IBuwsAAfMBCQMAAgkJAAMJCQABCQiy </metadata>
AwABCQyyBgAB9AJVAfMVAAGXAlUEAAH/ArMFCQKzA/8CswkJArMLAAHzAQkDAAIJCQADCQkAAboBsgH0 <data name="imageListTool.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
BAABugGyA/QBswGyAfQIAAG6AbIHAANVFQADVQQAAf8CswH/AwAB/wGzAbIDswGyAbMB/wcAAf8BswGy <value>
CwAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6AbIIAANVEwADVQUAAf8CswUJAbMBsgIAAf8CswkJ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
AbMBsgsAAfMBCQ4AAwkJAAEJCLIDAAEJDLIIAAHyA1URAANVBwABuweyAbsDAAG7C7IBuwsAAfMSCQoA LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
CLIEAAyyCQABCANVAfINAAGYA1UB9AcAAf8BGQUJARkB/wMAAf8BGQkJARkB/wsAAf8RCQHzLAAB8gRV ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABS
Af8JAAHyBFVuAAZVAZcB8QH0AfEHVXAAAfQNVQH/dAABmAdVAfD0AAHCCFoB8w4AAbwBbRrrAW0BBwH/ HAAAAk1TRnQBSQFMAgEBCAEAARgBAAEYAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AQAB8wHyG/8B9wgAAbMQAAH/AbsNAAHzDFoB9AsAAf8B6xwZAewB/wEAAREdCQHqBwABshEAAbIMABBa AwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wCnAAExAUYBMAFQ
CgAB/wHrAbsEUQG7FgkB7AH0AQABEQEJBFkBERcJAeoGAAGyAQkBsgIJAbMCCQG6AgkBuwcJAboBswoA UAABKAH6ARkB/wEoAfoBGQH/BAABKAH6ARkB/wEoAfoBGQH/GAABqAFbAQkB/wGoAVsBCQH/AagBWwEJ
BloBCAQAAZ4FWgoAAf8B6wG7AXMCdAFzAbsWCQHsAfQBAAERAQkBuwMTGAkB6gUAAv8BAAGzAgABCQIA Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
AfMCAAH/CAABCQkABVoB/wgAAf8DWgoAAf8B6xsJAewB6wH0AQABERwJAbsB6gUAAf8CAAGzAgABCQIA AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8YAAGFAWsBOAGeAdsBlgERAf8B2wGW
AfMCAAH/CAABGQgAAZ4EWgwAAeQB/woAAf8B6xsJAZEBbQH0AQABERwJAbsB6gUAAf8CAAGzAgABCQIA AREB/wHbAZYBEQH/AwABARwAATEBRgEwAVABKAH6ARkB/0AAAUEBkwE7AaABEgEUARIBGAgAATEBRgEw
AfMCAAH/CAABGQgABFoZAAH/AesbCQGRAW0B9AEAAREcCQG7AeoFAAH/ArMBshKzBwAEWhoAAf8B6xsJ AVAIAAE7AWABOAFsASEBKQEhATAMAAGbAXABPwHvAVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHS
AbsB6wH0AQABER0JAeoFAAH/FAABGQcAA1oB/xoAAf8B6xsJAZEB6wH0AQABERwJAbsB6gUAAf8UAAEZ Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
BgABngNaGwAB/wHrGwkBuwHrAfQBAAERHQkB6gUAAf8UAAEZBgADWgH/GwAB/wHrCwkBuwHsA+sBuwsJ AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/FAAB2wGWAREB/xQAAdsBlgERAf8gAAEoAfoBGQH/
AewB9AEAAREMCQURDAkB6gUAAf8UAAEZBgADWhQAA1oFAAH/AesLCQH3AWgCsQFvAZILCQHsAfQBAAER OAABOwHFATABzyQAASEBKQEhATAIAAGbAXABPwHvAeEBvQGKAf8BUgEpARAB/wHhAb0BigH/AfoB6wHS
DAkBQwMWAREMCQHqBQAB/xQAARkGAANaEwABCARaBAAB/wHrCwkB9wFvAhYBbwH3CwkB7AH0AQABEQwJ Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AUMBFgFvARYBEQwJAeoFAAH/FAABGQUAAf8DWhIAAf8GWgMAAf8B6wsJAfcEbwH3CwkB7AH0AQABEQwJ AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/EAAB2AGWARMB/UAAASgB+gEZAf9cAAE4AVgBNgFk
AUMBFgFZARYBEQwJAeoFAAH/FAABGQUAAZ4CWgGeEgAHWgEIAgAB8wESCrQBkQGuBG8B6wGRCrQB6gHx CAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
ARMNEQFDARYBWQEWDhEFAAH/FAABGQUAA1oBwhEACVoB/wEAARQMiwFtAW4CTAFvAW0MiwEUARENugFD AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
AREBWQFEARENugUAAf8VsgUAAZ4CWgGeEAALWgH/AeoFuwEJBdwBCQH3AW4CUgFuAZIBCQvcAW0BEQEJ Af8BUgEpARAB/xAAAUoBQgEyAVkcAAHbAZYBEQH/JAABKAH6ARkB/ywAASgB+gEZAf8sAAEoAfoBGQH/
AhEBCQERAUMHCQFDARUBWQFoARENCQUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQUAAf8DWg8ABFoBngNa BAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wHd
Af8EWgFtAbsBkQH3AbsB7QG7BgkB9wFuAo4BbwH3DAkB6wERDQkBQwMWARENCQUAAf8CAAGzAgABCQIA AbkBhwH/AVgBLwEWAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQ
AfMCAAH/CAABGQYAA1oPAARaAQADWgEAAf8DWgFtDAkB9wFvArEBbwH3DAkB6wERDQkBFAOUARENCQUA Af8B+gHrAdIB/zAAAUkBQAExAVcoAAEoAfoBGQH/KAABKAH6ARkB/ywAASgB+gEZAf8EAAGbAXABPwHv
Af8CAAGzAgABCQIAAfMCAAH/CAABGQYAA1oPAANaAgADWgIAAcACWgFtDAkBuwFtAusBbQH3DAkB6wER AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AVIBKQEQAf8B+gHr
DQkBkgMRAbsNCQUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQYAA1oQAAEbAgAB8wNaAwAB/wEAAW0eCQHr AdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BdgFTAToB/wH6AesB0gH/
AREfCQQAAf8BshW0AbIFAAF8A1oSAANaAZ4FAAFtHgkB6wERHwkEAAGyFwABsgUAA1oRAAH/A1oGAAFt IAAB2wGWAREB/zwAASgB+gEZAf8gAAExAUYBMAFQLAABMQFGATABUAgAAZsBcAE/Ae8B4QG9AYoB/wH6
HgkB6wERHgkBGQQAAbIXswGyBQAEWhAABFoGAAHrAfMc9AHzAesBAAESHf8BEQQAAboXAAGyBgAEWg4A AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
BFoHAAHzBuwBbQFKAeoM7AHqAUoB6gbsAfMIAAFEAUwNAAFSARELAAG6FwABsgYABVoMAARaAZ4OAAEH Af8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8gAAHbAZYBEQH/
AVIBHAH/CwABHAFSAe8PAAFEAVINAAFZARELAAG6FwABsgcABVoKAAVaDwABBwFSARwB/wsAARwBUgHv QAABKAH6ARkB/yAAASgB+gEZAf8sAAEoAfoBGQH/BAABmwFwAT8B7wHhAb0BigH/AVIBKQEQAf8B+gHr
DwABRAFSDQABWQERCwABugQAAbIB9AsAAQkBsgQAAbIIAAZaBgAGWhAAAQcBUgEcAf8LAAEcAVIB7w8A AdIB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AUQBUg0AAVkBEQsAAboDAAGyAQABswsAAQkBAAGyAwABsgkAEFoRAAG8AVIBSwH/CgAB/wFuAVIBBw8A AdoBtgGEAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/xAAAdsBlgERAf8MAAHbAZYBEQH/
AREBWQHqCwABEQFZARELAAG6AgABsgMAAbIJAAGyAwABswIAAbIKAAHkDFoBnhIAAfMBdAFSAewKBwHs EAABzAGQARsB8DAAASgB+gEZAf8cAAEoAfoBGQH/LAABKAH6ARkB/wQAAZsBcAE/Ae8B4QG9AYoB/wFS
AVIBdAHyDwABvAF6AVkLEQFZARoB/wsAAboBswG6BAABuggAAvMDAAH/AboBswEJDAAKWhQAAf8B7wF0 ASkBEAH/AekBzAGhAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
AVkKUgFZAXQB9wH/EAABEQH/AcMJmgHDAfEBExQAAbIBCQUAAboBsxcAAfQCngH/GAAB/wG8AewL6wEH Af8B+gHrAdIB/wH2AecBzgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8UAAF6AWQBOQGQ
Af8TAAEUCREBExgAAboDsgEJEQAY/woAFP8IAB2yJQAZ1AcAAf8XrAUAA7IEuhCyBboDsiQAGdQHABms CAAB2wGWAREB/0gAASgB+gEZAf9EAAESARQBEgEYCAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHr
AwAB/wKyBQAQsgYAArIkAALUAgAC1A0AAtQCAALUBgACrAEJFQABsgGsAfQCAAGzAbIB8wUAELIGAAG6 AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AbIkAALUAgAC1A0AAtQCAALUBgACrBcAAqwCAAKyAfQFABCyBgABugGyCAAR9AsAAtQCAALUDQAC1AIA AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/xgAAdsBlgERAf8EAAHbAZYBEQH/
AtQGAAKsFwACrAIAArIB9AUAELIGAAG6AbIGAAGzE7IBCQkAAtQCAALUAwAB1QXUAfMDAALUAgAC1AYA DAAB2wGWAREB/zwAASgB+gEZAf8YAAEoAfoBGQH/JAABQAGaATkBqAwAAagBWwEJAf8BqAFbAQkB/wGo
AqwXAAKsAgACsgH0BQAQsgYAAboBsgYAArIQGQEJArIJAALUAgAC1AMABtQB3QMAAtQCAALUBgACrBcA AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJ
AqwCAAKyAfQFABCyBgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0 Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/KAAB2wGWAREB/wFeAVABNwFw
BQABsw+yBgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0BQAB9A+y RAABKAH6ARkB/xgAASgB+gEZAf8cAAE8AbwBMwHHwAABMQFGATABUCAAASgB+gEZAf8BKAH6ARkB/wQA
BgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0BgAPsgYAAboBsgUA ASgB+gEZAf8BKAH6ARkB/8wAATEBRgEwAVAkAAExAUYBMAFQ/wD/AP8APwAB2wGWAQ8B/wHbAZYBDwH/
AfQBsgEJEQACsgkAAtQCABHUAgAC1AYAAqwXAAKsAgACsgH0BgAB/w2yBwABugGyBQAB9AGyAQkRAAKy AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8MAAGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
CQAC1AIAEdQCAALUBgACrBcAAqwCAAKyAfQIAAHzCboB/wgAAboBsgUAAfQBsgEJEQACsgkAAtQCAAH/ AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJ
D/MDAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCREAArIJAALUFQAC1AYAAqwXAAKsAgACsgH0 Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wQAAagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/
GwABugGyBQAB9AGyAQkIAAG6CAACsgkAAtQVAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCQcA AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFb
AboCshIAAtQVAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCQgAA7IRAALUFQAC1AYAAqwXAAKs AQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/BAABqAFbAQkB/wGoAVsBCQH/AagBWwEJ
AgACsgH0GwABugGyBQAB9AGyAQkJAAOyEAAC1BUAAtQGAAKsBAABsw2sAQkEAAKsAgACsgH0GwABugGy Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
BQAB9AGyAQkKAAOyBQABugkAAtQVAALUBgACrAQAD6wEAAKsAgACsgH0GwABugGyBQAB9AGyAQkLAAOy AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8MAAGVAXcBPAHfEAAB2wGWAQ8B/xAA
AwACsgkAAtQVAALUBgACrAQAAqwLAAKsBAACrAIAArIB9BsAAboBsgUAAfQBsgEJDAADsgIAArIJAALU AXIBZAFMAcAIAAGbAXABPwHvAVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
FQAC1AYAAqwEAAKsCwACrAQAAqwCAAKyAfQHAA30BwABugGyBQAB9AGyAQkNAAOyAQACsgkAAtQCAAzU AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
AQkGAALUBgACrAQAAqwGAAEZAawDAAKsBAACrAIAArIB9AUAEbIFAAG6AbIFAAH0AbIBCQ4ABbIJAALU Af8B+gHrAdIB/wH6AesB0gH/AZsBcAE/Ae8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
AgAN1AUAA9QGAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AQAE7IEAAG6AbIFAAH0AbIBuw8ABLIJAALU AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
AgAN1AQAA9QHAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AMAAfQTsgQAAboBsgYACrIEAAeyCQAC1AIA Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BmwFwAT8B7wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6
DdQDAAPUAf8HAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AMAAbsTsgH0AwABugGyBgABCQmyAwABugey AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
CQAC1AIADdQCAAPUAf8IAAKsBAACrAcAAf8DAAKsBAACrAIAArIB9AMAAboTsgH0AwABugGyJAAC1AIA Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wwAAyoBQBAAAdsBlgEPAf8B2wGWAQ8B/wHb
DdQBAAPUCgACrAQAAqwLAAKsAwABCQGsAQkCAAKyAfQDAAG6E7IB9AMAAboBsiQAFNQLAAH/AqwBtAIZ AZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/CAABmwFwAT8B7wHhAb0BigH/AVIBKQEQAf8B4QG9
AqwLtAKsAhkBswKsAwAB9AGyAbMDAAG6E7IB9AMAArIkABPUAf8MAAGzF6wB8wQAArIBswL0AboTsgEZ AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfQB8wOyJAAB8xHdAf8OAAH/AbMTrAG0BgAB/x2yZAAB9BiyAbMmAAGXA1UBCD8AAf8B9AHcAdQK0wHU AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wGbAXABPwHvAeEBvQGKAf8BUgEp
AdsBGQH/KQABwgZVAfQiAAH/AZMBbwMXAW8BGgH/EAAB/wHbEtMB1AH0CQAB/wHvARQSDwERAewB8wYA ARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
CVUB/x4AARYLFwEaDQABGRbTAdUB/wUAAf8B7xgAARQB/wQAClUBlxsAAbcPFwH/CgABGRjTAdQFAAEH AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/AZsBcAE/Ae8B4QG9
AQABDgHxFAAB/wFtAQABEQH/AwAMVQHCGAASFwGTCAAB/xrTARkDAAH/ARABDgHzFgAB/wFtAQABvAMA AYoB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
DlUB/xUAFBcBFgcAARka0wHUAwAB8gEAARUB/xcAAfABAAHtAwAQVRMAFhcBkwYAAQkN0wGyDNMB1AMA AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8MAAMq
AfEBAAETAf8XAAHxAQAB7AMAEVUBmBAAARYXFwH/BQAB8w3TAW0M0wHUAwAB8gEAARUB/xcAAfEBAAHt AUAwAAGbAXABPwHvAeEBvQGKAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/
AwATVQHyDQAB/xkXBQAB/wzTAbIBSgzTAQkDAAHzAQABEAH/FwABBwEAAe8DABVVAf8LAAYXARYN/wYX AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
ARoFAAHUC9MBiwFKDNMB/wMAAf8BEQEOAfQXAAHsAQABvAMAFlUBlwkAAf8GFwEWDf8HFwUAAfML0wHq AdIB/wFSASkBEAH/AZsBcAE/Ae8B4QG9AYoB/wH6AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/
AUoBrQrTAdUFAAHrAQAB8RYAAf8BEQEAAfMDABhVAZgHAAGTBhcBFg3/BxcB/wUAC9MCSgFtCtMB/wUA AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AbwBAAHsAf8VAAHwAQABQwH/AwAaVQH0BQAHFwEWDf8HFwEaBQAB8wnTAawDRAHNCNMB1QYAAfQBDgEA AdIB/wH6AesB0gH/AVIBKQEQAf8BmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/
AfEGAAH/AfIBkgHqARIB7AG8Af8GAAH/ARIBAAHwBAAbVQGYBAAHFwEWDf8HFwFvBgAB1AbTAqwBbANE AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AqwBzQbTAf8HAAHxAQABDwHzAwAB/wHrCAABEAHxAwAB/wHqAQAB6gH/BAAcVQH/AwAHFwEWDf8IFwYA AdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wwAAyoBQBAAAdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/
Af8F0wOsAUoDRAGLAqwF0wHzCAAB/wHvAgABFQH3AewCAAERAQcB/wIAAf8B8gFtAgABEAHvAW0CAAES AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/CAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wFS
Af8FABxVAZgDAAcXARYN/wgXBwAB9ATTA6wBSgJuAUoBEgOsA9MBGQsAAfMBFAMAAQ8B8ggAAf8B7AMA ASkBEAH/AeEBvQGKAf8B+gHrAdIB/wHdAbkBhwH/AVgBLwEWAf8BUgEpARAB/wH6AesB0gH/AfoB6wHS
AQ4BBwH/BgAcVQEbAwAHFwEWDf8IFwgAAf8D0wKsAfcEmgF0AqwBzQLTAfQOAAT/AQAB/wHwAewCEwHs Af8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B+gHrAdIB/wGbAXABPwHvAeEBvQGKAf8B+gHrAdIB/wH6
AfAB/wIAA/8JABxVBAAHFwEWDf8HFwFvCQAB/wEJAtMBHAeaAawB0wEJAf8SAAH/AewIAAHsAf8MABpV AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/Ad0BuQGHAf8BWAEvARYB/wFSASkBEAH/AfoB6wHS
AZcFAAcXARYN/wcXAZMMAAEaCZoUAAH0AQ4BAAEQAfAB/wIAAf8B8AEPAQABEQH0CwAZVQH/BgABFgYX Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AZsBcAE/Ae8B4QG9AYoB/wH6
ARYN/wcXAf8LAAH/CpoB8xIAAfQBDgEAAfcHAAH/Ae0BAAEPAf8KABdVAfEIAAH0BhcBFg3/BxcMAAEa AesB0gH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B3QG5AYcB/wFYAS8BFgH/AVIBKQEQ
C5oSAAHsAQABkgoAAZIBAAHsAf8JABVWAZgLAAYXARYN/wYXARYLAAH/DJoB9BAAAfQBDgEQAf8KAAH0 Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AfoB6wHSAf8MAAMqAUAEAAHb
AQ4BAAH0CQAUVgH/DAABGgYXDRYGFwwAAfQMmgEaEAAB8QEAAW0B/woAAf8B6gEAAfEJABJWAfQPABgX AZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/EAABcgFkAUwBwAgAAZsBcAE/Ae8B4QG9AYoB/wH6
AbcMAAEaC5oBkwHrEAABvAEAAesB/woAAf8B6wEAAfAJABBWAQgRAAH/FxcNAAEcAewD6wFzAZMEmgGZ AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8BUgEpARAB/wH6AesB0gH/AecB1QG8
Am0QAAHyAQABEwH/CgAB/wEVAQAB8gkADlYBlxQAAfQVFw4AAewHbQEcApoB6wJtEAAB/wFDAQ4B9AoA Af8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wF2AVMBOgH/AfoB6wHSAf8BmwFwAT8B7wHh
AfIBAAEQAf8JAA1WAf8WAAH0ExcPAAEHCG0B6wGTAm0B7BEAAQcBAAERAf8IAAH/ARQBAAG8CgALVgH0 Ab0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B4QG9AYoB/wFSASkBEAH/AfoB6wHS
GQAB/xAXARYQAAH/DG0B8BEAAf8B7AEAAREB8wYAAfMBEAEAAesB/woACVYBCB0AARoNFwH/EgAB7Qtt Af8B5wHVAbwB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/AXYBUwE6Af8B+gHrAdIB/wGb
EwAB/wHsAgABEQH3AvAB9wERAgABkgwAAZgGVgGXIQAB9AEWBxcBkwH/FAAB/wHrCW0B9BUAAfQB6gYA AXABPwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AVIBKQEQ
AeoB9A4ABVYB/0IAAf8BkgZtAewB/xkAAf8C9AH/EgACCAH/RgAB9AHvAusB9wHzjQAB/x4AAREhAAHy Af8B+gHrAdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BdgFTAToB/wH6
HO0B7wH/AQAB8gHtCZIB7QHsAesDbQHsAe0JkgHtAe8B/wFtKgAL/wsAAfIB8An/AfMB8A//AfQBBwH/ AesB0gH/DAADKgFAEAAB2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEP
AQAB8gHxBv8B9AP/Au8CFAHsAbwB8wL/AfQG/wH0AQcB/ykAD+sJAAHzAbwJ/wHxAe8E/wLyCf8B8gG8 Af8IAAGbAXABPwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AgAB8wG8Bf8B9AHvA/8B7wHzARIBEwHwAbwB8wL/Ae0B8wX/AfEBvCkAAusB8Qv/AfcB6wH3CAAB/wHv AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B+gHr
Cf8B8QHvBP8CBwn/AfcB9AIAAf8B9wX/AQcB8QP/Ae0B7wHrAeoB7wHsAfMC/wH0Ae8F/wH3AfQOAAEP AdIB/wH6AesB0gH/AZsBcAE/Ae8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
Ae0B8QHzAfABbQEOFAAB6wH3DQAC6wkAAfMB9wj/AfEB7wH/AfMB8gHzAe8BBwj/AbwB8QQAAfMB9wT/ AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8BUgEp
AfMB7wP/Ae8B9AHrAW0B9AG8AfMC/wGSAfIE/wG8AfENAAERAfQGAAH/AfISAAH/AesB9AEAAusCAAHw ARAB/wH6AesB0gH/AfoB6wHSAf8BmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AesDAAHrAewBAAHsAesKAAH0AfcE/wH0AQcB7QH3AQcBkgHzAf8BBwHvAQcBkgHtAfEE/wEHAfAB/wUA AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AfoB6wHSAf8B+gHr
AfMB7wj/Ae0B7wL/AQcB7QHzB/8BBwG8Af8MAAH3CwABEhAAAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEA AdIB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wwAAyoBQDAAAZsBcAE/Ae8B4QG9AYoB/wFSASkBEAH/
AewB6wsAAf8BvAH3AbwB7QG8A/QB9wH0A/8B7wHyAvQB8wH3AQcC7wH/CAAB/wEHAfcB8wX/Ae8B9AP/ AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AQcB8wT/AfQBBwHvAf8NAAEHDQABQw8AAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w0AAfQB7wH/ AdIB/wHaAbYBhAH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BmwFwAT8B7wHhAb0BigH/
A/QB8wH3BP8B7wHxBPQBvAHwDQAB/wHzAfID8QHvAf8C9AH/AQcB8APxAfMB/w8AAW0GAAP/FQAB9AHr AVIBKQEQAf8B+gHrAdIB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
Af8BAALrAgAB8AHrAwAB6wHsAQAB7AHrDQAB/wHxAfcB8ALzAZIB7AHvAbwB8AEHAZIB7AHvAfMB8AHv AdIB/wH6AesB0gH/AdoBtgGEAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wGbAXABPwHv
AQcB/xEAAf8B8AHsAQcB8gHzAbwB7QHvAfQYAAHzARADAAETAf8EAAH0DgAB9AHrAf8BAALrAgAB8AHr AeEBvQGKAf8BUgEpARAB/wH6AesB0gH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AwAB6wHsAQAB7AHrEAAB/wH3Ae8B9AL/A/QB/wH0AfIB7AHwAf8RAAH/AbwB7wj/AfAB9wH/EAAB9wQA AdIB/wH6AesB0gH/AfoB6wHSAf8B2gG2AYQB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfcHAAH0BAABDg0AAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w8AAf8B9wHzAfQC/wH0AQcB7wG8 CAAB2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wgAAdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/
A/8B9AG8AQcQAAH/Ae8B9AP/AfMCBwHyBP8BkgHyEwAB8gkAAf8DAAHzDQAB9AHrAf8BAALrAgAB8AHr AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/CAABmwFwAT8B7wHhAb0BigH/AVIBKQEQAf8B6QHMAaEB/wFS
AwAB6wHsAQAB7AHrDgAB/wHsAfMB9AL/AfQB8AEHAe8BBwHxAv8C9AG8AQcB/w0AAf8B7wHzA/8B9AHw ASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfYB5wHO
AgcBvAHzBP8B7wHzHAABFREAAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w0AAf8BvAHxAvQB8wHv Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wGbAXABPwHvAeEBvQGKAf8BUgEpARAB/wHp
AfMF/wHxAe8B8wL0AfcB8wwAAf8BBwHwAv8B8AH3AfME/wH0AQcB9wL/AfQB9wH/DAABbQMAAf8cAAH0 AcwBoQH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
AesB/wEAAusCAAHwAesDAAHrAewBAAHsAesNAAH/AQcD/wv0Av8B8wEHAf8LAAH0AfcQ/wEHAfEMAAEH Af8B9gHnAc4B/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AZsBcAE/Ae8B4QG9AYoB/wFS
AwAB7QsAAf8DAAEODAAB9AHrAf8BAALrAgAB8AHrAwAB6wHsAQAB7AHrDAAB8gHtAQcI/wEHAfcB9AX/ ASkBEAH/AekBzAGhAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
AfQB7QH3Af8JAAHxAewBvAj/AfcB7wb/AfMB7AG8Af8KAAHyAwABEwsAAfMDAAFDDAAB9AHrAf8BAALr Af8B+gHrAdIB/wH2AecBzgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8IAAHbAZYBDwH/
AgAB8AHrAwAB6wHsAQAB7AHrCwAB8wG8AfIBvAL/AfIBvAHxA/8B9AHvAv8B8QHwAfIC/wHvAfQB7wH/ CAABcgFkAUwBwAHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/xAAAXIBZAFMAcAIAAGbAXABPwHvAeEBvQGK
BwAB8QHwAbwB8QL/A/QD/wG8Ae8C/wL0AfYB/wHzAfcB8gEHCgAB8AMAAesLAAH0AwABEAwAAfQB6wH/ Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AQAC6wIAAfAB6wMAAesB7AEAAewB6woAAf8B8QHvAQcBvAL3AfEB8wHxAfcB7AH0Af8BvAHsAbwB8wHy AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AZsBcAE/
AQcB7QH0A+8B8wYAAf8BvALvAfIQ/wH0AfcBBwH3Af8JAAGSAwAB8RwAAfQB6wH/AQAC6wIAAfAB6wMA Ae8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB7AEAAewB6woAAf8BvAHvAesBbQHzAf8B8QHtAe8B/wG8AfcB8wHsAvQBBwHvAfQB/wPsAQcB8gH/ AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
BQAB/wEHAfcB7AHyAv8B8wEHAfQH/wK8A/8B7AGSAfcB9AkAAQ8DAAH/HAAB9AHrAf8BAALrAgAB8AHr Af8BmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AwAB6wHsAQAB7AHrCgAB/wG8AfABBwHqAfIC/wLzAfEB9wESAeoB6wHwAfIC8wL/AesBbQHyAe8B8wYA AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8BBwH/AQcB8wL/AfQB8Aj/AvED/wH3AfQB7QH0DgAB6wkAAfIDAAH/DQAB9AHrAf8NAAHsAesLAAL/ Af8B+gHrAdIB/wgAAdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8IAAHbAZYBDwH/AdsBlgEP
AQcB6wHtAfcB7wEHAfAB8QHzAv8B9AHyAfABvAEHAfcB7QHsAW0B8QH/CAAB/wHzAewB8QG8AZIC8wG8 Af8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wwAAagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/
AQcE/wHwAQcC8wHvAfcB9AHtAfIB/wsAAfMEAAEOBwAB6gQAAW0MAAL/AesB8w3/AewB6wL/CwABBwHt AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFb
Ef8B6wHzCgAB/wFtARIB8AL/AfQI/wL0Av8B9AFtAfIMAAEOBAAB/wHqBQAB7xIAFesLAAEHAesB8w// AQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/BAABqAFbAQkB/wGoAVsBCQH/AagBWwEJ
AbwB6wHyCgAB8gETARQB6gHxCf8D9AL/AfEBEwH3Af8MAAHxBQAB/wEHAZIBvAH/BQAB6g0AFesLAAHw Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
AuwO/wHyAesB7QHzCgAB8AMUAfcD/wHxAZIB6gETCRQB7AH/DQAB/w0AAfIOABXrCwAB8wPtAfMBBwHs AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8EAAGoAVsBCQH/AagBWwEJAf8BqAFb
Am0D6wFtAewB7wH0AfAB7AH3Ae0B9AoAAbwDFAHsAfQB7A4UAW0B/w4AAf8LAAHxFAAC6wcAAesB7BAA AQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/
Af8D9wHtAvcDkgH3AZID9wLtAfcBkgHvAf8KAAH0ARICFAETEBQB7AH/BAAB7AoAAfEIAAH/AZIVAALr AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB//8A/wD/AAMAAUIBTQE+BwABPgMA
Af8FAAHwAesBBxEAAfMB6wf3Ae0H9wHsAf8LAAH/AfMB7AESERQBBwH/BAAB/wEOCgABDwG8Af8DAAH/ ASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/4EADP8BvwH/AfwBnwGAAQAB/AEfAc8B/wHzAWcCAAH7
AZIBDgoAAeoLAAH/CesTAAHzAesB7AGSBPcBkgb3Ae0B/w8AAf8B7w8UAewB/wcABf8BkhEAAfAF/w4A Ae8B9wH/Ae8B+wIAAfcB/wH7Av8B+wIAAvcB/QH/Ad8B/QIAAf8B9wH+Af8B3wH9AgAB/wF/Af8BfwG/
AQcF7AHyFgAB/wEHAewB9wHtAZID9wHsAe0B7AHvAf8RAAH/AesMFAESAbwfAAHsMwAB/wG8AfMB9wLs AfsCAAH/AX8B/wG/Ad8B/QIAAfcBewH/At8B/QIAAfsBfwH/Ae8B/wH7AgAB/QF3Af8B9wHvAfsBgAEA
Ae8D/xQAAf8B8AFtBxQBbQHvAfQB/xAAARIPAAHzNwAC/xsABv8VAAHzgAAB8AwAARAB/ykAAfMB8Rv/ Af8BzwH/AfsC9wX/AfsB/AGfBf8B/QH/AX8Z/wEDAYABAAGAAQABgAEAAe8BewYAAe8BAwYAAe8B/wYA
AfcB/wEAH2dBAAERHQkB6gH0AWcdmAFnQQABEQEJBFkBERcJAeoB7QFnHZgBZyIAAfYbWQMAAREBCQG7 Ae8BAwYAAegBewYAAe8BAwYAAe8B/wYAAcMBAwYAAdgBewYAAcMBAwGAAQABgAEAAYABABj/Cw==
AxIYCQHqAe0BZwyYAW0DZwHsDJgBZyIAHVkCAAERHAkBuwHqAe0BZwqYAewHZwGSCpgBZxYAAroKAB1Z
AgABERwJAbsB6gHtAWcJmAHqAmcF/wJnAesJmAFnFgACsgoAHVkCAAERHAkBuwHqAe0BZwmYAWcB9wf/
AW0BZwmYAWcHAAqyBQACsgoAHVkCAAERHQkB6gHtAWcImAJnCf8CZwiYAWcHAAqyBQACsgoAHVkCAAER
HAkBuwHqAe0BZweYAesBZwT/AfMB7QH0BP8BZwiYAWcHAAKyCgAIsgG6BgAdWQIAAREdCQHqAe0BZweY
AWcB6wP/BWcD/wJnB5gBZwcAArIKAAiyAboGAB1ZAgABEQwJAREDQwERDAkB6gHtAWcHmAFnA/8B7AFn
ApgB7QFnAQcC/wH0AWcHmAFnBwACsg0AArIKAB1ZAgABEQwJAUMDFgERDAkB6gHtAWcHmAFnA/8BZwHs
A5gCZwP/AWcHmAFnBwACsg0AArIKAB1ZAgABEQwJAUMBFgFvARYBEQwJAeoB7QFnB5gBZwP/AWcFmAFn
A/8BZweYAWcHAAKyAwAIGQIAArIKAB1ZAgABEQwJAUMBFgFZARYBEQwJAeoB7QFnB5gBZwP/AWcFmAFn
A/8BZweYAWcHAAKyAwAIsg4AHVkBAAHqDREBQwEWAVkBFg0RAUMB7QFnB5gBZwP/AWcB7QOYAeoBZwP/
AWcHmAFnBwACsgMACLoDAAL0Af8IAB1ZAQABEQ26AkMBWQFEARENugHtAWcHmAFnA/8CZwOYAWcB7QL/
AfQBZweYAWcHAAKyDgABtAGyAQkIAB1ZAQABEQEJAhUBCQEVARQHCQFDAUQBegFoARENCQHtAWcHmAFn
AY0D/wVnA/8CZweYAWcHAAKyDgABtAGyAQkIAB1ZAQABEQ0JAUMDFgERDQkB7QFnB5gB6wFnBP8B9wFn
AbwE/wFnAZIHmAFnBwACsg4AAbQBsgEJCAAdWQEAARENCQEUA5QBEQ0JAe0BZwiYAWcB6wn/AmcImAFn
BwACsgMACBkDAAG0AbIBCQgAHVkBAAERDQkBkQMSAfcNCQHtAWcImAHsAWcB8Af/AZIBZwOYBWcBmAFn
BwACsgMACLIDAAG0AbIBCQgAATEbWQExAQABER8JAe0BZwmYA2cF/wJnAeoDmAVnAZgBZwcAArIDAAiz
AwABtAGyAQkIAAMxAVgV/wQxAQABER8JAe0BZwqYAW0HZwHsBJgBZwPjAWcBmAFnBwACsg4AAbQBsgEJ
CAADMQFYFf8EMQEAAREBGR0JARkB7QFnDJgFZwaYBWcBmAFnBwACsg4AAbQBsgEJCAAdMQIAAW0d/wEU
Ae0BZxeYAW0DZwHsAZgBZwcAArIOAAG0AbIBCQgAGzEBeQQABv8BRAFLDf8BMQERBv8BAAHwAWcdmAFn
BwACsg4AAbQBsgEJCAASMRQAAUQBUg0AAVkBEQgAH2cHABKyAQkIABExAZkUAAFEAVINAAFZAREJAAUH
AmcPbgFnAewFBwgAErIBCQgAETEVAAFEAVINAAFZAREOAAHxAWcPmgFnAf9OAAERAVkBbQsAAUMBWQER
DgAB/wFnD5oBZwH/TgABBwF6AVMLEQFZARoB/w8AAWcPmgFnUAABEQH/AcMJmgHDAfEBExAAEWdSAAEU
CREBExIAAfQPZwH/LgABsxAAAf8Bu20AAbIRAAGybAABsgEJAbICCQGzAgkBugIJAbsHCQG6AbNqAAL/
AQABswIAAQkCAAHzAgAB/wgAAQlqAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/
AgAGCRQAC7IBswYAHfQGAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRMA
AQkMsgUAH4oFAAH/ArMBshKzCQAB/wIJAf8CCQH0AgABGQEJARkB/wIJAf8CAAMJAf8B8gEJCgABswqy
AfQIAAG6AbIEAAG0AYoBZQK7GhkBigUAAf8UAAEZCQAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJ
AQAB8wEJCQAB8wGzCAABugGyAfQIAAG6AbIEAAGzAYoCZQK7GRkBigUAAf8UAAEZCQAB/wUJAfQCAAEZ
BQkB/wIABgkJAAG6AfQIAAEJDLIEAAGzAYoBuwJlAbsBCRgZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJ
Af8CAAYJCQABugH0CQAMsgQAAbMBigG7ARkCZQG7AQkJGQEJDBkBuwGKBQAB/xQAARkKAAH/AgkC/wMA
Av8DCQH/AwAC/wIJAfMB/wkAAboB9BkAAbMBigG7AhkCZQG7CBkCuwsZAQkBZQGKBQAB/xQAARkLAAIJ
BwADCQYAAgkB9AoAAboB9BkAAbMBigG7AxkCZQG7BhkBuwJlAbsKGQJlAYoFAAH/FAABGQsAAgkH/wMJ
Bv8CCQH0CgABugH0CQALsgGzBAABswGKAbsEGQJlAbsFGQFmAmUBZgEJCBkBuwFlARkBigUAAf8UAAEZ
CwAUCQH0CgABugH0CAABCQyyBAABswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZAYoFAAH/
FAABGQsAFAkB9AoAAboB9AQABPQBswGyAfQIAAG6AbIEAAGzAYoBuwYZAWUBZgG7AQkBuwJlAhkBZQFm
AQkGGQFmAWUCGQGKBQAB/xWyFAAB8wIJEwABugH0AgAIsgH0CAABugGyBAABswGKAbsGGQG7AmUBuwJl
AxkBCQFlAbsFGQG7AWUBbAIZAYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkUAAHzAgkTAAG6AfQCAAGy
BQABCQyyBAABswGKAbsHGQG1A2UFGQJlAbsDGQEJAmUDGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZ
DQAH/wEZAgkH/wwAAboB9AIAAbIGAAyyBAABswGKAbsQGQEJAWUBuwMZAa4BZQQZAYoFAAH/AgABswIA
AQkCAAHzAgAB/wgAARkMAAHzEgkLAAG6AfQCAAGyFgABswGKAbsCGQFmAmUMGQJlAbsBGQG7AmUEGQGK
BQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDAAB8wEJDv8DCQsAAboB9AIAAbIWAAGzAYoBuwEZAWUBiwIZ
AWUMGQFlArsCZQUZAYoEAAH/AbIVtAGyCwAB8wEJDgADCQoAB7IBswQAC7IBswQAAbMBigG7ARkBZQG7
AhkBZQwZBGUBkQUZAYoEAAGyFwABsgoAAfMBCQMAAgkJAAMJCQABCQiyAwABCQyyBAABswGKAbsBGQFl
AbsCCQFlDhkBtQcZAYoEAAGyF7MBsgoAAfMBCQMAAgkJAAMJCQABugGyAfQEAAG6AbID9AGzAbIB9AgA
AboBsgQAAbMBigG7AhkDZQG7FhkBigQAAboXAAGyCgAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6
AbIEAAGzAYoBuxwZAYoEAAG6FwABsgoAAfMBCQ4AAwkJAAEJCLIDAAEJDLIEAAGzAYoduwGKBAABuhcA
AbIKAAHzEgkKAAiyBAAMsgUAH4oEAAG6BAABsgH0CwABCQGyBAABsgoAAf8RCQHzJwAB/xytAbQFAAG6
AwABsgEAAbMLAAEJAQABsgMAAbJnAAG6AgABsgMAAbIJAAGyAwABswIAAbJnAAG6AbMBugQAAboIAALz
AwAB/wG6AbMBCW8AAbIBCQUAAboBs3kAAboDsgEJbQABQgFNAT4HAAE+AwABKAMAAYADAAEgAQECAAEB
AQABAQYAARIWAAP/AQABgAMABf8BhwL/CAAF/wGHAfABDwgABf8BhwHwAQ8IAAX/AYcB8AEPCAAC/wH8
Av8BhwH/Ac8IAAL/AfwB/wHwAQABHwHPCAAB/gEAAXwB/wHwAQABHwHPCAAB/gEAAXwB/wHwAQABHwHP
CAAB/gF/AeABDwHwAQABHwHPCAAB/gF/AeABDwHwAQABHwHPCAAB/gF/AfwC/wGHAf8BzwgAAf4BfwH8
Av8BhwH/Ac8IAAH+AXABDAL/AYcB/wHPCAAB/gFwAQ8C/wGHAf8BzwgAAf4BcAEOAT8B/wGHAf8BzwgA
Af4BfwH+AT8D/wHPCAAB/gF/Af4BPwP/Ac8IAAH+AX8B/gE/A/8BzwgAAf4BcAEOAT8D/wHPCAAB/gFw
AQ4BPwP/Ac8IAAH+AXABDgE/AfEC/wHPCAAB/gF/Af4BPwHxAv8BzwgAAf4BfwH+AT8B8QL/Ac8IAAH+
AX8B/gE/AfEC/wHPCAAB/gF/Af4BPwHxAv8BzwQAAYADAAH+AgABPwHxAv8BzwQAAcACAAEBAf4CAAE/
AfEC/wHPBAAB/gIAAT8E/wHxAv8BzwQAAf8CAAF/BP8B8AIAAQ8EAAH/AgABfwT/AfACAAEPBAAB/wIA
AX8I/wQAAf8CAAF/CP8EAAX/AeABAw7/AYABAAr/AeABAwH/Af4CAAE/Cf8BgAEAAf8B/AEPAfgBHwT/
AcACAAEDAf8BHwH8AX8B+AE/Af4BDwHAAgABAQHAAgABAQH/AT8B/gF/AfAC/wEHAYADAAHAAgABAQH/
ASYBcgF/AeEC/wGDBAABwAIAAQEB/wEmAXIBfwHDAv8BwwQAAcACAAEBAf8BJgFyAX8BwwL/AeEEAAHA
AgABAQH/ASYBcgF/AYcBwAEDAfEEAAHAAgABAQH/ASYBcgF/AYcBwAEDAfAEAAHAAgABAQH/ASYBcgF/
AY8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AY8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHA
AgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/
AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AY8BwAEDAfgEAAHA
AgABAQH/ASYBcgF/AY8BwAEDAfgEAAHAAgABAQH/AT8B/gF/AYcBwAEDAfAEAAHAAgABAQH8AgABHwGH
AcABAwHwBAABwAIAAQEB/AIAAR8BwwL/AeEEAAHAAgABAQH8AgABHwHDAv8B4wQAAcACAAEBAfwCAAEf
AeEC/wHDBAABwAIAAQMB/wHnAfMB/wHwAv8BhwGAAwABwAEAAQ8C/wLjAf8B+AE/Af4BDwGAAgABAQHA
AQABDwL/AfABBwH/AfwBDwH4AR8E/wHAAQABHwL/AfgBDwH/Af4CAAE/Df8CAAF/Df8BwAEBDv8B/AEf
Cv8B8AEHDv8BwAEBDv8CAAF/DP8B/gEPAfgBPwz/AfgBPwH+AQ8B/wH+AQABDwHwARgBDAEPAv8BAAEP
AfAC/wEPAf8B/gEAAQ8B8AEYAQwBDwH/Af4BAAEPAfEC/wGHAfgCAAEPAfABGAEMAQ8B/AEAAT8BzwHj
Av8BwwH4AQABPwGPAfEBGAGMAU8B+QH+AT8BzwHDAfsB/wHjAfEB/AEAAQ8B8AEYAQwBDwH5Af4BAAEP
AccB+QH/AvEB/gEAAQ8B8AEYAQwBDwH5Af8BAAEPAccB+AH/AvEB/gEAAQ8B+AE4ARwBDwH5A/8BjwH4
AT8B+AHxA/8B/AH+AT8BHwH5A/8BjwH4AR8B+AHxAf4BAAEPAfwCAAEfAfkB/wEAAQ8BjwH4AQ8B+AHx
Af4BAAEPAfwCAAEfAfkB/gEAAQ8BjwH4AQMB+AHxAcABAAEPAfwCAAEfAfkB4AE/Ac8BjwH4AQMB+AHx
AQABPwGPAf8B/gE/Af8B+QGAAT8BzwGPAfgBBwH4AfEBHAEAAQ8B/wH+AT8B/wH5Ab4BAAEPAY8B+AEP
AfgB8QE+AQABDwH/AgABfwH5Ab8BAAEPAY8B+AEfAfgB8QE+AQABDwH+AgABPwH5Ab8C/wGPAfgBfwH4
AfEBPwL/Af4CAAE/AfkBvwL/AccB+AH/AfEB4AEOAQABDwH+AX8B/gE/AfABDwEAAQ8BxwH7Af8B8QHg
AQ4BAAEPAf4BcwH+AT8B4AEOAQABDwHDAv8B4wHAAgABDwH+AXMB/gE/AeMBwAE/Ac8B4wL/AeMBwwGA
AT8BjwH+AX8B/gE/AeMBwAE/Ac8B8QL/AccBwAEMAQABDwH+AX8B/gE/AeABDgEAAQ8B8AL/AY8B4AEO
AQABDwH+AgABPwHwAQ8BAAEPAfgBPwH+AQ8B4AEOAQABDwH+AgABPwT/AfwBDwH4AT8N/wIAAX8N/wGA
AQAO/wHwAQce/wGAAR8B/wGAAwABgAIAAQEB/gL/AT8B/gEAAQcB/wQAAYADAAH+Av8BvwH8AQABAwH/
BAABgAMAAfwCAAEfAfgBDwEDAf8EAAGAAwAB+QFtAb8B3wHwAT8BwwH/BAABgAMAAfsBbQG/Ad8B4AH/
AfMB/wQAAYADAAH7AW0BvwHfAeED/wQAAYADAAH4AgABHwHDA/8EAAGAAwAB+wL/Ad8BwwP/BAABgAMA
AfsC/wHfAYcD/wQAAYADAAH7Av8B3wGHA/8EAAGAAwAB+wL/Ad8BjwL/AR8EAAGAAwAB+wL/Ad8BjwH/
Af4BDwQAAYADAAH7Av8B3wEPAf8B/AEHBAABgAMAAfsC/wHfAQ8B/wH8AQMIAAH7Av8B3wEPAf8B+AEB
CAAB+AIAAR8BDwH/AfAJAAH7AW0BvwHfAQ8B/wHgCQAB+wFtAb8B3wGPAf8B4QEQCAAB+wFtAb8B3wGP
Af8B4wEYCAAB+wFtAb8B3wGPAf8B9gEdCAAB8AIAAQ8BhwH/Af4BHwgAAfcC/wH3AccB/wH8AT8IAAHw
AgABBwHDAf8B/AE/BAABgAMAAfcC/wH3AeEB/wH4AX8EAAH/AT8B/gF/AfcC/wH3AeAB/wHwAX8B/gEf
AfwBfwH/AT8B/gF/AfcC/wH3AfABfwHgAf8B/gEfAfwBfwH/AT8B/gF/AfcBnwH8AfcB+AEfAYEB/wH+
AR8B/AF/Af8BPwH+AX8B9wFfAf0BdwH8AQABAwH/Af4BHwH4AX8B/wEfAfwBfwH2Ae8B+wG3Af4BAAEH
Af8B/gIAAX8B/wIAAX8B8QHvAfMBhwH/AYABHwH/Af4CAAF/Af8BgAEAAv8B8wHnAv8B8AP/AgAC/wHg
AQMC/wH8AR8B/wHwAgABDwH8AgABPwHAAgABAQT/AfACAAEHAfACAAEPAYADAAT/AfACAAEHAfACAAEH
AR8CAAH8BP8B8wE/Af4BZwHjAv8B4wEfAgAB/AT/AfMBPwH+AWcB5wL/AfMBHwIAAfwB/wIAAX8B8wE/
Af4BZwHnAv8B8wEfAgAC/AIAAR8B8wE4AQ4BZwHnAv8B8wEfAgAC/AIAAR8B8wE4AQ4BZwHnAv8B8wEf
AgAB/AH4Av8BnwHzAT8B/gFnAecC/wHzAR8CAAH8AfgC/wGfAfMBPwH+AWcB5wL/AfMBHwIAAfwB+AL/
AZ8B8wE/Af4BZwHnAv8B8wEfAYABAAH8AfgC/wGfAfMCAAFnAecC/wHzAR8BgAEBAfwB+AL/AZ8B8wIA
AWcB5wL/AfMBHwHgAQMB/AH4Av8BnwHzAgAC5wL/AfMBHwL/AfwB+AL/AZ8B8wL/AucC/wHzAR8C/wH8
AfgB/wF/AZ8B8wL/AucC/wHzAR8C/wH8AfgB/gE/Af8B8wL/AucC/wHzAR8C/wH8AfgB/wEfAf8B8wL/
AucC/wHzAR8C/wH8AfgB/wGPAf8B8wL/AucBgAEAAfMBHwL/AfwB+AH/AccB3wHzAv8C5wGAAQAB8wEf
Av8B/AH4Af8B4wGfAfMC/wLnAZ8B/AHzAR8C/wH8AfgB/wHxAZ8B8wL/AucBnwH8AfMBHwHAAQEB/AH4
Af8B+AGfAfMBAAEHAucBnwGcAfMBHwIAAXwB+AH/AfwBHwHzAQABBwHHAecBnwGcAfMBHgIAATwB+AH/
Af4BHwHzAQABBwGPAecBnwGcAfMBHAIAATwB/AEAAfABHwHzAQABBwEPAecBnwGcAfMBHAIAARwB/AEA
AeABHwHzAQABBgEfAecBnwHcAfMBHAIAARwE/wHzAQABBAF/AecBnwH8AeMBHAIAARwE/wHwAgAB/wHg
AgABBwEcAgABHAT/AfACAAH/AfACAAEHAYADAAT/AfABAAEBAf8B+AIAAR8BgAIAAQEM/wHgAgABBwT/
AeAH/wH+AgABfwT/AcABPwP/AfABBwH/AfgCAAEfAfACAAEPAcABDwP/AcABAQH/AfACAAEHAcACAAED
AcABBwP/AgABfwHgAgABBwHDAv8BwQHAAQEC/wH+AgABPwHAAgABAwGHAv8B4QHAAQABfwH/AfwCAAEf
AcACAAEDAYcC/wHxAcABAAE/Af8B+AIAAQ8BwAIAAQMBhwL/AfEBwAEAAQ8B/wHwAgABBwHAAgABAwGH
Av8B8QHAAQABAwH/AeACAAEHAcACAAEDAYcC/wHxAcACAAH/AeACAAEDAeACAAEDAYcC/wHxAcACAAF/
AcACAAEDAeACAAEHAccC/wHhAcACAAEfAcACAAEBAfACAAEHAcMC/wHhAcACAAEHAcACAAEBAfACAAEP
AcMB8AEPAcMBwAIAAQMBwAIAAQEB+AIAAQ8B4QHAAQMBgwHAAgABAQHAAgABAQH4AgABHwHgAQEBgAEH
AcACAAEBAcACAAEBAfwCAAE/AfgBDwHwAQ8BwAIAAQEBwAIAAQEB/gIAAX8B/gEQAQwBfwHAAgABAwHA
AgABAQH/AgAC/wHAAQMB/wHAAgABBwHAAgABAQH/AeABBwL/AoEB/wHAAgABDwHAAgABAQH/AcABAwL/
AQ8B4AH/AcACAAE/AcACAAEDAf8BwAEDAv8BHwH4AX8BwAIAAf8B4AIAAQMB/wGAAQEB/wH+AR8B+AF/
AcABAAEBAf8B4AIAAQcB/wGAAQEB/wH+AR8B+AF/AcABAAEHAf8B8AIAAQcB/wGAAQEB/wH+AR8B+AF/
AcABAAEfAf8B8AIAAQ8B/wGAAQEB/wH+AR8B+AF/AcABAAF/Af8B+AIAAR8B/wGAAQEB/wH+AR8B+AF/
AcABAAL/AfwCAAE/Af8BgAEBAv8BDwHwAf8BwAEDAv8B/gIAAX8B/wGAAQEC/wEHAeAB/wHAAQ8D/wGA
AQAC/wHAAQMC/wGAAQMB/wHAAT8D/wHgAQMC/wHAAQMC/wHgAQcB/wHgAX8H/wHgAQcC/wH8AT8B/wHx
CP8B+AEfEf8EAAT/AYADAAGABwAB/wHgAQMB/wGAAwABgAcAAf8BgAEAAf8BgAIAAQEBgAIAAQEEAAH/
AgABfwGAAgABAQGAAgABAQQAAf8BPwH+AX8BwAIAAQMBwAIAAQMBAAEHAeABAAH+ASYBcgF/AeACAAED
AeACAAEDAQABHwH8AQAB/gEmAXIBfwHwAgABDwHwAgABDwEAAT8B/gEAAf4BJgFyAX8B/AIAAT8B/gIA
AX8BAAF+AT8BAAH+ASYBcgF/AfwCAAE/Af8B4AEHAf8BAAH4AQ8BAAH+ASYBcgF/Af8BgAEAAv8BgAEB
Af8BAAHwAQcBgAH+ASYBcgF/Af8CAAL/AgAB/wEBAeABAwGAAf4BJgFyAX8B/gIAAT8B/gIAAX8BAQHg
AQMBwAH+ASYBcgF/AfwCAAE/AfwCAAE/AQEBwAEDAcAB/gEmAXIBfwH8AgABHwH8AgABPwEBAcABAQHA
Af4BJgFyAX8B+AIAAQ8B+AIAAQ8BAQHAAQEBwAH+ASYBcgF/AfACAAEHAfACAAEPAQEBwAEBAcAB/gEm
AXIBfwHgAgABBwHgAgABBwEBAcABAwHAAf4BJgFyAX8B4AIAAQMB4AIAAQcBAQHAAQMBwAH+ASYBcgF/
AeACAAEHAeACAAEHAQEB4AEDAYAB/gE/Af4BfwHwAgABDwHwAgABDwEAAfABBwGAAfwCAAEfAfwCAAEf
AfgCAAEfAQAB8AEPAYAB/AIAAR8B/AIAAR8B+AIAAQ8BAAF8AR8BAAH8AgABHwH8AgABHwH4AgABDwEA
AT8B/gEAAfwCAAEfAfwCAAEfAfgCAAEPAQABHwH8AQAB/wHnAfMB/wH8AgABHwH4AgABDwEAAQ8B8AEA
Af8C4wH/Af4CAAE/AfgCAAEPAQABAQHAAQAB/wHgAQcC/wIAAX8B/wIAAR8BwAIAAQEB/wH4AQ8C/wHA
AQAC/wGAAQABfwH/AgABfwX/AfABAwL/AcABAAL/AgABfwb/AT8C/wH4AR8C/wIADv8BgAEABf8BgAMA
AYADAAj/AYAHAAj/AYAHAAT/AcACAAEDAYAHAAT/AcACAAEBAYAHAAL/AfwB/wHAAgABAQGABwAC/wH8
Af8BwAIAAQEBgAcAAf4BAAF8Af8BwAIAAQEBgAcAAf4BAAF8Af8BwAIAAQEBgAcAAf4BfwHgAQ8BwAIA
AQEBgAcAAf4BfwHgAQ8BwAIAAQEBgAcAAf4BfwH8Af8BwAIAAQEBgAcAAf4BfwH8Af8BwAIAAQEBgAcA
Af4BcAEMAf8BwAIAAQEBgAcAAf4BcAEPAf8BwAIAAQEIAAH+AXABDgE/AcACAAEBCAAB/gF/Af4BPwHA
AgABAQgAAf4BfwH+AT8BwAIAAQEIAAH+AX8B/gE/AcACAAEBCAAB/gFwAQ4BPwHAAgABAQgAAf4BcAEO
AT8BwAIAAQEIAAH+AXABDgE/AcACAAEBCAAB/gF/Af4BPwHAAgABAQgAAf4BfwH+AT8BwAIAAQEBgAcA
Af4BfwH+AT8BwAIAAQMBwAIAAQEEAAH+AX8B/gE/AcABAAEPAv8BPwH+AX8BgAMAAf4CAAE/AcABAAEP
Av8BPwH+AX8BwAIAAQEB/gIAAT8BwAEAAR8C/wE/Af4BfwH+AgABPwn/AR8B/AF/Af4CAAE/Cf8CAAF/
Af8CAAF/Cf8BgAEAAv8CAAF/Cf8B4AEDAv8CAAF/BP8B/gL/AT8M/wH+Av8Bvwz/AfwCAAEfDP8B+QFt
Ab8B3wz/AfsBbQG/Ad8B8AEYAQwBDwL/AQABDwHAAgABAQH7AW0BvwHfAfABGAEMAQ8B/wH+AQABDwGA
AwAB+AIAAR8B8AEYAQwBDwH8AQABPwHPBAAB+wL/Ad8B8QEYAYwBTwH5Af4BPwHPBAAB+wL/Ad8B8AEY
AQwBDwH5Af4BAAEPBAAB+wL/Ad8B8AEYAQwBDwH5Af8BAAEPBAAB+wL/Ad8B+AE4ARwBDwH5A/8EAAH7
Av8B3wH8Af4BPwEfAfkD/wQAAfsC/wHfAfwCAAEfAfkB/wEAAQ8EAAH7Av8B3wH8AgABHwH5Af4BAAEP
BAAB+wL/Ad8B/AIAAR8B+QHgAT8BzwQAAfgCAAEfAf8B/gE/Af8B+QGAAT8BzwQAAfsBbQG/Ad8B/wH+
AT8B/wH5Ab4BAAEPBAAB+wFtAb8B3wH/AgABfwH5Ab8BAAEPBAAB+wFtAb8B3wH+AgABPwH5Ab8C/wQA
AfsBbQG/Ad8B/gIAAT8B+QG/Av8EAAHwAgABDwH+AX8B/gE/AfABDwEAAQ8EAAH3Av8B9wH+AXMB/gE/
AeABDgEAAQ8EAAHwAgABBwH+AXMB/gE/AeMBwAE/Ac8EAAH3Av8B9wH+AX8B/gE/AeMBwAE/Ac8EAAH3
Av8B9wH+AX8B/gE/AeABDgEAAQ8EAAH3Av8B9wH+AgABPwHwAQ8BAAEPAYADAAH3AZ8B/AH3Af4CAAE/
BP8BgAIAAQEB9wFfAf0Bdwz/AfYB7wH7AbcM/wHxAe8B8wGHDf8B8wHnDv8B/AEfDf8L
</value> </value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

View File

@@ -30,21 +30,21 @@
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin6 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin(); WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin6 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin(); WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin2 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient16 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient(); WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient4 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient36 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient8 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin6 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin(); WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient(); WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient37 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient9 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient17 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient(); WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient5 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient38 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient10 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient(); WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient39 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient11 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient40 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient12 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient18 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient(); WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient41 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient13 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient42 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient14 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl(); this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl();
this.ribbonPanel3 = new DevComponents.DotNetBar.RibbonPanel(); this.ribbonPanel3 = new DevComponents.DotNetBar.RibbonPanel();
this.ribbonBar2 = new DevComponents.DotNetBar.RibbonBar(); this.ribbonBar2 = new DevComponents.DotNetBar.RibbonBar();
@@ -85,9 +85,9 @@
this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel(); this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.lbPermission = new System.Windows.Forms.Label(); this.lbPermission = new System.Windows.Forms.Label();
this.lbTime = new System.Windows.Forms.Label(); this.lbTime = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components); this.timer1 = new System.Windows.Forms.Timer(this.components);
this.ribbonControl1.SuspendLayout(); this.ribbonControl1.SuspendLayout();
this.ribbonPanel3.SuspendLayout(); this.ribbonPanel3.SuspendLayout();
@@ -97,15 +97,17 @@
// //
// ribbonControl1 // ribbonControl1
// //
this.ribbonControl1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(239)))), ((int)(((byte)(242)))));
// //
// //
// //
this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonControl1.CaptionVisible = true; this.ribbonControl1.CaptionVisible = true;
this.ribbonControl1.Controls.Add(this.ribbonPanel1);
this.ribbonControl1.Controls.Add(this.ribbonPanel3); this.ribbonControl1.Controls.Add(this.ribbonPanel3);
this.ribbonControl1.Controls.Add(this.ribbonPanel2); this.ribbonControl1.Controls.Add(this.ribbonPanel2);
this.ribbonControl1.Controls.Add(this.ribbonPanel1);
this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top;
this.ribbonControl1.ForeColor = System.Drawing.Color.Black;
this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
this.applicationButton1, this.applicationButton1,
this.ribStart, this.ribStart,
@@ -114,11 +116,10 @@
this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F); this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F);
this.ribbonControl1.Location = new System.Drawing.Point(0, 0); this.ribbonControl1.Location = new System.Drawing.Point(0, 0);
this.ribbonControl1.Name = "ribbonControl1"; this.ribbonControl1.Name = "ribbonControl1";
this.ribbonControl1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.ribbonControl1.QuickToolbarItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { this.ribbonControl1.QuickToolbarItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
this.btnCompany, this.btnCompany,
this.qatCustomizeItem1}); this.qatCustomizeItem1});
this.ribbonControl1.Size = new System.Drawing.Size(1140, 154); this.ribbonControl1.Size = new System.Drawing.Size(1366, 154);
this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonControl1.SystemText.MaximizeRibbonText = "&Maximize the Ribbon"; this.ribbonControl1.SystemText.MaximizeRibbonText = "&Maximize the Ribbon";
this.ribbonControl1.SystemText.MinimizeRibbonText = "Mi&nimize the Ribbon"; this.ribbonControl1.SystemText.MinimizeRibbonText = "Mi&nimize the Ribbon";
@@ -144,10 +145,10 @@
this.ribbonPanel3.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonPanel3.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonPanel3.Controls.Add(this.ribbonBar2); this.ribbonPanel3.Controls.Add(this.ribbonBar2);
this.ribbonPanel3.Dock = System.Windows.Forms.DockStyle.Fill; this.ribbonPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel3.Location = new System.Drawing.Point(0, 53); this.ribbonPanel3.Location = new System.Drawing.Point(0, 54);
this.ribbonPanel3.Name = "ribbonPanel3"; this.ribbonPanel3.Name = "ribbonPanel3";
this.ribbonPanel3.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3); this.ribbonPanel3.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.ribbonPanel3.Size = new System.Drawing.Size(1140, 98); this.ribbonPanel3.Size = new System.Drawing.Size(1366, 100);
// //
// //
// //
@@ -161,6 +162,7 @@
// //
this.ribbonPanel3.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel3.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonPanel3.TabIndex = 3; this.ribbonPanel3.TabIndex = 3;
this.ribbonPanel3.Visible = false;
// //
// ribbonBar2 // ribbonBar2
// //
@@ -182,7 +184,7 @@
this.btnSaveJob}); this.btnSaveJob});
this.ribbonBar2.Location = new System.Drawing.Point(3, 0); this.ribbonBar2.Location = new System.Drawing.Point(3, 0);
this.ribbonBar2.Name = "ribbonBar2"; this.ribbonBar2.Name = "ribbonBar2";
this.ribbonBar2.Size = new System.Drawing.Size(547, 95); this.ribbonBar2.Size = new System.Drawing.Size(403, 98);
this.ribbonBar2.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonBar2.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonBar2.TabIndex = 0; this.ribbonBar2.TabIndex = 0;
this.ribbonBar2.Text = "流程操作"; this.ribbonBar2.Text = "流程操作";
@@ -226,10 +228,10 @@
// //
this.ribbonPanel2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonPanel2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; this.ribbonPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel2.Location = new System.Drawing.Point(0, 53); this.ribbonPanel2.Location = new System.Drawing.Point(0, 54);
this.ribbonPanel2.Name = "ribbonPanel2"; this.ribbonPanel2.Name = "ribbonPanel2";
this.ribbonPanel2.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3); this.ribbonPanel2.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.ribbonPanel2.Size = new System.Drawing.Size(1140, 98); this.ribbonPanel2.Size = new System.Drawing.Size(1366, 100);
// //
// //
// //
@@ -250,10 +252,10 @@
this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonPanel1.Controls.Add(this.ribbonBar1); this.ribbonPanel1.Controls.Add(this.ribbonBar1);
this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel1.Location = new System.Drawing.Point(0, 53); this.ribbonPanel1.Location = new System.Drawing.Point(0, 54);
this.ribbonPanel1.Name = "ribbonPanel1"; this.ribbonPanel1.Name = "ribbonPanel1";
this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3); this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.ribbonPanel1.Size = new System.Drawing.Size(1140, 98); this.ribbonPanel1.Size = new System.Drawing.Size(1366, 100);
// //
// //
// //
@@ -267,7 +269,6 @@
// //
this.ribbonPanel1.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel1.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonPanel1.TabIndex = 1; this.ribbonPanel1.TabIndex = 1;
this.ribbonPanel1.Visible = false;
// //
// ribbonBar1 // ribbonBar1
// //
@@ -290,7 +291,7 @@
this.btnReset}); this.btnReset});
this.ribbonBar1.Location = new System.Drawing.Point(3, 0); this.ribbonBar1.Location = new System.Drawing.Point(3, 0);
this.ribbonBar1.Name = "ribbonBar1"; this.ribbonBar1.Name = "ribbonBar1";
this.ribbonBar1.Size = new System.Drawing.Size(458, 95); this.ribbonBar1.Size = new System.Drawing.Size(384, 98);
this.ribbonBar1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonBar1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonBar1.TabIndex = 0; this.ribbonBar1.TabIndex = 0;
this.ribbonBar1.Text = "设备操作控制"; this.ribbonBar1.Text = "设备操作控制";
@@ -342,7 +343,7 @@
this.applicationButton1.Image = ((System.Drawing.Image)(resources.GetObject("applicationButton1.Image"))); this.applicationButton1.Image = ((System.Drawing.Image)(resources.GetObject("applicationButton1.Image")));
this.applicationButton1.ImageFixedSize = new System.Drawing.Size(16, 16); this.applicationButton1.ImageFixedSize = new System.Drawing.Size(16, 16);
this.applicationButton1.ImagePaddingHorizontal = 0; this.applicationButton1.ImagePaddingHorizontal = 0;
this.applicationButton1.ImagePaddingVertical = 0; this.applicationButton1.ImagePaddingVertical = 1;
this.applicationButton1.Name = "applicationButton1"; this.applicationButton1.Name = "applicationButton1";
this.applicationButton1.ShowSubItems = false; this.applicationButton1.ShowSubItems = false;
this.applicationButton1.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { this.applicationButton1.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
@@ -548,6 +549,7 @@
// //
// ribStart // ribStart
// //
this.ribStart.Checked = true;
this.ribStart.Name = "ribStart"; this.ribStart.Name = "ribStart";
this.ribStart.Panel = this.ribbonPanel1; this.ribStart.Panel = this.ribbonPanel1;
this.ribStart.Text = "开始"; this.ribStart.Text = "开始";
@@ -560,7 +562,6 @@
// //
// ribJob // ribJob
// //
this.ribJob.Checked = true;
this.ribJob.Name = "ribJob"; this.ribJob.Name = "ribJob";
this.ribJob.Panel = this.ribbonPanel3; this.ribJob.Panel = this.ribbonPanel3;
this.ribJob.Text = "流程"; this.ribJob.Text = "流程";
@@ -576,8 +577,8 @@
// //
// styleManager1 // styleManager1
// //
this.styleManager1.ManagerStyle = DevComponents.DotNetBar.eStyle.Office2010Blue; this.styleManager1.ManagerStyle = DevComponents.DotNetBar.eStyle.Metro;
this.styleManager1.MetroColorParameters = new DevComponents.DotNetBar.Metro.ColorTables.MetroColorGeneratorParameters(System.Drawing.Color.White, System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(87)))), ((int)(((byte)(154)))))); this.styleManager1.MetroColorParameters = new DevComponents.DotNetBar.Metro.ColorTables.MetroColorGeneratorParameters(System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(239)))), ((int)(((byte)(242))))), System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(122)))), ((int)(((byte)(204))))));
// //
// imageList1 // imageList1
// //
@@ -594,53 +595,53 @@
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.dockPanel1.Location = new System.Drawing.Point(0, 154); this.dockPanel1.Location = new System.Drawing.Point(0, 154);
this.dockPanel1.Name = "dockPanel1"; this.dockPanel1.Name = "dockPanel1";
this.dockPanel1.Size = new System.Drawing.Size(1137, 459); this.dockPanel1.Size = new System.Drawing.Size(1363, 592);
dockPanelGradient16.EndColor = System.Drawing.SystemColors.ControlLight; dockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient16.StartColor = System.Drawing.SystemColors.ControlLight; dockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin6.DockStripGradient = dockPanelGradient16; autoHideStripSkin2.DockStripGradient = dockPanelGradient4;
tabGradient36.EndColor = System.Drawing.SystemColors.Control; tabGradient8.EndColor = System.Drawing.SystemColors.Control;
tabGradient36.StartColor = System.Drawing.SystemColors.Control; tabGradient8.StartColor = System.Drawing.SystemColors.Control;
tabGradient36.TextColor = System.Drawing.SystemColors.ControlDarkDark; tabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin6.TabGradient = tabGradient36; autoHideStripSkin2.TabGradient = tabGradient8;
autoHideStripSkin6.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F); autoHideStripSkin2.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F);
dockPanelSkin6.AutoHideStripSkin = autoHideStripSkin6; dockPanelSkin2.AutoHideStripSkin = autoHideStripSkin2;
tabGradient37.EndColor = System.Drawing.SystemColors.ControlLightLight; tabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient37.StartColor = System.Drawing.SystemColors.ControlLightLight; tabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient37.TextColor = System.Drawing.SystemColors.ControlText; tabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient6.ActiveTabGradient = tabGradient37; dockPaneStripGradient2.ActiveTabGradient = tabGradient9;
dockPanelGradient17.EndColor = System.Drawing.SystemColors.Control; dockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient17.StartColor = System.Drawing.SystemColors.Control; dockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient6.DockStripGradient = dockPanelGradient17; dockPaneStripGradient2.DockStripGradient = dockPanelGradient5;
tabGradient38.EndColor = System.Drawing.SystemColors.ControlLight; tabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient38.StartColor = System.Drawing.SystemColors.ControlLight; tabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient38.TextColor = System.Drawing.SystemColors.ControlText; tabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient6.InactiveTabGradient = tabGradient38; dockPaneStripGradient2.InactiveTabGradient = tabGradient10;
dockPaneStripSkin6.DocumentGradient = dockPaneStripGradient6; dockPaneStripSkin2.DocumentGradient = dockPaneStripGradient2;
dockPaneStripSkin6.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F); dockPaneStripSkin2.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F);
tabGradient39.EndColor = System.Drawing.SystemColors.ActiveCaption; tabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient39.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; tabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient39.StartColor = System.Drawing.SystemColors.GradientActiveCaption; tabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient39.TextColor = System.Drawing.SystemColors.ActiveCaptionText; tabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient6.ActiveCaptionGradient = tabGradient39; dockPaneStripToolWindowGradient2.ActiveCaptionGradient = tabGradient11;
tabGradient40.EndColor = System.Drawing.SystemColors.Control; tabGradient12.EndColor = System.Drawing.SystemColors.Control;
tabGradient40.StartColor = System.Drawing.SystemColors.Control; tabGradient12.StartColor = System.Drawing.SystemColors.Control;
tabGradient40.TextColor = System.Drawing.SystemColors.ControlText; tabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient6.ActiveTabGradient = tabGradient40; dockPaneStripToolWindowGradient2.ActiveTabGradient = tabGradient12;
dockPanelGradient18.EndColor = System.Drawing.SystemColors.ControlLight; dockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient18.StartColor = System.Drawing.SystemColors.ControlLight; dockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient6.DockStripGradient = dockPanelGradient18; dockPaneStripToolWindowGradient2.DockStripGradient = dockPanelGradient6;
tabGradient41.EndColor = System.Drawing.SystemColors.InactiveCaption; tabGradient13.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient41.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; tabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient41.StartColor = System.Drawing.SystemColors.GradientInactiveCaption; tabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient41.TextColor = System.Drawing.SystemColors.InactiveCaptionText; tabGradient13.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient6.InactiveCaptionGradient = tabGradient41; dockPaneStripToolWindowGradient2.InactiveCaptionGradient = tabGradient13;
tabGradient42.EndColor = System.Drawing.Color.Transparent; tabGradient14.EndColor = System.Drawing.Color.Transparent;
tabGradient42.StartColor = System.Drawing.Color.Transparent; tabGradient14.StartColor = System.Drawing.Color.Transparent;
tabGradient42.TextColor = System.Drawing.SystemColors.ControlDarkDark; tabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient6.InactiveTabGradient = tabGradient42; dockPaneStripToolWindowGradient2.InactiveTabGradient = tabGradient14;
dockPaneStripSkin6.ToolWindowGradient = dockPaneStripToolWindowGradient6; dockPaneStripSkin2.ToolWindowGradient = dockPaneStripToolWindowGradient2;
dockPanelSkin6.DockPaneStripSkin = dockPaneStripSkin6; dockPanelSkin2.DockPaneStripSkin = dockPaneStripSkin2;
this.dockPanel1.Skin = dockPanelSkin6; this.dockPanel1.Skin = dockPanelSkin2;
this.dockPanel1.TabIndex = 1; this.dockPanel1.TabIndex = 1;
// //
// panel1 // panel1
@@ -651,17 +652,28 @@
this.panel1.Controls.Add(this.label1); this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.lbPermission); this.panel1.Controls.Add(this.lbPermission);
this.panel1.Controls.Add(this.lbTime); this.panel1.Controls.Add(this.lbTime);
this.panel1.Location = new System.Drawing.Point(0, 612); this.panel1.Location = new System.Drawing.Point(0, 745);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1140, 22); this.panel1.Size = new System.Drawing.Size(1366, 22);
this.panel1.TabIndex = 4; this.panel1.TabIndex = 4;
// //
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(1139, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(50, 16);
this.label1.TabIndex = 1;
this.label1.Text = "当前登录:";
//
// lbPermission // lbPermission
// //
this.lbPermission.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.lbPermission.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lbPermission.AutoSize = true; this.lbPermission.AutoSize = true;
this.lbPermission.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lbPermission.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbPermission.Location = new System.Drawing.Point(966, 4); this.lbPermission.Location = new System.Drawing.Point(1192, 4);
this.lbPermission.Name = "lbPermission"; this.lbPermission.Name = "lbPermission";
this.lbPermission.Size = new System.Drawing.Size(38, 16); this.lbPermission.Size = new System.Drawing.Size(38, 16);
this.lbPermission.TabIndex = 1; this.lbPermission.TabIndex = 1;
@@ -672,23 +684,12 @@
this.lbTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.lbTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lbTime.AutoSize = true; this.lbTime.AutoSize = true;
this.lbTime.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lbTime.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbTime.Location = new System.Drawing.Point(1019, 4); this.lbTime.Location = new System.Drawing.Point(1245, 4);
this.lbTime.Name = "lbTime"; this.lbTime.Name = "lbTime";
this.lbTime.Size = new System.Drawing.Size(41, 16); this.lbTime.Size = new System.Drawing.Size(41, 16);
this.lbTime.TabIndex = 2; this.lbTime.TabIndex = 2;
this.lbTime.Text = "lbTime"; this.lbTime.Text = "lbTime";
// //
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(913, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(50, 16);
this.label1.TabIndex = 1;
this.label1.Text = "当前登录:";
//
// timer1 // timer1
// //
this.timer1.Enabled = true; this.timer1.Enabled = true;
@@ -699,7 +700,7 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlDark; this.BackColor = System.Drawing.SystemColors.ControlDark;
this.ClientSize = new System.Drawing.Size(1140, 635); this.ClientSize = new System.Drawing.Size(1366, 768);
this.Controls.Add(this.panel1); this.Controls.Add(this.panel1);
this.Controls.Add(this.dockPanel1); this.Controls.Add(this.dockPanel1);
this.Controls.Add(this.ribbonControl1); this.Controls.Add(this.ribbonControl1);

View File

@@ -28,6 +28,7 @@ namespace VisionEdit
InitializeComponent(); InitializeComponent();
m_DockPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config"); m_DockPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
InitDockPanel(); InitDockPanel();
_instance = this;
} }
/// <summary> /// <summary>
/// 窗体对象实例 /// 窗体对象实例
@@ -55,7 +56,7 @@ namespace VisionEdit
myFormImageWindow.Show(this.dockPanel1, DockState.Document); myFormImageWindow.Show(this.dockPanel1, DockState.Document);
myFormLog.Show(this.dockPanel1, DockState.DockBottom); myFormLog.Show(this.dockPanel1, DockState.DockBottom);
// 初始化JOB // 初始化JOB
InitJob(); CreateInitJob();
} }
#region Dockpanel #region Dockpanel
@@ -116,7 +117,7 @@ namespace VisionEdit
this.lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); this.lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
} }
public void InitJob() public void CreateInitJob()
{ {
// 初始化加载默认Job // 初始化加载默认Job
myFormJobManage.tabControl1.TabPages.Add("defultJob"); myFormJobManage.tabControl1.TabPages.Add("defultJob");
@@ -124,7 +125,39 @@ namespace VisionEdit
GlobalParams.myVisionJob = new VisionJob(GlobalParams.myJobTreeView, myFormLog, "defultJob"); GlobalParams.myVisionJob = new VisionJob(GlobalParams.myJobTreeView, myFormLog, "defultJob");
myFormJobManage.tabControl1.TabPages[0].Controls.Add(GlobalParams.myJobTreeView); myFormJobManage.tabControl1.TabPages[0].Controls.Add(GlobalParams.myJobTreeView);
GlobalParams.myJobTreeView.Dock = DockStyle.Fill; GlobalParams.myJobTreeView.Dock = DockStyle.Fill;
GlobalParams.myJobTreeView.ImageList = myFormToolBox.imageList1; GlobalParams.myJobTreeView.ImageList = myFormToolBox.imageListTool;
GlobalParams.myJobTreeView.Font = new Font("微软雅黑", 9, FontStyle.Bold);
GlobalParams.myJobTreeView.Scrollable = true;
GlobalParams.myJobTreeView.ItemHeight = 20;
GlobalParams.myJobTreeView.ShowLines = false;
GlobalParams.myJobTreeView.AllowDrop = true;
//myTreeView.ImageList = Job.imageList;
// 在窗体UI出现变化时更新画线
GlobalParams.myJobTreeView.AfterSelect += GlobalParams.myVisionJob.tvw_job_AfterSelect;
GlobalParams.myJobTreeView.ChangeUICues += GlobalParams.myVisionJob.MyJobTreeView_ChangeUICues;
myFormJobManage.SizeChanged += GlobalParams.myVisionJob.tbc_jobs_SelectedIndexChanged;
//节点间拖拽
GlobalParams.myJobTreeView.ItemDrag += new ItemDragEventHandler(GlobalParams.myVisionJob.TvwJob_ItemDrag);
GlobalParams.myJobTreeView.DragEnter += new DragEventHandler(GlobalParams.myVisionJob.TvwJob_DragEnter);
GlobalParams.myJobTreeView.DragDrop += new DragEventHandler(GlobalParams.myVisionJob.TvwJob_DragDrop);
//以下事件为画线事件
GlobalParams.myJobTreeView.MouseMove += GlobalParams.myVisionJob.DrawLineWithoutRefresh;
GlobalParams.myJobTreeView.AfterExpand += GlobalParams.myVisionJob.Draw_Line;
GlobalParams.myJobTreeView.AfterCollapse += GlobalParams.myVisionJob.Draw_Line;
Application.DoEvents();
//默认添加ImageAcquistionTool工具
myFormToolBox.Add_Tool(ToolType.HalconTool);
//默认选中第一个工具节点
GlobalParams.myJobTreeView.SelectedNode = GlobalParams.myJobTreeView.Nodes[0];
//展开已默认添加的工具的输入输出项
GlobalParams.myJobTreeView.ExpandAll();
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace VisionEdit
{
/// <summary>
/// XYU结果
/// </summary>
[Serializable]
internal class PosXYU
{
internal double X;
internal double Y;
internal double U;
/// <summary>
/// 将XYU类型转化成格式化字符串
/// </summary>
/// <returns></returns>
internal string ToFormatStr()
{
return (X >= 0 ? "+" + X.ToString("0000.000") : X.ToString("0000.000")) + "," + (Y >= 0 ? "+" + Y.ToString("0000.000") : Y.ToString("0000.000")) + "," + (U >= 0 ? "+" + U.ToString("0000.000") : U.ToString("0000.000"));
}
internal string ToShowTip()
{
return X.ToString() + " | " + Y.ToString() + " | " + U.ToString();
}
}
[Serializable]
internal class Line
{
internal Point StartPoint;
internal Point EndPoint;
internal string ToShowTip()
{
return StartPoint.Row.ToString() + " | " + StartPoint.Col.ToString() + " | " + EndPoint.Row.ToString() + " | " + EndPoint.Col.ToString();
}
private HTuple _angle;
public double Angle
{
get
{
HOperatorSet.AngleLx(StartPoint.Row, StartPoint.Col, EndPoint.Row, EndPoint.Col, out _angle);
return _angle;
}
}
}
[Serializable]
internal class Point
{
internal Point() { }
internal Point(double x, double y)
{
this.Row = x;
this.Col = y;
}
internal double Row;
internal double Col;
/// <summary>
/// 重写 -
/// </summary>
/// <param name="p1">点1</param>
/// <param name="p2">点2</param>
/// <returns></returns>
public static Point operator -(Point p1, Point p2)
{
return new Point(p1.Row - p2.Row, p1.Col - p2.Col);
}
/// <summary>
/// 获得点矢量长度
/// </summary>
internal double GetDistance
{
get
{
return Math.Sqrt(Row * Row + Col * Col);
}
}
internal string ToShowTip()
{
return Row.ToString() + " | " + Col.ToString();
}
}
}

View File

@@ -8,22 +8,18 @@ namespace VisionEdit
{ {
public enum ToolType:int public enum ToolType:int
{ {
None,
Job, Job,
HalconToolInterface, HalconTool,
SDK_Basler, SDK_Basler,
SDK_Congex,
SDK_PointGray, SDK_PointGray,
SDK_IMAVision,
SDK_MindVision,
SDK_HIKVision, SDK_HIKVision,
BlobAnalyse,
FindLine,
FindCircle,
ShapeMatch, ShapeMatch,
EyeHandCalibration, EyeHandCalibration,
CircleCalibration, CircleCalibration,
SubImage, SubImage,
BlobAnalyse,
FindLine,
FindCircle,
CreateROI, CreateROI,
CreatePosition, CreatePosition,
CoorTrans, CoorTrans,
@@ -43,6 +39,7 @@ namespace VisionEdit
Logic, Logic,
Output, Output,
CreateLine, CreateLine,
None
} }
public enum DataType public enum DataType
@@ -100,4 +97,6 @@ namespace VisionEdit
, ,
, ,
} }
} }

View File

@@ -37,7 +37,10 @@ namespace VisionEdit
/// 工具输出字典集合 /// 工具输出字典集合
/// </summary> /// </summary>
public List<ToolIO> toolOutput { get; set; } public List<ToolIO> toolOutput { get; set; }
/// <summary>
/// 工具作用描述
/// </summary>
public string toolDescription { get; set; }
public IToolInfo() public IToolInfo()
{ {
enable = true; enable = true;

View File

@@ -42,6 +42,10 @@ namespace VisionEdit
/// </summary> /// </summary>
public double recordElapseTime { get; set; } public double recordElapseTime { get; set; }
/// <summary> /// <summary>
/// 编辑节点前节点文本,用于修改工具名称
/// </summary>
public string nodeTextBeforeEdit { get; set; } = string.Empty;
/// <summary>
/// 标准图像字典,用于存储标准图像路径和图像对象 /// 标准图像字典,用于存储标准图像路径和图像对象
/// </summary> /// </summary>
public Dictionary<string, HObject> D_standardImage { get; set; } = new Dictionary<string, HObject>(); public Dictionary<string, HObject> D_standardImage { get; set; } = new Dictionary<string, HObject>();

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
namespace VisionEdit namespace VisionEdit
{ {
@@ -10,7 +11,14 @@ namespace VisionEdit
{ {
public static void CreateNewJob() public static void CreateNewJob()
{ {
try
{
}
catch
{
}
} }
} }
} }

View File

@@ -0,0 +1,146 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace VisionEdit.ToolLib
{
public class FindLine
{
/// <summary>
/// 输入图像
/// </summary>
internal HObject inputImage;
/// <summary>
/// 运行工具时是否刷新输入图像
/// </summary>
internal bool updateImage = false;
/// <summary>
/// 输入姿态
/// </summary>
internal PosXYU inputPose = new PosXYU();
/// <summary>
/// 制作模板时的输入位姿
/// </summary>
internal PosXYU templatePose = new PosXYU();
/// <summary>
/// 期望线起点行坐标
/// </summary>
internal HTuple expectLineStartRow = 200;
/// <summary>
/// 卡尺
/// </summary>
internal HObject contours;
/// <summary>
/// 期望线起点列坐标
/// </summary>
internal HTuple expectLineStartCol = 200;
/// <summary>
/// 期望线终点行坐标
/// </summary>
internal HTuple expectLineEndRow = 200;
/// <summary>
/// 期望线终点列坐标
/// </summary>
internal HTuple expectLineEndCol = 600;
/// <summary>
/// 找边极性,从明到暗或从暗到明
/// </summary>
internal string polarity = "negative";
/// <summary>
/// 卡尺数量
/// </summary>
internal int cliperNum = 20;
/// <summary>
/// 卡尺高
/// </summary>
internal int length = 80;
/// <summary>
/// 边阈值
/// </summary>
internal int threshold = 30;
/// <summary>
/// 选择所查找到的边
/// </summary>
internal string edgeSelect = "all";
/// <summary>
/// 分数阈值
/// </summary>
internal double minScore = 0.5;
/// <summary>
/// 找到的线段
/// </summary>
internal Line resultLine = new Line();
/// <summary>
/// 新的跟随姿态变化后的预期线信息
/// </summary>
HTuple newExpectLineStartRow = new HTuple(200), newExpectLineStartCol = new HTuple(200), newExpectLineEndRow = new HTuple(200), newExpectLineEndCol = new HTuple(600);
/// <summary>
/// 查找到的线的起点行坐标
/// </summary>
private HTuple _resultLineStartRow = 0;
internal HTuple ResultLineStartRow
{
get
{
_resultLineStartRow = Math.Round((double)_resultLineStartRow, 3);
return _resultLineStartRow;
}
set { _resultLineStartRow = value; }
}
/// <summary>
/// 查找到的线的起点列坐标
/// </summary>
private HTuple _resultLineStartCol = 0;
internal HTuple ResultLineStartCol
{
get
{
_resultLineStartCol = Math.Round((double)_resultLineStartCol, 3);
return _resultLineStartCol;
}
set { _resultLineStartCol = value; }
}
/// <summary>
/// 查找到的线的终点行坐标
/// </summary>
private HTuple _resultLineEndRow = 0;
internal HTuple ResultLineEndRow
{
get
{
_resultLineEndRow = Math.Round((double)_resultLineEndRow, 3);
return _resultLineEndRow;
}
set { _resultLineEndRow = value; }
}
/// <summary>
/// 查找到的线的终点列坐标
/// </summary>
private HTuple _resultLineEndCol = 0;
internal HTuple ResultLineEndCol
{
get
{
_resultLineEndCol = Math.Round((double)_resultLineEndCol, 3);
return _resultLineEndCol;
}
set { _resultLineEndCol = value; }
}
/// <summary>
/// 查找到线的方向
/// </summary>
private HTuple _angle = 0;
internal HTuple Angle
{
get
{
_angle = Math.Round((double)_angle, 3);
return _angle;
}
set { _angle = value; }
}
}
}

View File

@@ -86,6 +86,7 @@
<DependentUpon>FormMain.cs</DependentUpon> <DependentUpon>FormMain.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="GlobalParams.cs" /> <Compile Include="GlobalParams.cs" />
<Compile Include="Interface\DataStruct.cs" />
<Compile Include="Interface\EnumList.cs" /> <Compile Include="Interface\EnumList.cs" />
<Compile Include="Interface\ToolBase.cs" /> <Compile Include="Interface\ToolBase.cs" />
<Compile Include="OperateJob.cs" /> <Compile Include="OperateJob.cs" />
@@ -93,6 +94,7 @@
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Interface\VisionJobInterface.cs" /> <Compile Include="Interface\VisionJobInterface.cs" />
<Compile Include="ToolLib\FindLine.cs" />
<Compile Include="ToolLib\HalconTool.cs" /> <Compile Include="ToolLib\HalconTool.cs" />
<Compile Include="VisionJob.cs" /> <Compile Include="VisionJob.cs" />
<Compile Include="VisionTool\VisionToolFactory.cs" /> <Compile Include="VisionTool\VisionToolFactory.cs" />
@@ -108,6 +110,7 @@
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FormLib\FormToolBox.resx"> <EmbeddedResource Include="FormLib\FormToolBox.resx">
<DependentUpon>FormToolBox.cs</DependentUpon> <DependentUpon>FormToolBox.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FormMain.resx"> <EmbeddedResource Include="FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon> <DependentUpon>FormMain.cs</DependentUpon>

View File

@@ -14,6 +14,8 @@ namespace VisionEdit
{ {
public class VisionJob : IVisionJob public class VisionJob : IVisionJob
{ {
public delegate void CreateLineDelegate(TreeView inputTreeView, TreeNode startNode, TreeNode endNode);
CreateLineDelegate createLineDelegateFun;
public TreeView tvwOnWorkJob = new TreeView(); public TreeView tvwOnWorkJob = new TreeView();
FormLog myFormLog = null; FormLog myFormLog = null;
@@ -22,6 +24,7 @@ namespace VisionEdit
tvwOnWorkJob = inputTreeView; tvwOnWorkJob = inputTreeView;
this.myFormLog = inputFormLog; this.myFormLog = inputFormLog;
this.JobName = jobName; this.JobName = jobName;
createLineDelegateFun = new CreateLineDelegate(CreateLine);
} }
/// <summary> /// <summary>
@@ -29,7 +32,7 @@ namespace VisionEdit
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
internal void TvwJobItemDrag(object sender, ItemDragEventArgs e)//左键拖动 internal void TvwJob_ItemDrag(object sender, ItemDragEventArgs e)//左键拖动
{ {
try try
{ {
@@ -88,7 +91,7 @@ namespace VisionEdit
//获得拖放中的节点 //获得拖放中的节点
TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
//根据鼠标坐标确定要移动到的目标节点 //根据鼠标坐标确定要移动到的目标节点
Point pt; System.Drawing.Point pt;
TreeNode targeNode; // 目标节点 TreeNode targeNode; // 目标节点
pt = ((TreeView)(sender)).PointToClient(new System.Drawing.Point(e.X, e.Y)); pt = ((TreeView)(sender)).PointToClient(new System.Drawing.Point(e.X, e.Y));
targeNode = tvwOnWorkJob.GetNodeAt(pt); targeNode = tvwOnWorkJob.GetNodeAt(pt);
@@ -132,7 +135,7 @@ namespace VisionEdit
{ {
if (L_toolList[i].toolName == moveNode.Text) if (L_toolList[i].toolName == moveNode.Text)
{ {
SwapDataFun(L_toolList, i, targeNode.Index); SwapDataFun(L_toolList, i, targeNode.Parent.Index);
break; break;
} }
} }
@@ -175,7 +178,7 @@ namespace VisionEdit
else //第一次连接源就需要添加到输入输出集合 else //第一次连接源就需要添加到输入输出集合
D_itemAndSource.Add(targeNode, moveNode); D_itemAndSource.Add(targeNode, moveNode);
GetToolInfoByToolName(this.JobName, targeNode.Parent.Text).GetInput(input.Substring(3)).value = "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3); GetToolInfoByToolName(this.JobName, targeNode.Parent.Text).GetInput(input.Substring(3)).value = "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
targeNode.Text = input + "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3); targeNode.Text = input + "《- " + moveNode.Parent.Text + ". " + moveNode.Text.Substring(3);
DrawLine(); DrawLine();
//移除拖放的节点 //移除拖放的节点
@@ -189,7 +192,7 @@ namespace VisionEdit
} }
catch (Exception ex) catch (Exception ex)
{ {
myFormLog.ShowLog("释放节点出错,原因: " + ex.Message); myFormLog.ShowLog("释放节点出错,原因: " + ex.Message + ex.StackTrace.ToString());
} }
} }
@@ -218,14 +221,15 @@ namespace VisionEdit
foreach (KeyValuePair<TreeNode, TreeNode> item in D_itemAndSource) foreach (KeyValuePair<TreeNode, TreeNode> item in D_itemAndSource)
{ {
CreateLine(tree, item.Key, item.Value); // 将此划线线程委托到JOB管理界面
FormJobManage.Instance.Invoke(createLineDelegateFun, new object[] { tree, item.Key, item.Value });
} }
Application.DoEvents(); Application.DoEvents();
tvwOnWorkJob.MouseWheel -= new MouseEventHandler(CancelUpDowm_MouseWheel); tvwOnWorkJob.MouseWheel -= new MouseEventHandler(CancelUpDowm_MouseWheel);
isDrawing = false; isDrawing = false;
}); });
th.IsBackground = true; th.IsBackground = true;
th.ApartmentState = ApartmentState.STA; //此处要加一行,否则画线时会报错 //th.ApartmentState = ApartmentState.STA;
th.Start(); th.Start();
} }
} }
@@ -243,6 +247,32 @@ namespace VisionEdit
} }
} }
#region 线
internal void tvw_job_AfterSelect(object sender, TreeViewEventArgs e)
{
nodeTextBeforeEdit = tvwOnWorkJob.SelectedNode.Text;
}
internal void Draw_Line(object sender, TreeViewEventArgs e)
{
tvwOnWorkJob.Refresh();
DrawLine();
}
internal void tbc_jobs_SelectedIndexChanged(object sender, EventArgs e)
{
tvwOnWorkJob.Refresh();
DrawLine();
}
public void DrawLineWithoutRefresh(object sender, MouseEventArgs e)
{
tvwOnWorkJob.Update();
DrawLine();
}
internal void MyJobTreeView_ChangeUICues(object sender, UICuesEventArgs e)
{
tvwOnWorkJob.Update();
DrawLine();
}
#endregion
/// <summary> /// <summary>
/// 画Treeview控件两个节点之间的连线 /// 画Treeview控件两个节点之间的连线
@@ -364,6 +394,7 @@ namespace VisionEdit
catch { } catch { }
} }
/// <summary> /// <summary>
/// 交换List中的两个位置的值 /// 交换List中的两个位置的值
/// </summary> /// </summary>

View File

@@ -43,6 +43,14 @@ namespace VisionEdit
} }
return null; return null;
} }
public static IToolInfo CreateToolVision(ToolType animalType)
{
if (animalTypeDic.ContainsKey(animalType))
{
return (IToolInfo)Activator.CreateInstance(animalTypeDic[animalType]);
}
return null;
}
} }
//自定义Attribute //自定义Attribute

View File

@@ -11,25 +11,58 @@ using VisionEdit.ToolLib;
namespace VisionEdit.VisionTool namespace VisionEdit.VisionTool
{ {
[VisionToolAttribute(ToolType.HalconToolInterface)] [VisionToolAttribute(ToolType.HalconTool)]
public class HalconToolInterface : IToolInfo public class HalconToolInterface : IToolInfo
{ {
// 必添加输出项 // 必添加输出项
ToolIO outputImage = new ToolIO("OutputImage", null, DataType.Image); ToolIO outputImage = new ToolIO("OutputImage", null, DataType.Image);
/// <summary>
/// 获取工具的所有信息
/// </summary>
/// <param name="生成的工具名称"></param>
public HalconToolInterface(string toolName) public HalconToolInterface(string toolName)
{ {
enable = true; enable = true;
toolType = ToolType.HalconToolInterface; toolType = ToolType.HalconTool;
this.toolName = toolName; this.toolName = toolName;
tool = new HalconTool(); tool = new HalconTool();
toolInput = new List<ToolIO>(); toolInput = new List<ToolIO>();
toolOutput = new List<ToolIO>() { outputImage }; toolOutput = new List<ToolIO>() { outputImage };
} }
/// <summary>
/// 只获取选择工具的描述信息
/// </summary>
public HalconToolInterface()
{
toolDescription = "Halcon采集图像接口,可直接连接网口、USB等相机";
}
} }
[VisionToolAttribute(ToolType.FindLine)] [VisionToolAttribute(ToolType.FindLine)]
public class FindLineToolInterface : IToolInfo public class FindLineToolInterface : IToolInfo
{ {
ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image);
ToolIO outputXld = new ToolIO("outputXld", null, DataType.Line);
ToolIO startPointRow = new ToolIO("StartPointRow", null, DataType.Point);
ToolIO startPointColumn = new ToolIO("StartPointRow", null, DataType.Point);
ToolIO endPointRow = new ToolIO("EndPointRow", null, DataType.Point);
ToolIO endPointColumn = new ToolIO("EndPointColumn", null, DataType.Point);
public FindLineToolInterface(string toolName)
{
enable = true;
toolType = ToolType.FindLine;
this.toolName = toolName;
tool = new FindLine();
toolInput = new List<ToolIO>() { inputImage };
toolOutput = new List<ToolIO>() { outputXld, startPointRow, startPointColumn, endPointRow, endPointColumn };
}
/// <summary>
/// 只获取选择工具的描述信息
/// </summary>
public FindLineToolInterface()
{
toolDescription = "找线工具";
}
} }
[VisionToolAttribute(ToolType.BlobAnalyse)] [VisionToolAttribute(ToolType.BlobAnalyse)]
public class BlobAnalyseToolInterface : IToolInfo public class BlobAnalyseToolInterface : IToolInfo

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>

Binary file not shown.

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +0,0 @@
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.exe.config
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.exe
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.pdb
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\DevComponents.DotNetBar2.dll
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.exe
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.dll
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.pdb
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\DevComponents.DotNetBar2.xml
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.pdb
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormImageWindow.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormJobManage.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormLog.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormToolBox.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.Properties.Resources.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.exe
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.pdb

Binary file not shown.

Binary file not shown.