1、添加PMA匹配工具

2、建立工程概念,对工程进行保存和恢复
3、将图像显示窗口更改为SmartwindowControl
4、其他bug修复
This commit is contained in:
liu.wenjie
2021-12-18 10:37:44 +08:00
parent a24dda2525
commit 8eb315b394
23 changed files with 1494 additions and 811 deletions

Binary file not shown.

View File

@@ -32,9 +32,6 @@ G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.FormCaliper.resources
G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csproj.GenerateResource.Cache
G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.dll
G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.FormCaliper.resources
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\log4net.config
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\CaliperTool.dll
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\CaliperTool.pdb
@@ -60,5 +57,8 @@ F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\HWindow_Tool.pdb
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\halcondotnet.xml
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\Newtonsoft.Json.xml
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\DevComponents.DotNetBar2.xml
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.FormCaliper.resources
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.dll
F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.pdb

View File

@@ -49,6 +49,7 @@ namespace CommonMethods
{
String,
IntValue,
DoubleValue,
Region,
Image,
Point,
@@ -89,6 +90,7 @@ namespace CommonMethods
No_Input_String,
Tool_Run_Error,
Input_Value_Type_Error,
Model_UnFound,
,
,
,

View File

@@ -12,4 +12,3 @@ F:\GitHubClone\最新克隆\VisionEdit\CommonMethods\bin\Debug\halcondotnet.xml
F:\GitHubClone\最新克隆\VisionEdit\CommonMethods\bin\Debug\Newtonsoft.Json.xml
F:\GitHubClone\最新克隆\VisionEdit\CommonMethods\obj\Debug\CommonMethods.dll
F:\GitHubClone\最新克隆\VisionEdit\CommonMethods\obj\Debug\CommonMethods.pdb
F:\GitHubClone\最新克隆\VisionEdit\CommonMethods\obj\Debug\CommonHelper.csprojResolveAssemblyReference.cache

View File

@@ -37,11 +37,11 @@ namespace DataStruct
[Serializable]
public class XYU
{
internal XYU()
public XYU()
{
_point = new XY();
}
internal XYU(double x, double y, double u)
public XYU(double x, double y, double u)
{
_point = new XY();
_point.X = x;

View File

@@ -24,9 +24,6 @@ G:\VisionEdit\VisionEdit\FindCircle\obj\Debug\FindCircle.FormFindCircle.resource
G:\VisionEdit\VisionEdit\FindCircle\obj\Debug\FindCircleTool.csproj.GenerateResource.Cache
G:\VisionEdit\VisionEdit\FindCircle\obj\Debug\FindCircleTool.dll
G:\VisionEdit\VisionEdit\FindCircle\obj\Debug\FindCircleTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircleTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircle.FormFindCircle.resources
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircleTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\FindCircleTool.dll
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\FindCircleTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\CommonMethods.dll
@@ -41,5 +38,8 @@ F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\ToolBase.pdb
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\HWindow_Tool.pdb
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\halcondotnet.xml
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\bin\Debug\Newtonsoft.Json.xml
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircleTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircle.FormFindCircle.resources
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircleTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircleTool.dll
F:\GitHubClone\最新克隆\VisionEdit\FindCircle\obj\Debug\FindCircleTool.pdb

View File

@@ -1,11 +1,9 @@
using System;
using HalconDotNet;
using DataStruct;
using static DataStruct.DataStruct;
using ToolBase;
using CommonMethods;
using System.Diagnostics;
using ChoiceTech.Halcon.Control;
namespace FindLineTool
{
@@ -207,7 +205,7 @@ namespace FindLineTool
{
if(inputImage != null)
{
FormFindLine.Instance.myHwindow.DispHWindow.DispImage(new HImage(inputImage));
FormFindLine.Instance.myHwindow.DispImage(new HImage(inputImage));
}
}

View File

@@ -32,6 +32,9 @@
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.tsbtRunTool = new System.Windows.Forms.ToolStripButton();
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.lb_RunStatus = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_RunTime = new System.Windows.Forms.ToolStripStatusLabel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.panel1 = new System.Windows.Forms.Panel();
this.tabControl1 = new System.Windows.Forms.TabControl();
@@ -68,9 +71,6 @@
this.label7 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.lb_RunStatus = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_RunTime = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStrip1.SuspendLayout();
this.statusStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@@ -119,6 +119,22 @@
this.statusStrip.TabIndex = 3;
this.statusStrip.Text = "statusStrip1";
//
// lb_RunStatus
//
this.lb_RunStatus.Name = "lb_RunStatus";
this.lb_RunStatus.Size = new System.Drawing.Size(0, 17);
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(120, 17);
this.toolStripStatusLabel1.Text = " ";
//
// lb_RunTime
//
this.lb_RunTime.Name = "lb_RunTime";
this.lb_RunTime.Size = new System.Drawing.Size(0, 17);
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -528,23 +544,7 @@
this.label9.TabIndex = 105;
this.label9.Text = "起点列坐标:";
//
// lb_RunStatus
//
this.lb_RunStatus.Name = "lb_RunStatus";
this.lb_RunStatus.Size = new System.Drawing.Size(0, 17);
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(120, 17);
this.toolStripStatusLabel1.Text = " ";
//
// lb_RunTime
//
this.lb_RunTime.Name = "lb_RunTime";
this.lb_RunTime.Size = new System.Drawing.Size(0, 17);
//
// FormFindLine2
// FormFindLine
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
@@ -553,7 +553,7 @@
this.Controls.Add(this.statusStrip);
this.Controls.Add(this.toolStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormFindLine2";
this.Name = "FormFindLine";
this.Text = "找线工具";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormFindLine2_FormClosing);
this.Load += new System.EventHandler(this.FormFindLine2_Load);

View File

@@ -32,9 +32,6 @@ G:\VisionEdit\VisionEdit\FindLine\obj\Debug\FindLineTool.FormFindLine.resources
G:\VisionEdit\VisionEdit\FindLine\obj\Debug\FindLineTool.csproj.GenerateResource.Cache
G:\VisionEdit\VisionEdit\FindLine\obj\Debug\FindLineTool.dll
G:\VisionEdit\VisionEdit\FindLine\obj\Debug\FindLineTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.FormFindLine.resources
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\log4net.config
F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\FindLineTool.dll
F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\FindLineTool.pdb
@@ -60,5 +57,8 @@ F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\HWindow_Tool.pdb
F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\halcondotnet.xml
F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\Newtonsoft.Json.xml
F:\GitHubClone\最新克隆\VisionEdit\FindLine\bin\Debug\DevComponents.DotNetBar2.xml
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.FormFindLine.resources
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.dll
F:\GitHubClone\最新克隆\VisionEdit\FindLine\obj\Debug\FindLineTool.pdb

View File

@@ -32,9 +32,6 @@ G:\VisionEdit\VisionEdit\HalconTool\obj\Debug\HalconTool.FormHalconTool.resource
G:\VisionEdit\VisionEdit\HalconTool\obj\Debug\HalconTool.csproj.GenerateResource.Cache
G:\VisionEdit\VisionEdit\HalconTool\obj\Debug\HalconTool.dll
G:\VisionEdit\VisionEdit\HalconTool\obj\Debug\HalconTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.FormHalconTool.resources
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\log4net.config
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\HalconTool.dll
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\HalconTool.pdb
@@ -58,5 +55,8 @@ F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\HWindow_Tool.pdb
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\DevComponents.DotNetBar2.xml
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\halcondotnet.xml
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\bin\Debug\Newtonsoft.Json.xml
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.FormHalconTool.resources
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.dll
F:\GitHubClone\最新克隆\VisionEdit\HalconTool\obj\Debug\HalconTool.pdb

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
using ChoiceTech.Halcon.Control;
using CommonMethods;
using HalconDotNet;
using Logger;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -16,12 +17,13 @@ namespace PMAlignTool
{
public partial class FormPMAlignTool : Form
{
private PMAlign myPMAlign = null;
private IToolInfo myToolInfo = null;
private PMAlign myPMAlign = new PMAlign();
public IToolInfo myToolInfo = new IToolInfo();
public HWindowTool_Smart myHwindow = new HWindowTool_Smart();
private HDrawingObject selected_drawing_object = new HDrawingObject();
private List<HDrawingObject> templateModelListAdd = new List<HDrawingObject>() { };
private List<HDrawingObject> templateModelListSub = new List<HDrawingObject>() { };
public List<HDrawingObject> templateModelListAdd = new List<HDrawingObject>() { };
public List<HDrawingObject> templateModelListSub = new List<HDrawingObject>() { };
public FormPMAlignTool(ref object pmalign)
{
InitializeComponent();
@@ -30,6 +32,7 @@ namespace PMAlignTool
{
myToolInfo = (IToolInfo)pmalign;
myPMAlign = (PMAlign)myToolInfo.tool;
myPMAlign.toolName = myToolInfo.FormToolName;
myPMAlign.DispImage();
}
}
@@ -70,15 +73,22 @@ namespace PMAlignTool
myHwindow.Dock = DockStyle.Fill;
InitTool();
}
bool isInitTool = false;
private void InitTool()
{
isInitTool = true;
cNumErosionValue1.Value = myPMAlign.imageProcess.erosionValue1.algValue;
cbCErosion1.Checked = myPMAlign.imageProcess.erosionValue1.isEnable;
cmbErsion1.TextStr = myPMAlign.imageProcess.erosionValue1.algName;
cNumDilationValue2.Value = myPMAlign.imageProcess.dilationValue.algValue;
cbCDilation1.Checked = myPMAlign.imageProcess.dilationValue.isEnable;
cmbDilation.TextStr = myPMAlign.imageProcess.dilationValue.algName;
cNumErosionValue2.Value = myPMAlign.imageProcess.erosionValue2.algValue;
cbCErosion2.Checked = myPMAlign.imageProcess.erosionValue2.isEnable;
cmbErsion2.TextStr = myPMAlign.imageProcess.erosionValue2.algName;
isInitTool = false;
}
private void btnAcqNewModelImage_Click(object sender, EventArgs e)
@@ -121,10 +131,12 @@ namespace PMAlignTool
myHwindow.DispHWindow.AttachDrawingObjectToWindow(temp_object);
if(rdo_templateRegionAdd.Checked)
{
temp_object.SetDrawingObjectParams("color","green");
templateModelListAdd.Add(temp_object);
}
else
{
temp_object.SetDrawingObjectParams("color", "red");
templateModelListSub.Add(temp_object);
}
}
@@ -156,27 +168,124 @@ namespace PMAlignTool
selectObj.Dispose();
}
public HObject contour;
private void btnCreateModel_Click(object sender, EventArgs e)
{
if(myPMAlign.modelID == -1)
if(myPMAlign.inputImage != null)
{
myPMAlign.oldTrainImage = myPMAlign.inputImage;
if(myPMAlign.CreateModelTemplate() == 0)
{
if (myPMAlign.matchMode == MatchMode.BasedShape)
{
HOperatorSet.GetShapeModelContours(out contour, myPMAlign.modelID, (HTuple)1);
HTuple area, row, col;
HOperatorSet.AreaCenter(myPMAlign.templateRegion, out area, out row, out col);
HTuple homMat2D;
HOperatorSet.HomMat2dIdentity(out homMat2D);
HOperatorSet.HomMat2dTranslate(homMat2D, row, col, out homMat2D);
HOperatorSet.AffineTransContourXld(contour, out contour, homMat2D);
}
myHwindow.DispHWindow.ClearWindow();
hWindowTool_Smart1.DispHWindow.ClearWindow();
myHwindow.DispImage(myPMAlign.inputImage);
//在模板窗口显示模板
HTuple row1, col1, row2, col2;
HOperatorSet.SmallestRectangle1(myPMAlign.templateRegion, out row1, out col1, out row2, out col2);
HObject outRectangle1;
HOperatorSet.GenRectangle1(out outRectangle1, row1 - 20, col1 - 20, row2 + 20, col2 + 20);
HObject imageReduced, imagePart;
HOperatorSet.ReduceDomain(myPMAlign.inputImage, outRectangle1, out imageReduced);
HObject outBoundary, inBoundary;
HOperatorSet.Boundary(myPMAlign.templateRegion, out outBoundary, "inner_filled");
HOperatorSet.Boundary(myPMAlign.templateRegion, out inBoundary, "outer");
HOperatorSet.CropDomain(imageReduced, out imagePart);
HOperatorSet.SetSystem("flush_graphic", "true");
hWindowTool_Smart1.DispImage(imagePart);
hWindowTool_Smart1.DispHWindow.SetColor("green");
hWindowTool_Smart1.DispHWindow.SetDraw("margin");
hWindowTool_Smart1.DispHWindow.DispObj(outBoundary);
hWindowTool_Smart1.DispHWindow.DispObj(inBoundary);
if (myPMAlign.matchMode == MatchMode.BasedShape)
{
HOperatorSet.SetLineStyle(myHwindow.DispHWindow, new HTuple());
HOperatorSet.SetColor(myHwindow.DispHWindow, new HTuple("orange"));
HOperatorSet.DispObj(contour, myHwindow.DispHWindow);
}
}
else
{
LoggerClass.WriteLog("创建模板失败!", MsgLevel.Exception);
}
}
else
{
myPMAlign.isCreateModel = false;
}
}
/// <summary>
/// 设定工具运行状态
/// </summary>
/// <param name="msg">运行中的信息</param>
/// <param name="status">运行状态</param>
public void SetToolStatus(string msg, ToolRunStatu status, Exception ex = null)
{
if (myPMAlign != null)
{
myPMAlign.runMessage = msg;
myPMAlign.toolRunStatu = status;
lb_RunStatus.Text = myPMAlign.toolRunStatu == ToolRunStatu.Succeed ? "工具运行成功!" : $"工具运行异常, 异常原因:{myPMAlign.runMessage}";
lb_RunTime.Text = myPMAlign.runTime;
if (myPMAlign.toolRunStatu == ToolRunStatu.Succeed)
{
statusStrip.BackColor = Color.LimeGreen;
}
else
{
statusStrip.BackColor = Color.Red;
}
}
}
private void PreProcess_CheckChanged(object sender, EventArgs e)
{
myPMAlign.imageProcess.erosionValue1.isEnable = cbCErosion1.Checked;
myPMAlign.imageProcess.dilationValue.isEnable = cbCDilation1.Checked;
myPMAlign.imageProcess.erosionValue2.isEnable = cbCErosion2.Checked;
if(!isInitTool)
{
myPMAlign.imageProcess.erosionValue1.isEnable = cbCErosion1.Checked;
myPMAlign.imageProcess.dilationValue.isEnable = cbCDilation1.Checked;
myPMAlign.imageProcess.erosionValue2.isEnable = cbCErosion2.Checked;
}
}
private void PreValueChanged(double value)
{
myPMAlign.imageProcess.erosionValue1.algValue = cNumErosionValue1.Value;
myPMAlign.imageProcess.dilationValue.algValue = cNumDilationValue2.Value;
myPMAlign.imageProcess.erosionValue2.algValue = cNumErosionValue2.Value;
if (!isInitTool)
{
myPMAlign.imageProcess.erosionValue1.algValue = cNumErosionValue1.Value;
myPMAlign.imageProcess.dilationValue.algValue = cNumDilationValue2.Value;
myPMAlign.imageProcess.erosionValue2.algValue = cNumErosionValue2.Value;
}
}
private void rabShape_CheckedChanged(object sender, EventArgs e)
{
myPMAlign.matchMode = rabShape.Checked ? MatchMode.BasedShape : MatchMode.BasedGray;
}
private void cmbErsion1_SelectedIndexChanged()
{
if (!isInitTool)
{
myPMAlign.imageProcess.erosionValue1.algName = cmbErsion1.TextStr;
myPMAlign.imageProcess.dilationValue.algName = cmbDilation.TextStr;
myPMAlign.imageProcess.erosionValue2.algName = cmbErsion2.TextStr;
}
}
private void tsbtRunTool_Click(object sender, EventArgs e)
{
myPMAlign.Run(SoftwareRunState.Debug);
}
}
}

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@@ -20,13 +20,25 @@ using CommonMethods;
using HalconDotNet;
using ToolBase;
using static DataStruct.DataStruct;
using System.Windows.Forms;
using Logger;
using System.Diagnostics;
using System.IO;
namespace PMAlignTool
{
[Serializable]
public class PMAlign:IToolBase
public class PMAlign : IToolBase
{
public string toolName { get; set; } = string.Empty;
/// <summary>
/// 输入姿态
/// </summary>
public PosXYU inputPose = new PosXYU();
/// <summary>
/// 制作模板时的输入位姿
/// </summary>
public PosXYU templatePose = new PosXYU();
/// <summary>
/// 是否显示匹配到的模板
/// </summary>
@@ -50,7 +62,7 @@ namespace PMAlignTool
/// <summary>
/// 模板句柄
/// </summary>
internal HTuple modelID { get; set; } = -1;
internal HTuple modelID = -1;
/// <summary>
/// 行列间隔像素数
/// </summary>
@@ -62,13 +74,11 @@ namespace PMAlignTool
/// <summary>
/// 模板区域
/// </summary>
internal HObject templateRegion { get; set; }
internal HObject templateRegion;
/// <summary>
/// 在进行模板创建及匹配时进行的图像预处理
/// </summary>
public ImagePreProcess imageProcess { get; set; } = new ImagePreProcess();
internal HObject totalRegion;
/// <summary>
/// 搜索区域图像
/// </summary>
@@ -101,10 +111,14 @@ namespace PMAlignTool
/// 训练时所使用的模板图像,不点击获取图像时,不进行更新
/// </summary>
public HObject oldTrainImage { get; set; }
public bool isCreateModel { get; set; }
internal void DispMainWindow(object dispHWindow)
public override void DispMainWindow(HWindow dispHWindow)
{
throw new NotImplementedException();
if (showFeature)
{
ShowTemplate(dispHWindow, false);
}
}
/// <summary>
@@ -119,30 +133,365 @@ namespace PMAlignTool
/// <summary>
/// 模板匹配结果
/// </summary>
internal List<XYU> L_result = new List<XYU>();
public List<MatchResult> L_resultList { get; set; } = new List<MatchResult>() { };
/// <summary>
/// 匹配模式
/// </summary>
public MatchMode matchMode { get; set; } = MatchMode.BasedShape;
/// <summary>
/// 缩放最小值
/// </summary>
public HTuple minScale { get; internal set; } = 0.9;
/// <summary>
/// 缩放最大值
/// </summary>
public HTuple maxScale { get; internal set; } = 1.1;
public bool isAutoConstants { get; set; }
public string modelFilePath { get; set; }
public RegionType searchRegionType { get; set; }
public HObject SearchRegion { get; private set; }
public override void Run(SoftwareRunState softwareRunState)
{
Stopwatch sw = new Stopwatch();
sw.Restart();
if (inputImage == null)
{
FormPMAlignTool.Instance.SetToolStatus("工具输入图像为空", ToolRunStatu.Not_Input_Image);
return;
}
try
{
if (softwareRunState == SoftwareRunState.Debug)
{
DispImage();
}
if (inputPose != null)
{
HTuple Row = inputPose.X - templatePose.X;
HTuple Col = inputPose.Y - templatePose.Y;
HTuple angle = inputPose.U - templatePose.U;
HTuple _homMat2D;
HOperatorSet.HomMat2dIdentity(out _homMat2D);
HOperatorSet.HomMat2dRotate(_homMat2D, (HTuple)(angle), (HTuple)templatePose.X, (HTuple)templatePose.Y, out _homMat2D);
HOperatorSet.HomMat2dTranslate(_homMat2D, (HTuple)(Row), (HTuple)(Col), out _homMat2D);
//对预期线的找模板区域做放射变换
}
minScore = FormPMAlignTool.Instance.nud_minScore.Value;
startAngle = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleStart.Value);
angleRange = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleRange.Value);
angleStep = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleStep.Value);
polarity = FormPMAlignTool.Instance.cbx_polarity.TextStr;
isAutoConstants = FormPMAlignTool.Instance.ckb_autoContrast.Checked;
minScale = FormPMAlignTool.Instance.nud_ScaleStart.Value;
maxScale = FormPMAlignTool.Instance.nud_ScaleRange.Value;
HObject findModelImg = ProcessImage(inputImage);
int ret = FindModelTemplate(findModelImg);
ToolRunStatu myState = ret == 0 ? ToolRunStatu.Succeed : ToolRunStatu.Model_UnFound;
string retMsg = ret == 0 ? "工具运行成功,已找到匹配项!" : "未找到匹配项";
sw.Stop();
runTime = $"运行时间: {sw.ElapsedMilliseconds} ms";
FormPMAlignTool.Instance.SetToolStatus(retMsg, myState);
}
catch (Exception ex)
{
FormPMAlignTool.Instance.SetToolStatus($"工具运行异常,异常原因: {ex}", ToolRunStatu.Tool_Run_Error);
}
finally
{
}
}
public override void DispImage()
{
FormPMAlignTool.Instance.myHwindow.DispHWindow.ClearWindow();
if (inputImage != null)
{
FormPMAlignTool.Instance.myHwindow.DispHWindow.DispObj(inputImage);
}
}
public override void DispMainWindow(HWindow window)
private void CreateModelRegion()
{
throw new NotImplementedException();
HOperatorSet.GenEmptyObj(out templateRegion);
foreach (var item in FormPMAlignTool.Instance.templateModelListAdd)
{
HObject selectObj = item.GetDrawingObjectIconic();
HOperatorSet.Union2(selectObj, templateRegion, out templateRegion);
}
foreach (var item in FormPMAlignTool.Instance.templateModelListSub)
{
HObject selectObj = item.GetDrawingObjectIconic();
HOperatorSet.Difference(templateRegion, selectObj, out templateRegion);
}
}
public void CreateModelTemplate()
public int CreateModelTemplate()
{
HObject template;
oldTrainImage = inputImage;
if (FormPMAlignTool.Instance.templateModelListAdd.Count == 0)
{
LoggerClass.WriteLog("未划定模板建立区域", MsgLevel.Exception);
isCreateModel = false;
return -1;
}
CreateModelRegion();
HObject createModelImg;
HOperatorSet.GenEmptyObj(out createModelImg);
createModelImg = ProcessImage(inputImage);
HOperatorSet.ReduceDomain(createModelImg, templateRegion, out template);
try
{
HTuple rows, cols, angles, scores, scale;
if (matchMode == MatchMode.BasedShape)
{
HOperatorSet.CreateScaledShapeModel(template,
"auto",
((HTuple)startAngle).TupleRad(),
((HTuple)angleRange).TupleRad(),
"auto",
minScale,
maxScale,
"auto",
"auto",
polarity,
isAutoConstants ? (HTuple)"auto" : (HTuple)contrast,
"auto",
out modelID);
HOperatorSet.FindScaledShapeModel(inputImage,
(HTuple)modelID,
((HTuple)startAngle).TupleRad(),
((HTuple)angleRange - startAngle).TupleRad(),
minScale,
maxScale,
(HTuple)minScore,
(HTuple)matchNum,
(HTuple)0.5,
(HTuple)"least_squares",
(HTuple)0,
(HTuple)0.9,
out rows,
out cols,
out angles,
out scale,
out scores);
}
else
{
HOperatorSet.CreateNccModel(template,
"auto",
((HTuple)startAngle).TupleRad(),
((HTuple)angleRange).TupleRad(),
"auto",
"use_polarity",
out modelID);
HOperatorSet.FindNccModel(inputImage,
(HTuple)modelID,
((HTuple)startAngle).TupleRad(),
((HTuple)angleRange - startAngle).TupleRad(),
(HTuple)minScore,
(HTuple)matchNum,
(HTuple)0.5,
(HTuple)"true",
(HTuple)0,
out rows,
out cols,
out angles,
out scores);
}
isCreateModel = true;
HOperatorSet.WriteRegion(templateRegion, FormPMAlignTool.Instance.myToolInfo.FormToolName + ".hobj");
if (scores != null && scores.Type != HTupleType.EMPTY)
{
templatePose = new PosXYU { X = rows[0].D, Y = cols[0].D , U = angles[0].D };
}
}
catch (Exception ex)
{
Logger.LoggerClass.WriteLog("创建模板时出现异常", ex);
isCreateModel = false;
return -1;
}
finally
{
FormPMAlignTool.Instance.templateModelListAdd.Clear();
FormPMAlignTool.Instance.templateModelListSub.Clear();
}
return 0;
}
public int FindModelTemplate(HObject findModelImage)
{
if (!isCreateModel)
{
LoggerClass.WriteLog("未创建或加载模板", MsgLevel.Exception);
return -1;
}
if (File.Exists(toolName + ".hobj"))
{
HOperatorSet.ReadRegion(out templateRegion, toolName + ".hobj");
LoggerClass.WriteLog($"{FormPMAlignTool.Instance.myToolInfo.FormToolName} 已加载模板", MsgLevel.Info);
}
HObject image;
if (searchRegionType == RegionType.AllImage)
{
image = findModelImage;
}
else
{
HOperatorSet.ReduceDomain(inputImage, SearchRegion, out reducedImage);
image = reducedImage;
}
HTuple rows, cols, angles, scores;
L_resultList.Clear();
try
{
if (matchMode == MatchMode.BasedShape)
{
HTuple temp;
HOperatorSet.FindScaledShapeModel(image,
(HTuple)modelID,
((HTuple)startAngle).TupleRad(),
((HTuple)angleRange - startAngle).TupleRad(),
minScale,
maxScale,
(HTuple)minScore,
(HTuple)matchNum,
(HTuple)0.5,
(HTuple)"least_squares",
(HTuple)0,
(HTuple)0.9,
out rows,
out cols,
out angles,
out temp,
out scores);
}
else
{
HOperatorSet.FindNccModel(image,
(HTuple)modelID,
((HTuple)startAngle).TupleRad(),
((HTuple)angleRange - startAngle).TupleRad(),
(HTuple)minScore,
(HTuple)matchNum,
(HTuple)0.5,
(HTuple)"true",
(HTuple)0,
out rows,
out cols,
out angles,
out scores);
}
FormPMAlignTool.Instance.myHwindow.DispHWindow.ClearWindow();
FormPMAlignTool.Instance.myHwindow.DispImage(inputImage);
if (rows.TupleLength() > 0)
{
for (int i = 0; i < rows.TupleLength(); i++)
{
MatchResult matchResult = new MatchResult();
matchResult.Row = Math.Round((double)rows[i], 3);
matchResult.Col = Math.Round((double)cols[i], 3);
matchResult.Angle = Math.Round((double)angles[i], 3);
matchResult.Socre = Math.Round((double)scores[i], 3);
L_resultList.Add(matchResult);
}
MatchResult temp;
for (int i = 0; i < L_resultList.Count - 1; i++)
{
for (int j = i + 1; j < L_resultList.Count; j++)
{
if (L_resultList[i].Socre < L_resultList[j].Socre)
{
temp = L_resultList[i];
L_resultList[i] = L_resultList[j];
L_resultList[j] = temp;
}
}
}
}
if(L_resultList.Count > 0)
{
toolRunStatu = ToolRunStatu.Succeed;
ShowTemplate(FormPMAlignTool.Instance.myHwindow.DispHWindow);
return 0;
}
}
catch (Exception ex)
{
LoggerClass.WriteLog("寻找模板时出现异常!", ex);
toolRunStatu = ToolRunStatu.Not_Succeed;
}
return -1;
}
public HObject contour;
/// <summary>
/// 显示模板
/// </summary>
internal void ShowTemplate(HWindow dispHWindow, bool clearImg = false)
{
try
{
if (modelID == null)
{
return;
}
if(clearImg)
{
dispHWindow.ClearWindow();
dispHWindow.DispObj(inputImage);
}
if (matchMode == MatchMode.BasedShape)
{
HOperatorSet.GetShapeModelContours(out contour, modelID, new HTuple(1));
HTuple area, row, col;
HOperatorSet.AreaCenter(templateRegion, out area, out row, out col);
HTuple homMat2D;
HOperatorSet.HomMat2dIdentity(out homMat2D);
HOperatorSet.HomMat2dTranslate(homMat2D, row, col, out homMat2D);
HOperatorSet.AffineTransContourXld(contour, out contour, homMat2D);
dispHWindow.SetColor("green");
dispHWindow.DispObj(contour);
}
HObject outBoundary, inBoundary;
HOperatorSet.Boundary(templateRegion, out outBoundary, "inner_filled");
HOperatorSet.Boundary(templateRegion, out inBoundary, "outer");
HOperatorSet.SetColor(FormPMAlignTool.Instance.myHwindow.DispHWindow, "green");
HOperatorSet.SetLineStyle(FormPMAlignTool.Instance.myHwindow.DispHWindow, new HTuple());
dispHWindow.DispObj(outBoundary);
dispHWindow.DispObj(inBoundary);
}
catch (Exception ex)
{
Logger.LoggerClass.WriteLog("显示模板时出现错误", ex);
}
}
private HObject ProcessImage(HObject inputImg)
{
if (inputImage == null) return inputImage;
if (imageProcess.erosionValue1.isEnable)
{
HOperatorSet.GrayErosionShape(inputImg, out inputImg, imageProcess.erosionValue1.algValue, imageProcess.erosionValue1.algValue, imageProcess.erosionValue1.algName);
}
if (imageProcess.dilationValue.isEnable)
{
HOperatorSet.GrayDilationShape(inputImg, out inputImg, imageProcess.erosionValue1.algValue, imageProcess.erosionValue1.algValue, imageProcess.dilationValue.algName);
}
if (imageProcess.erosionValue2.isEnable)
{
HOperatorSet.GrayErosionShape(inputImg, out inputImg, imageProcess.erosionValue1.algValue, imageProcess.erosionValue1.algValue, imageProcess.erosionValue2.algName);
}
return inputImg;
}
}
[Serializable]
public class ImagePreProcess
@@ -156,5 +505,35 @@ namespace PMAlignTool
{
public double algValue { get; set; } = 0;
public bool isEnable { get; set; } = false;
public string algName { get; set; } = "rectangle";
}
[Serializable]
public enum MatchMode
{
BasedShape,
BasedGray,
}
[Serializable]
public enum RegionType
{
AllImage,
Rectangle1,
Rectangle2,
Circle,
Ellipse,
MultPoint,
Ring,
Any,
}
/// <summary>
/// 模板匹配结果
/// </summary>
[Serializable]
public struct MatchResult
{
internal double Row;
internal double Col;
internal double Angle;
internal double Socre;
}
}

View File

@@ -96,8 +96,9 @@
treeNode4.Name = "节点3";
treeNode4.SelectedImageIndex = 3;
treeNode4.Text = "HIKVision";
treeNode5.ImageIndex = 4;
treeNode5.ImageKey = "相机.png";
treeNode5.Name = "节点0";
treeNode5.SelectedImageKey = "相机.png";
treeNode5.Text = "获取图像";
treeNode6.Name = "节点5";
treeNode6.Text = "滤波";
@@ -173,6 +174,7 @@
this.imageList1.Images.SetKeyName(14, "停止.png");
this.imageList1.Images.SetKeyName(15, "几何_32.png");
this.imageList1.Images.SetKeyName(16, "图像预处理_32.png");
this.imageList1.Images.SetKeyName(17, "相机.png");
//
// richTextBoxEx1
//
@@ -205,6 +207,7 @@
this.imageListTool.Images.SetKeyName(8, "卡尺.png");
this.imageListTool.Images.SetKeyName(9, "匹配.ico");
this.imageListTool.Images.SetKeyName(10, "模板.ico");
this.imageListTool.Images.SetKeyName(11, "相机.png");
//
// splitContainer1
//

View File

@@ -124,8 +124,8 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABs
LAAAAk1TRnQBSQFMAgEBEQEAAVgBAAFYAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADS
LgAAAk1TRnQBSQFMAgEBEgEAAXABAAFwAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABgAMAAaADAAEBAQABCAYAAVAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -153,168 +153,178 @@
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wAHAAH/ARYBagiP
AWcBSgg4AVkBmgH/aAABFgqPAWcBSgo4AZpoAAFqCo8BZwFKCjgBWWgAC48BZwFKCzhoAAuPAWcBSgs4
aAALjwFnAUoLOGgAC48BZwFKCzhoAAuPAWcBSgs4aAALjwFnAUoLUmgAC48BZwxDaAALjwFnAUkLcWgA
C48BZwFJC3FoAAuPAWcBSQtxaAALjwFnAUkLcWgADEMBSQtxaAALowFmAUkLcWgAC8YBZwFJC3FoAAvG
AWcBSQtxaAALxgFnAUkLcWgAC8YBZwFJC3FoAAvGAWcBSQtxaAALxgFnAUkKcQFWaAABsArGAWcBSQpx
AXhoAAH/AbABgAjGAWcBSQhxAVYBeAH0/wD/AHIAAfQGVQF3Af82AAolAW80AA1VMgAPJTAAB1UBlwGY
AXcGVQF3EgAL9BEACSUBTAglAW8tAARVAZgJAAF3BFUPAA/rDgAFJQFvCQABRgUlKgAB9ANVAZ0NAAGX
A1UB/wwAAusB8gsAAQcC6wwABCUBTA0ABSUTAAL0EwAB/wNVEAAB/wNVDAAB6wHtDQAC6wsABCUQAAH0
BCUSAAL/EwADVRIAAf8DVQsAAesB8gEAAusCAAHyAesDAAHrAewBAAHsAesKAAQlEgAB/wMlAW8FAAH0
AfEB/wkAAv8JAAH/AfEB9AYAA1UUAAH0AlUBlwoAAesB9AEAAusCAAHyAesDAAHrAewBAAGSAesJAAH/
AyUUAAH0AyUFAAH/AbwBcwHxAf8HAAL0BwAB/wHxAXMBvAH/BQAB/wJVAQgHAAHxDQABdwJVCgAB6wH0
AQAC6wIAAfIB6wMAAesB7AEAAZIB6wkAAyUBFhUAAUYDJQYAAf8BBwEcAfMB/wUAAv8FAAH/AfMBHAEH
Af8HAANVCAACVQ0AAlUBdwkAAesB9AEAAusCAAHyAesDAAHrAewBAAGSAesIAAH/AyUFAAz/BgADJQgA
Af8BBwEcAfMB/wMAAvQDAAH/AfMBHAEHAf8JAAJVAfQIAANVDAABdwJVCQAB6wH0AQAC6wIAAfIB6wMA
AesB7AEAAZIB6wgAAyUB8wUAAW8LJQYAAUYCJQFvAwAB8wFyARwB8wIAAf8BBwEcAfMB/wEAAvQBAAH/
AfMBHAEHAf8CAAG8AfIBHAH0BAABCAJVCQAEVQHxCwACVQH/CAAB6wH0AQAC6wIAAfIB6wMAAesB7AEA
AZIB6wgAAyUGAAFvCyUHAAMlAwAB/wEcAfMFAAH/AQcBHAHzAv8B8wEcAQcB/wQAAf8BcwG8BQADVQkA
BlUKAAJVAXcIAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrCAADJQYAAW8LJQcAAyUDAAH/AfQBcwH/
BgAB/wG8AnMBvAH/BgAB9AEcAe8FAAJVAZcJAAdVCQADVQgAAesB9AEAAusCAAHyAesDAAHrAewBAAGS
AesHAAH/AyUGAAFvCyUHAAMlAwAB9AIHAfQHAATwBwAB8AH0AfAB9AQAAlUB8wkACFUBCAcAA1UIAAHr
AfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwABlAIlARoGAAFvCyUHAAMlCgAC/wHxAf8BAALxAQAB/wHx
Av8LAAJVAfQJAAlVBwABnQJVCAAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wcAAUYCJQH0BgABbwsl
BwABbwIlCQAB9AH/AfMDAALxAwAB8wH/AfQKAAJVAfMJAAhVCAADVQgAAesB9AEAAusCAAHyAesDAAHr
AewBAAGSAesHAAGTAiUBGgYAAW8LJQcAAyUHAAP0BQAC8QUAA/QIAAJVAZcJAAZVAQgJAANVCAAB6wH0
AQAC6wIAAfIB6wMAAesB7AEAAZIB6wcAAf8CJQFMBgABbwslBwADJQcAAv8GAALxBgAC/wgAA1UJAAVV
Af8KAANVCAAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlDwAC8RAAAZgCVQkA
BFUMAAJVAfQIAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrCAADJQYAAW8LJQcAAyUPAALxEQACVQH/
CAACVQEIDAABlwJVCQAB6wH0DQABkgHrCAADJQH/BQABbwslBgABFgMlDwAC8REAA1UIAAFVDgADVQcA
Av8B6wHwDf8B7AHrAv8GAAH0AyUFAAEWC0YGAAMlAf8PAALxEQAB9AJVAfMVAAGXAlUIABXrBwADJQHz
FQABbwMlEAAC8RIAA1UVAANVCAAV6wcAARoDJRUAAyURAALxEwADVRMAA1UJABXrCAAEJRMABCURAALx
AgAB/xAAAfIDVREAA1UPAALrBwAB6wHsDgAEJREABCUSAALxAgABHBEAAQgDVQHyDQABmANVAfQPAALr
AfQFAAG8AesB7w8ABCUB8w0AAZMEJRMAAvEBAAH/AXIB9BEAAfIEVQH/CQAB8gRVEgAJ6xEABSUB/wkA
AfMFJRQAAvEBAAEIAfABHBMABlUBlwHxAfQB8QdVFAAB8QWSAfQTAAclAW8BGwH0ARoBRgclFQAC/wEA
AfIB/wHzAf8TAAH0DVUB/zAAARoPJQH/MwABmAdVAfA1AAH0CyUB/3cAAf8BkwFGAZMB/3AAAZcDVQEI
IQABwghaAfNPAAHCBlUB9B0AAfMMWgH0TQAJVQH/GgAQWg4AAfQDBwHyDgAB9AMHAfImAApVAZcYAAZa
AQgEAAGeBVoNAAH0AXMB8gLzAfQOAAH/A/MBBwHyBgABvBkUBQAMVQHCFQAFWgH/CAAB/wNaDQAB8wEH
FgAB8wEHBgABvAEUBLgBkA0UBLgBkAEUBQAOVQH/EgABngRaDAAB5AH/DQAB8wEHAgAB/wLzAvQB/wIA
Av8CAAH/AwAB/wMAAfMBBwYAAbwBFAG4A5ABbAcUAYsBkAQUA5ABuAGQARQFABBVEQAEWhwAAfMBBwUA
Af8B8wHwAgAB8wFyAbwCBwEAAf8CBwMAAfMBBwYAAbwBFAG4CRQBbAPZAWwGFAG4AZABFAUAEVUBmA4A
BFodAAH/AfQCAAHzAgcBvAH0AgAB8AH/AfQB8QHzAf8B8wHvAfIB/wHyAf8BAAH/AfQGAAG8ARQBuAgU
AZAC2QGzApACuAGQAxQBuAGQARQFABNVAfIMAANaAf8jAAH/AfQBcwEcAf8B9AEcAQAB8AIAAXMB9AH/
AXMBBwH/CQABvAEUAbgHFAGQAtkBbAGQBNkBkAMUAbgBkAEUBQAVVQH/CQABngNaIQAB/wMHAfEB9gHy
Ae8B9AHyARwB/wHwAf8BBwHyAfQBBwsAAbwIFAFsAtkBbAGyAdkBuAKLAbMBkAYUBQAWVQGXCAADWgH/
JAAB/wG8AXMB/wH0AXIB/wHvAfICAAH/AQcBAAEHCwABvAgUAbgB2QFsAZAB2QG4ARQBkALZAbIGFAUA
GFUBmAYAA1oUAANaCQAIBwHvDwcHAAEZGd8FABpVAfQEAANaEwABCARaLwABGgFZARsBGgFZAfQBGgFZ
AZoBAAGaAVkBGgoAG1UBmAIAAf8DWhIAAf8GWggAAfQB8gH0AfIC8wH0Af8B8wH0AfMB9ALzAfQB8wH0
AfMB9AHzAfQB8xAAAZoBWQH0AXoBmgH/AnoB9gGaAXoBGgH/CgAcVQH/AQABngJaAZ4SAAdaAQgHAAHz
AQcB8wEHAfMBCAIAAfIBvAHyAbwB8gG8AfMBBwHzAQcB8wG8AfMBBxAAAZoBWQH/AVkBGgEbAVkB/wHz
AVkBmgH/AZoKABxVAZgBAANaAcIRAAlaAf8GAAH/AfQB8wHvAfMBHAH/AfMB9AFzAfYB9AHwAvIB8AH/
AfQB8gHwAfIBvA0AAvQBAAGaAXoB/wFZAhoBegEAAZoBegH0AnoKABxVARsBAAGeAloBnhAAC1oB/wcA
AfQBcwH2AXID/wG8AXMB7wEcAQABBwL/AQABvAH0AfAB8w0AAnoBAAGaAVkB/wFZAXoB/wH2AfQBWQEa
ARsBWQEaCgAcVQIAAf8DWg8ABFoBngNaAf8EWgYAAQcB/wFzAfQBHAHzAvQB/wH0AfMB9gHwAQcB/wEH
AQABBwH/AQcB/w0AAZoBegH/ARoBWQHzARsCegEaAXoBmgH/AZoBegH/CgAaVQGXBAADWg8ABFoBAANa
AQAB/wNaBgABBwHyAfMBvAH/ARwB/wH0AfEB9gEHAXMBBwH/Ae8B8AH0AQcB/wEHDgABGwFZARsB9gFZ
AXoB/wEbAXoBWQF6Af8BmgFZARsLABlVAf8FAANaDwADWgIAA1oCAAHAAloGAAH/Ae8C/wEAAfMBHAHz
Av8B8wL0AQcBvAH0AXMB9AEHAfEOAAH/AnoB/wHzAnoBGwH/AvQBmgFZARoB/wsAF1UB8QcAA1oQAAEb
AgAB8wNaAwAB/wgAAbwB8AEAAvQB/wHvAXIBHAEHAnMB9AH/ARwB9AHzAXMB/w8AARoBWQEaAQAB/wF6
BVkBmgH/DAAVVgGYCQABfANaEgADWgGeDAAB/wEcAfIB/wEHAbwB9AH2AvMB9AH/AfABHAHzAQABBwH/
EAAB9gJ6ARoC/wHzAxoB9A4AFFYB/wsAA1oRAAH/A1oJAAH0AfIEAAEcAfAB/wHzAnMCHAFzAVAB8AcA
AfQB8ggAAfcEAAH/AXoBWQF6AfMB/woAAfcB8QYAElYB9A0ABFoQAARaCQAB8wEHBAAB/wG8Ae8B8gH/
AfQC8wH0Af8B8wEIAf8FAAHzAQcIAAH3BQAB/wEaAXoBWQJ6AZoBGgcAAfcB8QYAEFYBCBAABFoOAARa
CgAB8wEHBgAB/wEHAXIBcwEcAe8BHAFQARwB9AYAAfMBBwgAAfcHAAH/ARsBmgF6AVkBGgcAAfcB8QYA
DlYBlxIABVoMAARaAZ4KAAHzAQcIAAH/AfQC8wH0Af8IAAHzAQcIAAH3A/EB9A0AA/EB9wHxBgANVgH/
FAAFWgoABVoLAAH/AVAB7wIHAfIOAAH0AwcBcwH0CAAE9wHxDQAE9wHxBgALVgH0FwAGWgYABloNAAH/
A/MB9A4AAf8D8wH0JgAJVgEIGgAQWkwAAZgGVgGXHQAB5AxaAZ5OAAVWAf8gAApaUQACCAH/JQAB9AKe
Af//ADMAAfMDWigAAfMDWjAAAfYbWQQAAfMBWgEAAVomAARaAQAEWhQAAWwB9AHzFgAdWQMAAfMDWiMA
Af8CWgH0AQAB8wNaAgABCAJaEQABbAH0AWYXAB1ZBAAC8wHCAVohAAGeAVoB/wQAA/MEAAHCAVoB/w4A
AWwC9AH/AwAB/wGuEgAdWQcAAfQBWh8AAloPAAFaAcIMAAFsAvQBZgQAAWwBtRIAHVkIAAH/AVodAAHk
AVoRAAFaAf8KAAFsAvQBZgQAAfIB9AGREgAdWQkAAf8BWhsAAf8BWhMAAVoJAAG8AvQBrgUAAe0B9AFm
EgAdWQoAAfQBWhoAAVoUAAHCAVoIAAH3AvQBZgQAAewC9AHzEgAdWQsAAfQBWhgAAf8BWhUAAVoHAAFs
BPQBvAH3AgABZgL0EwAdWQwAAf8BWhcAAVoWAAEIAVoGAAT0AfcBbAHzAWwBZgEJAWYBrhMAHVkNAAH/
AVoWAAFaFwABWgUAAa4B8wX0AfMBbAH/AfECCQFsEgAdWQ4AAfQBWhUAAVoXAAFaBgABZgL0AWwE9AG8
Aa4B/wGuAQkBkQG8EAAdWQ8AAfQBWhIAAfMDWhQAAfMDWgQAAf8B9AFmAgABbAGRAvQB8AH0Aa4B8QH/
Aa4BCQFsAW0BuwHtDAAdWRAAAf8BWhEAAfMBWgEAAVoUAAHzAVoBAAFaBAABbAHxAgABBwEJAbsBbAP0
Aa4B9AFmAv8CCQJmDAAdWREAAf8BWhAAAfMDWhQAAfMDWgMAAfMBZgH/AgACkQEAAWYBbAEJAWYC9AGu
AQcBZgH/Ae8BbAG7AfcLAB1ZEgAB9AFaEAAB8wFaAfMVAAHzAVoB8wcAAfMBCQEHAgABbQH0AWwBuwGu
AvQBtQFsAfcB/wGuAfALAB1ZEwAB9AFaEAABWhcAAVoIAAHzAWwFAAFmAf8BkQGuAQcC9AHzA2YLAB1Z
FAAB/wFaDwABWhYAAfQBWg0AAZIB/wFmAf8BbAH/AQkBZgT0AfABbAFmCQABMRtZATEVAAH/AVoOAAGe
AVoVAAFaDwABZgH/AgAB9wG8Ae0BCQFmAfQB8gP0AZEB8AcAAzEBWBX/BDEWAAH0AVoOAAFaFAAB/wFa
FQABbAH/AWwBrgb0AWwB/wUAAzEBWBX/BDEXAAH0AVoNAAEbAVoTAAFaAf8WAAH/AfMBAAGuAfAG9AFs
BAAdMRgAAf8BWg0AAloRAAFaAZ4cAAFmBvQB8gGuAgAbMQF5GgAB/wFaDQACWg8AAlofAAFsBfQBZgIA
EjElAAH0AVoNAAJaDQABWgHkIQABvAGSAvQB8wMAETEBmSYAAcIDWgsAARsCWgIAAfMDWgMAAloB/yQA
AWwB9AFsAwARMScAAfMBWgEAAVoNAAGeBFoBAARaAf9kAAHzA1oQAAHzA1ppAAPzEQAD8/8ANgABsxAA
Af8Bu20AAbIRAAGybAABsgEJAbICCQGzAgkBugIJAbsHCQG6AbNqAAL/AQABswIAAQkCAAHzAgAB/wgA
AQlqAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRQAC7IBswYAHfQGAAH/
AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRMAAQkMsgUAH4oFAAH/ArMBshKz
CQAB/wIJAf8CCQH0AgABGQEJARkB/wIJAf8CAAMJAf8B8gEJCgABswqyAfQIAAG6AbIEAAG0AYoBZQK7
GhkBigUAAf8UAAEZCQAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJAQAB8wEJCQAB8wGzCAABugGy
AfQIAAG6AbIEAAGzAYoCZQK7GRkBigUAAf8UAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkJAAG6AfQIAAEJ
DLIEAAGzAYoBuwJlAbsBCRgZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJAf8CAAYJCQABugH0CQAMsgQA
AbMBigG7ARkCZQG7AQkJGQEJDBkBuwGKBQAB/xQAARkKAAH/AgkC/wMAAv8DCQH/AwAC/wIJAfMB/wkA
AboB9BkAAbMBigG7AhkCZQG7CBkCuwsZAQkBZQGKBQAB/xQAARkLAAIJBwADCQYAAgkB9AoAAboB9BkA
AbMBigG7AxkCZQG7BhkBuwJlAbsKGQJlAYoFAAH/FAABGQsAAgkH/wMJBv8CCQH0CgABugH0CQALsgGz
BAABswGKAbsEGQJlAbsFGQFmAmUBZgEJCBkBuwFlARkBigUAAf8UAAEZCwAUCQH0CgABugH0CAABCQyy
BAABswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZAYoFAAH/FAABGQsAFAkB9AoAAboB9AQA
BPQBswGyAfQIAAG6AbIEAAGzAYoBuwYZAWUBZgG7AQkBuwJlAhkBZQFmAQkGGQFmAWUCGQGKBQAB/xWy
FAAB8wIJEwABugH0AgAIsgH0CAABugGyBAABswGKAbsGGQG7AmUBuwJlAxkBCQFlAbsFGQG7AWUBbAIZ
AYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkUAAHzAgkTAAG6AfQCAAGyBQABCQyyBAABswGKAbsHGQG1
A2UFGQJlAbsDGQEJAmUDGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDQAH/wEZAgkH/wwAAboB9AIA
AbIGAAyyBAABswGKAbsQGQEJAWUBuwMZAa4BZQQZAYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkMAAHz
EgkLAAG6AfQCAAGyFgABswGKAbsCGQFmAmUMGQJlAbsBGQG7AmUEGQGKBQAB/wIAAbMCAAEJAgAB8wIA
Af8IAAEZDAAB8wEJDv8DCQsAAboB9AIAAbIWAAGzAYoBuwEZAWUBiwIZAWUMGQFlArsCZQUZAYoEAAH/
AbIVtAGyCwAB8wEJDgADCQoAB7IBswQAC7IBswQAAbMBigG7ARkBZQG7AhkBZQwZBGUBkQUZAYoEAAGy
FwABsgoAAfMBCQMAAgkJAAMJCQABCQiyAwABCQyyBAABswGKAbsBGQFlAbsCCQFlDhkBtQcZAYoEAAGy
F7MBsgoAAfMBCQMAAgkJAAMJCQABugGyAfQEAAG6AbID9AGzAbIB9AgAAboBsgQAAbMBigG7AhkDZQG7
FhkBigQAAboXAAGyCgAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6AbIEAAGzAYoBuxwZAYoEAAG6
FwABsgoAAfMBCQ4AAwkJAAEJCLIDAAEJDLIEAAGzAYoduwGKBAABuhcAAbIKAAHzEgkKAAiyBAAMsgUA
H4oEAAG6BAABsgH0CwABCQGyBAABsgoAAf8RCQHzJwAB/xytAbQFAAG6AwABsgEAAbMLAAEJAQABsgMA
AbJnAAG6AgABsgMAAbIJAAGyAwABswIAAbJnAAG6AbMBugQAAboIAALzAwAB/wG6AbMBCW8AAbIBCQUA
AboBs3kAAboDsgEJbQABQgFNAT4HAAE+AwABKAMAAYADAAGgAwABAQEAAQEGAAEKFgAD/wEABP8MAAT/
DAAE/wwABP8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHw
AgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEP
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/yIAH2dgAAH0AWcdmAFn
YAAB7QFnHZgBZ2AAAe0BZwyYAW0DZwHrDJgBZ0QAAf8BFgFqCI8BZwFKCDgBWQGaAf8EAAHtAWcKmAHs
B2cBkgqYAWdEAAEWCo8BZwFKCjgBmgQAAe0BZwmYA2cF/wJnAesJmAFnRAABagqPAWcBSgo4AVkEAAHt
AWcJmAFnAfcH/wJnCZgBZ0QAC48BZwFKCzgEAAHtAWcImAJnCf8CZwiYAWdEAAuPAWcBSgs4BAAB7QFn
B5gB6wFnBP8B8wHtAfQE/wFnCJgBZ0QAC48BZwFKCzgEAAHtAWcHmAJnA/8FZwP/AmcHmAFnRAALjwFn
AUoLOAQAAe0BZweYAWcD/wFtAWcCmAHtAWcBBwP/AWcHmAFnRAALjwFnAUoLOAQAAe0BZweYAWcD/wFn
AewDmAJnA/8BZweYAWdEAAuPAWcBSgtSBAAB7QFnB5gBZwP/AWcFmAFnA/8BZweYAWdEAAuPAWcMQwQA
Ae0BZweYAWcD/wFnBZgBZwP/AWcHmAFnRAALjwFnAUkLcQQAAe0BZweYAWcD/wFnAZIDmAHqAWcD/wFn
B5gBZ0QAC48BZwFJC3EEAAHtAWcHmAFnA/8CZwOYAWcBjQP/AWcHmAFnRAALjwFnAUkLcQQAAe0BZweY
AWcB6wP/BWcD/wJnB5gBZ0QAC48BZwFJC3EEAAHtAWcHmAHrAWcE/wH3AWcBvAT/AWcImAFnRAAMQwFJ
C3EEAAHtAWcImAFnAW0J/wJnCJgBZ0QAC6MBZgFJC3EEAAHtAWcImAHsAWcB8wf/AZIBZwOYBWcBmAFn
RAALxgFnAUkLcQQAAe0BZwmYA2cF/wNnA5gFZwGYAWdEAAvGAWcBSQtxBAAB7QFnCpgBbQdnAewEmAFn
A+MBZwGYAWdEAAvGAWcBSQtxBAAB7QFnDJgFZwaYBWcBmAFnRAALxgFnAUkLcQQAAe0BZxeYAW0DZwHs
AZgBZ0QAC8YBZwFJC3EEAAHwAWcdmAFnRAALxgFnAUkKcQFWBQAfZ0QAAbAKxgFnAUkKcQF4BgAFBwJn
D24BZwHsBQdFAAH/AbABgAjGAWcBSQhxAVYBeAH0CwAB8AFnD5oBZwH/bgABZw+aAWdvAAFnD5oBZ28A
EWdvAAH0D2cB/1MAAfQGVQF3Af82AAolAW80AA1VMgAPJTAAB1UBlwGYAXcGVQF3EgAL9BEACSUBTAgl
AW8tAARVAZgJAAF3BFUPAA/rDgAFJQFvCQABRgUlKgAB9ANVAZ0NAAGXA1UB/wwAAusB8gsAAQcC6wwA
BCUBTA0ABSUTAAL0EwAB/wNVEAAB/wNVDAAB6wHtDQAC6wsABCUQAAH0BCUSAAL/EwADVRIAAf8DVQsA
AesB8gEAAusCAAHyAesDAAHrAewBAAHsAesKAAQlEgAB/wMlAW8FAAH0AfEB/wkAAv8JAAH/AfEB9AYA
A1UUAAH0AlUBlwoAAesB9AEAAusCAAHyAesDAAHrAewBAAGSAesJAAH/AyUUAAH0AyUFAAH/AbwBcwHx
Af8HAAL0BwAB/wHxAXMBvAH/BQAB/wJVAQgHAAHxDQABdwJVCgAB6wH0AQAC6wIAAfIB6wMAAesB7AEA
AZIB6wkAAyUBFhUAAUYDJQYAAf8BBwEcAfMB/wUAAv8FAAH/AfMBHAEHAf8HAANVCAACVQ0AAlUBdwkA
AesB9AEAAusCAAHyAesDAAHrAewBAAGSAesIAAH/AyUFAAz/BgADJQgAAf8BBwEcAfMB/wMAAvQDAAH/
AfMBHAEHAf8JAAJVAfQIAANVDAABdwJVCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUB8wUA
AW8LJQYAAUYCJQFvAwAB8wFyARwB8wIAAf8BBwEcAfMB/wEAAvQBAAH/AfMBHAEHAf8CAAG8AfIBHAH0
BAABCAJVCQAEVQHxCwACVQH/CAAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMl
AwAB/wEcAfMFAAH/AQcBHAHzAv8B8wEcAQcB/wQAAf8BcwG8BQADVQkABlUKAAJVAXcIAAHrAfQBAALr
AgAB8gHrAwAB6wHsAQABkgHrCAADJQYAAW8LJQcAAyUDAAH/AfQBcwH/BgAB/wG8AnMBvAH/BgAB9AEc
Ae8FAAJVAZcJAAdVCQADVQgAAesB9AEAAusCAAHyAesDAAHrAewBAAGSAesHAAH/AyUGAAFvCyUHAAMl
AwAB9AIHAfQHAATwBwAB8AH0AfAB9AQAAlUB8wkACFUBCAcAA1UIAAHrAfQBAALrAgAB8gHrAwAB6wHs
AQABkgHrBwABlAIlARoGAAFvCyUHAAMlCgAC/wHxAf8BAALxAQAB/wHxAv8LAAJVAfQJAAlVBwABnQJV
CAAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wcAAUYCJQH0BgABbwslBwABbwIlCQAB9AH/AfMDAALx
AwAB8wH/AfQKAAJVAfMJAAhVCAADVQgAAesB9AEAAusCAAHyAesDAAHrAewBAAGSAesHAAGTAiUBGgYA
AW8LJQcAAyUHAAP0BQAC8QUAA/QIAAJVAZcJAAZVAQgJAANVCAAB6wH0AQAC6wIAAfIB6wMAAesB7AEA
AZIB6wcAAf8CJQFMBgABbwslBwADJQcAAv8GAALxBgAC/wgAA1UJAAVVAf8KAANVCAAB6wH0AQAC6wIA
AfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlDwAC8RAAAZgCVQkABFUMAAJVAfQIAAHrAfQBAALr
AgAB8gHrAwAB6wHsAQABkgHrCAADJQYAAW8LJQcAAyUPAALxEQACVQH/CAACVQEIDAABlwJVCQAB6wH0
DQABkgHrCAADJQH/BQABbwslBgABFgMlDwAC8REAA1UIAAFVDgADVQcAAv8B6wHwDf8B7AHrAv8GAAH0
AyUFAAEWC0YGAAMlAf8PAALxEQAB9AJVAfMVAAGXAlUIABXrBwADJQHzFQABbwMlEAAC8RIAA1UVAANV
CAAV6wcAARoDJRUAAyURAALxEwADVRMAA1UJABXrCAAEJRMABCURAALxAgAB/xAAAfIDVREAA1UPAALr
BwAB6wHsDgAEJREABCUSAALxAgABHBEAAQgDVQHyDQABmANVAfQPAALrAfQFAAG8AesB7w8ABCUB8w0A
AZMEJRMAAvEBAAH/AXIB9BEAAfIEVQH/CQAB8gRVEgAJ6xEABSUB/wkAAfMFJRQAAvEBAAEIAfABHBMA
BlUBlwHxAfQB8QdVFAAB8QWSAfQTAAclAW8BGwH0ARoBRgclFQAC/wEAAfIB/wHzAf8TAAH0DVUB/zAA
ARoPJQH/MwABmAdVAfA1AAH0CyUB/3cAAf8BkwFGAZMB/3AAAZcDVQEIIQABwghaAfNPAAHCBlUB9B0A
AfMMWgH0TQAJVQH/GgAQWg4AAfQDBwHyDgAB9AMHAfImAApVAZcYAAZaAQgEAAGeBVoNAAH0AXMB8gLz
AfQOAAH/A/MBBwHyBgABvBkUBQAMVQHCFQAFWgH/CAAB/wNaDQAB8wEHFgAB8wEHBgABvAEUBLgBkA0U
BLgBkAEUBQAOVQH/EgABngRaDAAB5AH/DQAB8wEHAgAB/wLzAvQB/wIAAv8CAAH/AwAB/wMAAfMBBwYA
AbwBFAG4A5ABbAcUAYsBkAQUA5ABuAGQARQFABBVEQAEWhwAAfMBBwUAAf8B8wHwAgAB8wFyAbwCBwEA
Af8CBwMAAfMBBwYAAbwBFAG4CRQBbAPZAWwGFAG4AZABFAUAEVUBmA4ABFodAAH/AfQCAAHzAgcBvAH0
AgAB8AH/AfQB8QHzAf8B8wHvAfIB/wHyAf8BAAH/AfQGAAG8ARQBuAgUAZAC2QGzApACuAGQAxQBuAGQ
ARQFABNVAfIMAANaAf8jAAH/AfQBcwEcAf8B9AEcAQAB8AIAAXMB9AH/AXMBBwH/CQABvAEUAbgHFAGQ
AtkBbAGQBNkBkAMUAbgBkAEUBQAVVQH/CQABngNaIQAB/wMHAfEB9gHyAe8B9AHyARwB/wHwAf8BBwHy
AfQBBwsAAbwIFAFsAtkBbAGyAdkBuAKLAbMBkAYUBQAWVQGXCAADWgH/JAAB/wG8AXMB/wH0AXIB/wHv
AfICAAH/AQcBAAEHCwABvAgUAbgB2QFsAZAB2QG4ARQBkALZAbIGFAUAGFUBmAYAA1oUAANaCQAIBwHv
DwcHAAEZGd8FABpVAfQEAANaEwABCARaLwABGgFZARsBGgFZAfQBGgFZAZoBAAGaAVkBGgoAG1UBmAIA
Af8DWhIAAf8GWggAAfQB8gH0AfIC8wH0Af8B8wH0AfMB9ALzAfQB8wH0AfMB9AHzAfQB8xAAAZoBWQH0
AXoBmgH/AnoB9gGaAXoBGgH/CgAcVQH/AQABngJaAZ4SAAdaAQgHAAHzAQcB8wEHAfMBCAIAAfIBvAHy
AbwB8gG8AfMBBwHzAQcB8wG8AfMBBxAAAZoBWQH/AVkBGgEbAVkB/wHzAVkBmgH/AZoKABxVAZgBAANa
AcIRAAlaAf8GAAH/AfQB8wHvAfMBHAH/AfMB9AFzAfYB9AHwAvIB8AH/AfQB8gHwAfIBvA0AAvQBAAGa
AXoB/wFZAhoBegEAAZoBegH0AnoKABxVARsBAAGeAloBnhAAC1oB/wcAAfQBcwH2AXID/wG8AXMB7wEc
AQABBwL/AQABvAH0AfAB8w0AAnoBAAGaAVkB/wFZAXoB/wH2AfQBWQEaARsBWQEaCgAcVQIAAf8DWg8A
BFoBngNaAf8EWgYAAQcB/wFzAfQBHAHzAvQB/wH0AfMB9gHwAQcB/wEHAQABBwH/AQcB/w0AAZoBegH/
ARoBWQHzARsCegEaAXoBmgH/AZoBegH/CgAaVQGXBAADWg8ABFoBAANaAQAB/wNaBgABBwHyAfMBvAH/
ARwB/wH0AfEB9gEHAXMBBwH/Ae8B8AH0AQcB/wEHDgABGwFZARsB9gFZAXoB/wEbAXoBWQF6Af8BmgFZ
ARsLABlVAf8FAANaDwADWgIAA1oCAAHAAloGAAH/Ae8C/wEAAfMBHAHzAv8B8wL0AQcBvAH0AXMB9AEH
AfEOAAH/AnoB/wHzAnoBGwH/AvQBmgFZARoB/wsAF1UB8QcAA1oQAAEbAgAB8wNaAwAB/wgAAbwB8AEA
AvQB/wHvAXIBHAEHAnMB9AH/ARwB9AHzAXMB/w8AARoBWQEaAQAB/wF6BVkBmgH/DAAVVgGYCQABfANa
EgADWgGeDAAB/wEcAfIB/wEHAbwB9AH2AvMB9AH/AfABHAHzAQABBwH/EAAB9gJ6ARoC/wHzAxoB9A4A
FFYB/wsAA1oRAAH/A1oJAAH0AfIEAAEcAfAB/wHzAnMCHAFzAVAB8AcAAfQB8ggAAfcEAAH/AXoBWQF6
AfMB/woAAfcB8QYAElYB9A0ABFoQAARaCQAB8wEHBAAB/wG8Ae8B8gH/AfQC8wH0Af8B8wEIAf8FAAHz
AQcIAAH3BQAB/wEaAXoBWQJ6AZoBGgcAAfcB8QYAEFYBCBAABFoOAARaCgAB8wEHBgAB/wEHAXIBcwEc
Ae8BHAFQARwB9AYAAfMBBwgAAfcHAAH/ARsBmgF6AVkBGgcAAfcB8QYADlYBlxIABVoMAARaAZ4KAAHz
AQcIAAH/AfQC8wH0Af8IAAHzAQcIAAH3A/EB9A0AA/EB9wHxBgANVgH/FAAFWgoABVoLAAH/AVAB7wIH
AfIOAAH0AwcBcwH0CAAE9wHxDQAE9wHxBgALVgH0FwAGWgYABloNAAH/A/MB9A4AAf8D8wH0JgAJVgEI
GgAQWkwAAZgGVgGXHQAB5AxaAZ5OAAVWAf8gAApaUQACCAH/JQAB9AKeAf//ADMAAfMDWigAAfMDWjAA
AfYbWQQAAfMBWgEAAVomAARaAQAEWhQAAWwB9AHzFgAdWQMAAfMDWiMAAf8CWgH0AQAB8wNaAgABCAJa
EQABbAH0AWYXAB1ZBAAC8wHCAVohAAGeAVoB/wQAA/MEAAHCAVoB/w4AAWwC9AH/AwAB/wGuEgAdWQcA
AfQBWh8AAloPAAFaAcIMAAFsAvQBZgQAAWwBtRIAHVkIAAH/AVodAAHkAVoRAAFaAf8KAAFsAvQBZgQA
AfIB9AGREgAdWQkAAf8BWhsAAf8BWhMAAVoJAAG8AvQBrgUAAe0B9AFmEgAdWQoAAfQBWhoAAVoUAAHC
AVoIAAH3AvQBZgQAAewC9AHzEgAdWQsAAfQBWhgAAf8BWhUAAVoHAAFsBPQBvAH3AgABZgL0EwAdWQwA
Af8BWhcAAVoWAAEIAVoGAAT0AfcBbAHzAWwBZgEJAWYBrhMAHVkNAAH/AVoWAAFaFwABWgUAAa4B8wX0
AfMBbAH/AfECCQFsEgAdWQ4AAfQBWhUAAVoXAAFaBgABZgL0AWwE9AG8Aa4B/wGuAQkBkQG8EAAdWQ8A
AfQBWhIAAfMDWhQAAfMDWgQAAf8B9AFmAgABbAGRAvQB8AH0Aa4B8QH/Aa4BCQFsAW0BuwHtDAAdWRAA
Af8BWhEAAfMBWgEAAVoUAAHzAVoBAAFaBAABbAHxAgABBwEJAbsBbAP0Aa4B9AFmAv8CCQJmDAAdWREA
Af8BWhAAAfMDWhQAAfMDWgMAAfMBZgH/AgACkQEAAWYBbAEJAWYC9AGuAQcBZgH/Ae8BbAG7AfcLAB1Z
EgAB9AFaEAAB8wFaAfMVAAHzAVoB8wcAAfMBCQEHAgABbQH0AWwBuwGuAvQBtQFsAfcB/wGuAfALAB1Z
EwAB9AFaEAABWhcAAVoIAAHzAWwFAAFmAf8BkQGuAQcC9AHzA2YLAB1ZFAAB/wFaDwABWhYAAfQBWg0A
AZIB/wFmAf8BbAH/AQkBZgT0AfABbAFmCQABMRtZATEVAAH/AVoOAAGeAVoVAAFaDwABZgH/AgAB9wG8
Ae0BCQFmAfQB8gP0AZEB8AcAAzEBWBX/BDEWAAH0AVoOAAFaFAAB/wFaFQABbAH/AWwBrgb0AWwB/wUA
AzEBWBX/BDEXAAH0AVoNAAEbAVoTAAFaAf8WAAH/AfMBAAGuAfAG9AFsBAAdMRgAAf8BWg0AAloRAAFa
AZ4cAAFmBvQB8gGuAgAbMQF5GgAB/wFaDQACWg8AAlofAAFsBfQBZgIAEjElAAH0AVoNAAJaDQABWgHk
IQABvAGSAvQB8wMAETEBmSYAAcIDWgsAARsCWgIAAfMDWgMAAloB/yQAAWwB9AFsAwARMScAAfMBWgEA
AVoNAAGeBFoBAARaAf9kAAHzA1oQAAHzA1ppAAPzEQAD8/8ANgABsxAAAf8Bu20AAbIRAAGybAABsgEJ
AbICCQGzAgkBugIJAbsHCQG6AbNqAAL/AQABswIAAQkCAAHzAgAB/wgAAQlqAAH/AgABswIAAQkCAAHz
AgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRQAC7IBswYAHfQGAAH/AgABswIAAQkCAAHzAgAB/wgA
ARkJAAH/BQkB9AIAARkFCQH/AgAGCRMAAQkMsgUAH4oFAAH/ArMBshKzCQAB/wIJAf8CCQH0AgABGQEJ
ARkB/wIJAf8CAAMJAf8B8gEJCgABswqyAfQIAAG6AbIEAAG0AYoBZQK7GhkBigUAAf8UAAEZCQAB/wIJ
AQACCQH0AgABGQEJAfMBAAIJAf8CAAMJAQAB8wEJCQAB8wGzCAABugGyAfQIAAG6AbIEAAGzAYoCZQK7
GRkBigUAAf8UAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkJAAG6AfQIAAEJDLIEAAGzAYoBuwJlAbsBCRgZ
AYoFAAH/FAABGQkAAf8FCQH0AgABGQUJAf8CAAYJCQABugH0CQAMsgQAAbMBigG7ARkCZQG7AQkJGQEJ
DBkBuwGKBQAB/xQAARkKAAH/AgkC/wMAAv8DCQH/AwAC/wIJAfMB/wkAAboB9BkAAbMBigG7AhkCZQG7
CBkCuwsZAQkBZQGKBQAB/xQAARkLAAIJBwADCQYAAgkB9AoAAboB9BkAAbMBigG7AxkCZQG7BhkBuwJl
AbsKGQJlAYoFAAH/FAABGQsAAgkH/wMJBv8CCQH0CgABugH0CQALsgGzBAABswGKAbsEGQJlAbsFGQFm
AmUBZgEJCBkBuwFlARkBigUAAf8UAAEZCwAUCQH0CgABugH0CAABCQyyBAABswGKAbsFGQJlAbsDGQG7
AWUBZgGRAWUBuwcZAQkCZQEZAYoFAAH/FAABGQsAFAkB9AoAAboB9AQABPQBswGyAfQIAAG6AbIEAAGz
AYoBuwYZAWUBZgG7AQkBuwJlAhkBZQFmAQkGGQFmAWUCGQGKBQAB/xWyFAAB8wIJEwABugH0AgAIsgH0
CAABugGyBAABswGKAbsGGQG7AmUBuwJlAxkBCQFlAbsFGQG7AWUBbAIZAYoFAAH/AgABswIAAQkCAAHz
AgAB/wgAARkUAAHzAgkTAAG6AfQCAAGyBQABCQyyBAABswGKAbsHGQG1A2UFGQJlAbsDGQEJAmUDGQGK
BQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDQAH/wEZAgkH/wwAAboB9AIAAbIGAAyyBAABswGKAbsQGQEJ
AWUBuwMZAa4BZQQZAYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkMAAHzEgkLAAG6AfQCAAGyFgABswGK
AbsCGQFmAmUMGQJlAbsBGQG7AmUEGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDAAB8wEJDv8DCQsA
AboB9AIAAbIWAAGzAYoBuwEZAWUBiwIZAWUMGQFlArsCZQUZAYoEAAH/AbIVtAGyCwAB8wEJDgADCQoA
B7IBswQAC7IBswQAAbMBigG7ARkBZQG7AhkBZQwZBGUBkQUZAYoEAAGyFwABsgoAAfMBCQMAAgkJAAMJ
CQABCQiyAwABCQyyBAABswGKAbsBGQFlAbsCCQFlDhkBtQcZAYoEAAGyF7MBsgoAAfMBCQMAAgkJAAMJ
CQABugGyAfQEAAG6AbID9AGzAbIB9AgAAboBsgQAAbMBigG7AhkDZQG7FhkBigQAAboXAAGyCgAB8wEJ
DgADCQkAAboBsgH0BAABugayAfQIAAG6AbIEAAGzAYoBuxwZAYoEAAG6FwABsgoAAfMBCQ4AAwkJAAEJ
CLIDAAEJDLIEAAGzAYoduwGKBAABuhcAAbIKAAHzEgkKAAiyBAAMsgUAH4oEAAG6BAABsgH0CwABCQGy
BAABsgoAAf8RCQHzJwAB/xytAbQFAAG6AwABsgEAAbMLAAEJAQABsgMAAbJnAAG6AgABsgMAAbIJAAGy
AwABswIAAbJnAAG6AbMBugQAAboIAALzAwAB/wG6AbMBCW8AAbIBCQUAAboBs3kAAboDsgEJbQABQgFN
AT4HAAE+AwABKAMAAYADAAGgAwABAQEAAQEGAAEKFgAD/wEABP8BgAsABP8MAAT/DAAE/wwAAfACAAEP
DAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHw
AgABDwwAAfACAAEPDAAB8AIAAQ8MAAT/DAAE/wwABP8MAAT/DAAB/wHwAQcG/wHgAQMG/wHAAQEG/wGA
AQAG/wIAAX8B/wHgAQMB/wH+AgABPwT/Af4BDwH4AT8B/wGAAQAB/wH8AQ8B+AEfBP8B+AE/Af4BDwH/
AR8B/AF/AfgBPwH+AQ8B/wH+AX8B/wHwAv8BDwH/AT8B/gF/AfAC/wEHAf8B/gF/Af8B8QL/AYcB/wEm
AXIBfwHhAv8BgwHjAf4BfwHHAeMC/wHDAf8BJgFyAX8BwwL/AcMB4AH+AX8BBwHDAfsB/wHjAf8BJgFy
AX8BwwL/AeEB+AE+AXwBHwHHAfkB/wHxAf8BJgFyAX8BhwHAAQMB8QH+AQ4BcAF/AccB+AH/AfEB/wEm
AXIBfwGHAcABAwHwAeEBggFBAYcBjwH4AT8B+AH/ASYBcgF/AY8BwAEDAfgB4wHgAQcCjwH4AR8B+AH/
ASYBcgF/AY8BwAEDAfgB4QH4AR8CjwH4AQ8B+AH/ASYBcgF/AQ8BwAEDAfgB4QH8AT8BhwGPAfgBAwH4
Af8BJgFyAX8BDwHAAQMB+AH/AcIBQwH/AY8B+AEDAfgB/wEmAXIBfwEPAcABAwH4Af8BjgFxAf8BjwH4
AQcB+AH/ASYBcgF/AQ8BwAEDAfgB/gE+AXwBfwGPAfgBDwH4Af8BJgFyAX8BDwHAAQMB+AH+An4BfwGP
AfgBHwH4Af8BJgFyAX8BjwHAAQMB+AH/Af4BfwH/AY8B+AF/AfgB/wEmAXIBfwGPAcABAwH4Af8B/gF/
Af8BxwH4Af8B8QH/AT8B/gF/AYcBwAEDAfAB/wH+AX8B/wHHAfsB/wHxAfwCAAEfAYcBwAEDAfAB/wH+
AX8B/wHDAv8B4wH8AgABHwHDAv8B4QH/Af4BfwH/AeMC/wHjAfwCAAEfAcMC/wHjAf8B/gF/Af8B8QL/
AccB/AIAAR8B4QL/AcMB/wH+AW8B/wHwAv8BjwH/AecB8wH/AfAC/wGHAf8B/gFvAf8B+AE/Af4BDwH/
AuMB/wH4AT8B/gEPAf8B/gFHAf8B/AEPAfgBPwH/AfABBwH/AfwBDwH4AR8B/wH+AUcC/wIAAX8B/wH4
AQ8B/wH+AgABPwH/Af4BQwL/AYABAAb/AgABfwX/AfABBwb/AcABAQ7/AfwBHw3/AeAE/wGAAR8J/wHA
AT8C/wH+AQABBwn/AcABDwL/AfwBAAEDAf8B8AF/Af4BDwT/AcABBwL/AfgBDwEDAf8B4AF/Af4BBwHg
AgABBwHAAQEC/wHwAT8BwwH/AecC/wHnAeACAAEHAcABAAF/Af8B4AH/AfMB/wHmAQYBbgHnAeACAAEH
AcABAAE/Af8B4QP/AecBxgEIAecB4AIAAQcBwAEAAQ8B/wHDA/8B5gEMAQABJwHgAgABBwHAAQABAwH/
AcME/wGAAbABPwHgAgABBwHAAgAB/wGHA/8B/AIAAf8B4AIAAQcBwAIAAX8BhwT/AYABMgH/AeACAAEH
AcACAAEfAY8C/wEfAfACAAEPAeACAAEHAcACAAEHAY8B/wH+AQ8F/wHgAQgB/wHAAgABAwEPAf8B/AEH
AfgCAAEfAf8B4AEAAf8BwAIAAQEBDwH/AfwBAwH4ARgBAAEfAf8B4AEAAf8BwAIAAQEBDwH/AfgBAQH4
AgABHwH/AiAB/wHAAgABAQEPAf8B8AEAAf4BAAEiAR8B/wEgAQAB/wHAAgABAwEPAf8B4AEAAfwBAAEC
AR8B/wIAAf8BwAIAAQcBjwH/AeEBEAH8AgABPwH/AQABAQH/AcACAAEPAY8B/wHjARgB/AEgAQABPwH/
AQABAQH/AcACAAE/AY8B/wH2AR0B/gFAAQABPwH/AYgBAwH/AcACAAH/AYcB/wH+AR8B/gEAAQIBfwH/
AYABDwH/AcABAAEBAf8BxwH/AfwBPwHnAYABDwHnAfsBwAH/Ac8BwAEAAQcB/wHDAf8B/AE/AecBgAED
AecB+wHgAR8BzwHAAQABHwH/AeEB/wH4AX8B5wHgAQcB5wH7AfgBHwHPAcABAAF/Af8B4AH/AfABfwHn
AfgBHwHnAfgBPwH+AQ8BwAEAAv8B8AF/AeAB/wHgAX8B/gEHAfgBPwH+AQ8BwAEDAv8B+AEfAYEB/wHw
AX8B/gEPBP8BwAEPAv8B/AEAAQMJ/wHAAT8C/wH+AQABBwn/AeABfwP/AYABHwn/AfEE/wHwJv8BwwT/
AfwBPwX/AcACAAEDAcsE/wHwAYcC/wGPAv8BwAIAAQEBwwT/AYQBMQL/AR8C/wHAAgABAQHhBP8BHgE8
AX8B/gEcAv8BwAIAAQEB/AP/Af4BfwH/AT8B/AE8Av8BwAIAAQEB/gF/Av8B/AL/AZ8B+AF4Av8BwAIA
AQEB/wE/Av8B+QL/Ad8B8AH4Av8BwAIAAQEB/wGfAv8B+wL/Ac8C8AL/AcACAAEBAf8BzwL/AfMC/wHv
AeABMQL/AcACAAEBAf8B5wL/AfcC/wHnAeABAQL/AcACAAEBAf8B8wL/AfcC/wH3AcABAAL/AcACAAEB
Af8B+QL/AfcC/wH3AeABAAE/Af8BwAIAAQEB/wH8Av8BwwL/AcMBxgEAAQMB/wHAAgABAQH/Af4BfwH/
AcsC/wHLAcwBAAEDAf8BwAIAAQEC/wE/Af8BwwL/AcMBjAGAAQEB/wHAAgABAQL/AZ8B/wHjAv8B4wH4
AcABAQH/AcACAAEBAv8BzwH/AfcC/wH3AfkB8AEBAf8BwAIAAQEC/wHnAf8B9wL/AecB/wHAAQABfwHA
AgABAQL/AfMB/wHzAv8B7wH/AeYBAAEfAcACAAEBAv8B+QH/AfsC/wHPAv8BgAEHAcACAAEBAv8B/AH/
AfkC/wHPAv8ByAEDAcACAAEBAv8B/gF/AfwC/wGfAv8B/gEAAcACAAEDA/8BPwH+AX8B/wE/A/8BgAHA
AQABDwT/AZ8B/wE/Af4BfwP/AcEBwAEAAQ8E/wHDAf8BjAE4BP8B8QHAAQABHwT/AcsB/wHgAYMM/wHD
Af8B/AE/DP8B4wH/Af4BPyX/Af4C/wE/DP8B/gL/Ab8M/wH8AgABHwz/AfkBbQG/Ad8M/wH7AW0BvwHf
AfABGAEMAQ8C/wEAAQ8BwAIAAQEB+wFtAb8B3wHwARgBDAEPAf8B/gEAAQ8BgAMAAfgCAAEfAfABGAEM
AQ8B/AEAAT8BzwQAAfsC/wHfAfEBGAGMAU8B+QH+AT8BzwQAAfsC/wHfAfABGAEMAQ8B+QH+AQABDwQA
AfsC/wHfAfABGAEMAQ8B+QH/AQABDwQAAfsC/wHfAfgBOAEcAQ8B+QP/BAAB+wL/Ad8B/AH+AT8BHwH5
A/8EAAH7Av8B3wH8AgABHwH5Af8BAAEPBAAB+wL/Ad8B/AIAAR8B+QH+AQABDwQAAfsC/wHfAfwCAAEf
AfkB4AE/Ac8EAAH4AgABHwH/Af4BPwH/AfkBgAE/Ac8EAAH7AW0BvwHfAf8B/gE/Af8B+QG+AQABDwQA
AfsBbQG/Ad8B/wIAAX8B+QG/AQABDwQAAfsBbQG/Ad8B/gIAAT8B+QG/Av8EAAH7AW0BvwHfAf4CAAE/
AfkBvwL/BAAB8AIAAQ8B/gF/Af4BPwHwAQ8BAAEPBAAB9wL/AfcB/gFzAf4BPwHgAQ4BAAEPBAAB8AIA
AQcB/gFzAf4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHg
AQ4BAAEPBAAB9wL/AfcB/gIAAT8B8AEPAQABDwGAAwAB9wGfAfwB9wH+AgABPwT/AYACAAEBAfcBXwH9
AXcM/wH2Ae8B+wG3DP8B8QHvAfMBhw3/AfMB5w7/AfwBHw3/Cw==
AgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEP
DAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPDAAB8AIAAQ8MAAHwAgABDwwAAfACAAEPAYALAAHwAgABDwHA
AgABAQgAAfACAAEPAf4CAAE/CAAF/wIAAX8IAAX/AgABfwgABf8CAAF/CAAF/wIAAX8IAAH/AfABBwb/
AeABAwb/AcABAQb/AYABAAb/AgABfwH/AeABAwH/Af4CAAE/BP8B/gEPAfgBPwH/AYABAAH/AfwBDwH4
AR8E/wH4AT8B/gEPAf8BHwH8AX8B+AE/Af4BDwH/Af4BfwH/AfAC/wEPAf8BPwH+AX8B8AL/AQcB/wH+
AX8B/wHxAv8BhwH/ASYBcgF/AeEC/wGDAeMB/gF/AccB4wL/AcMB/wEmAXIBfwHDAv8BwwHgAf4BfwEH
AcMB+wH/AeMB/wEmAXIBfwHDAv8B4QH4AT4BfAEfAccB+QH/AfEB/wEmAXIBfwGHAcABAwHxAf4BDgFw
AX8BxwH4Af8B8QH/ASYBcgF/AYcBwAEDAfAB4QGCAUEBhwGPAfgBPwH4Af8BJgFyAX8BjwHAAQMB+AHj
AeABBwKPAfgBHwH4Af8BJgFyAX8BjwHAAQMB+AHhAfgBHwKPAfgBDwH4Af8BJgFyAX8BDwHAAQMB+AHh
AfwBPwGHAY8B+AEDAfgB/wEmAXIBfwEPAcABAwH4Af8BwgFDAf8BjwH4AQMB+AH/ASYBcgF/AQ8BwAED
AfgB/wGOAXEB/wGPAfgBBwH4Af8BJgFyAX8BDwHAAQMB+AH+AT4BfAF/AY8B+AEPAfgB/wEmAXIBfwEP
AcABAwH4Af4CfgF/AY8B+AEfAfgB/wEmAXIBfwGPAcABAwH4Af8B/gF/Af8BjwH4AX8B+AH/ASYBcgF/
AY8BwAEDAfgB/wH+AX8B/wHHAfgB/wHxAf8BPwH+AX8BhwHAAQMB8AH/Af4BfwH/AccB+wH/AfEB/AIA
AR8BhwHAAQMB8AH/Af4BfwH/AcMC/wHjAfwCAAEfAcMC/wHhAf8B/gF/Af8B4wL/AeMB/AIAAR8BwwL/
AeMB/wH+AX8B/wHxAv8BxwH8AgABHwHhAv8BwwH/Af4BbwH/AfAC/wGPAf8B5wHzAf8B8AL/AYcB/wH+
AW8B/wH4AT8B/gEPAf8C4wH/AfgBPwH+AQ8B/wH+AUcB/wH8AQ8B+AE/Af8B8AEHAf8B/AEPAfgBHwH/
Af4BRwL/AgABfwH/AfgBDwH/Af4CAAE/Af8B/gFDAv8BgAEABv8CAAF/Bf8B8AEHBv8BwAEBDv8B/AEf
Df8B4AT/AYABHwn/AcABPwL/Af4BAAEHCf8BwAEPAv8B/AEAAQMB/wHwAX8B/gEPBP8BwAEHAv8B+AEP
AQMB/wHgAX8B/gEHAeACAAEHAcABAQL/AfABPwHDAf8B5wL/AecB4AIAAQcBwAEAAX8B/wHgAf8B8wH/
AeYBBgFuAecB4AIAAQcBwAEAAT8B/wHhA/8B5wHGAQgB5wHgAgABBwHAAQABDwH/AcMD/wHmAQwBAAEn
AeACAAEHAcABAAEDAf8BwwT/AYABsAE/AeACAAEHAcACAAH/AYcD/wH8AgAB/wHgAgABBwHAAgABfwGH
BP8BgAEyAf8B4AIAAQcBwAIAAR8BjwL/AR8B8AIAAQ8B4AIAAQcBwAIAAQcBjwH/Af4BDwX/AeABCAH/
AcACAAEDAQ8B/wH8AQcB+AIAAR8B/wHgAQAB/wHAAgABAQEPAf8B/AEDAfgBGAEAAR8B/wHgAQAB/wHA
AgABAQEPAf8B+AEBAfgCAAEfAf8CIAH/AcACAAEBAQ8B/wHwAQAB/gEAASIBHwH/ASABAAH/AcACAAED
AQ8B/wHgAQAB/AEAAQIBHwH/AgAB/wHAAgABBwGPAf8B4QEQAfwCAAE/Af8BAAEBAf8BwAIAAQ8BjwH/
AeMBGAH8ASABAAE/Af8BAAEBAf8BwAIAAT8BjwH/AfYBHQH+AUABAAE/Af8BiAEDAf8BwAIAAf8BhwH/
Af4BHwH+AQABAgF/Af8BgAEPAf8BwAEAAQEB/wHHAf8B/AE/AecBgAEPAecB+wHAAf8BzwHAAQABBwH/
AcMB/wH8AT8B5wGAAQMB5wH7AeABHwHPAcABAAEfAf8B4QH/AfgBfwHnAeABBwHnAfsB+AEfAc8BwAEA
AX8B/wHgAf8B8AF/AecB+AEfAecB+AE/Af4BDwHAAQAC/wHwAX8B4AH/AeABfwH+AQcB+AE/Af4BDwHA
AQMC/wH4AR8BgQH/AfABfwH+AQ8E/wHAAQ8C/wH8AQABAwn/AcABPwL/Af4BAAEHCf8B4AF/A/8BgAEf
Cf8B8QT/AfAm/wHDBP8B/AE/Bf8BwAIAAQMBywT/AfABhwL/AY8C/wHAAgABAQHDBP8BhAExAv8BHwL/
AcACAAEBAeEE/wEeATwBfwH+ARwC/wHAAgABAQH8A/8B/gF/Af8BPwH8ATwC/wHAAgABAQH+AX8C/wH8
Av8BnwH4AXgC/wHAAgABAQH/AT8C/wH5Av8B3wHwAfgC/wHAAgABAQH/AZ8C/wH7Av8BzwLwAv8BwAIA
AQEB/wHPAv8B8wL/Ae8B4AExAv8BwAIAAQEB/wHnAv8B9wL/AecB4AEBAv8BwAIAAQEB/wHzAv8B9wL/
AfcBwAEAAv8BwAIAAQEB/wH5Av8B9wL/AfcB4AEAAT8B/wHAAgABAQH/AfwC/wHDAv8BwwHGAQABAwH/
AcACAAEBAf8B/gF/Af8BywL/AcsBzAEAAQMB/wHAAgABAQL/AT8B/wHDAv8BwwGMAYABAQH/AcACAAEB
Av8BnwH/AeMC/wHjAfgBwAEBAf8BwAIAAQEC/wHPAf8B9wL/AfcB+QHwAQEB/wHAAgABAQL/AecB/wH3
Av8B5wH/AcABAAF/AcACAAEBAv8B8wH/AfMC/wHvAf8B5gEAAR8BwAIAAQEC/wH5Af8B+wL/Ac8C/wGA
AQcBwAIAAQEC/wH8Af8B+QL/Ac8C/wHIAQMBwAIAAQEC/wH+AX8B/AL/AZ8C/wH+AQABwAIAAQMD/wE/
Af4BfwH/AT8D/wGAAcABAAEPBP8BnwH/AT8B/gF/A/8BwQHAAQABDwT/AcMB/wGMATgE/wHxAcABAAEf
BP8BywH/AeABgwz/AcMB/wH8AT8M/wHjAf8B/gE/Jf8B/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>
</data>
<metadata name="imageListTool.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@@ -324,159 +334,187 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACI
IwAAAk1TRnQBSQFMAgEBCwEAAUABAAFAAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABMAMAAQEBAAEgBgABMP8AJwAB/wH2AesB/3AAAyMBMwFOAVEBUAGZAzgBXBwAAU4BUQFQAZkBTgFR
AVABmVgAAf8B9gHrAf8DBgEIBAADDAEQKAABTAFEATQB/wHUAbgBAAH/AdQBuAEAAf8BTAFEATQB/wFM
AUQBNAH/AUwBRAE0Af8BTAFEATQB/wFMAUQBNAH/AUwBRAE0Af8BTAFEATQB/wHUAbgBAAH/AdQBuAEA
Af8BTAFEATQB/wwAAU4BUQFQAZksAAFOAVEBUAGZUAAB/wH2AesB/wFkAUgBLwH/CAAB/wH2AesB/ygA
AUwBRAE0Af8BTAFEATQB/wFMAUQBNAH/AUwBRAE0Af8BTAFEATQB/wFMAUQBNAH/AfQB2wEAAf8B/gHk
AQAB/wFMAUQBNAH/AUwBRAE0Af8BTAFEATQB/wHUAbgBAAH/AUwBRAE0Af8MAAFOAVEBUAGZCAADCwEP
A0IBdAQAAU4BeQFnAfABUAFTAVEBnwQAAU4BUAFPAZcIAAFOAVEBUAGZTAABtAGhAZAC/wH2AesB/wgA
AV8BWQFVAc8B/wH2AesB/ygAAUwBRAE0Af8BTAFEATQB/wFMAUQBNAH/AUwBRAE0Af8BTAFEATQC/wHl
AQAB/wFcAVMBLwL/AeUBAAL/AeUBAAH/AasBmQEXAf8BTAFEATQB/wHUAbgBAAH/AUwBRAE0Af8YAAMo
AT0BUwFbAVcBsQMkATUIAAFRAXYBZAHnAwgBCwFPAVIBUQGbVAAB/wH2AesC/wH2AesB/wF3AV0BRgH/
AW4BUwE7Af8B4gHKAbAB/wGFAWgBUgH/KAABTAFEATQB/wFMAUQBNAH/AUwBRAE0Af8BTAFEATQB/wHS
Ab0BCwH/AWMBWQEtAv8B5QEAAf8BTAFEATQC/wHlAQAB/wHCAa4BEAH/AUwBRAE0Af8BTAFEATQB/wFM
AUQBNAH/GAABSAFKAUkBiAMVAR0BSgF8AWgB8gFTAVkBVwGtBAADCAELXAAB/wH2AesB/wFuAVMBOwL/
AfYB6wL/AfYB6wH/AZMBewFpAf8BjgF0AWEB/wGoAY8BcQH/NAABSgG3Av8BTAFPAVIBkAMsAUQBSgG3
Av8EAAFKAbcC/5QAAW4BUwE7Af8EAAJMAUsBjwHLAbIBmQH/AfsB8QHlAv8B9gHrAf8B+wHxAeUF/wHb
AcIBqAH/AWQBSAEvAf8sAAFKAbcC/wFKAbcC/wFAAkEBbwMhATABSgG3Av8DIgEyHAABTgFRAVABmQFO
AVEBUAGZAUoBTAFLAYsEAAFIAkkBhgFIAkkBhQFIAUoBSQGHAUsBTQFMAY4BTAFOAU0BkQFIAkkBhQFL
AU0BTAGOVAAB4gHKAbAB/wQAAWQBVQFKAecBdgFdAUYB/wGAAWMBTAL/AfYB6wH/AXgBXwFIBf8DOwFk
IAABUAGjAd0B9QQAAUoBtwL/AUoBtAH2Af0DBAEGAywBRAFHAUkBSgGCAUoBtwL/IAABVAFzAWUB4AFN
AYMBawH3Aw0BEQFIAkkBhQFTAVkBVwGtBAADEgEZBAADIwEzAzEBTVwAAVcBVgFUAbgBZAFIAS8B/wFy
AVkBQgH/AeIBygGwAv8B9gHrAv8B9gHrAf8B4wHWAckB/wFkAUgBLwH/HAACNwE4AVsBPgI/AWsBSgG3
Av8DAwEEAU0BrAHqAfoBUQGgAdUB8gFWAWkBdAG9Aj0BPgFoHAABSwFOAU0BkAMxAU4DBQEHAwABAQM6
AWIBUQFUAVMBoQFNAVABTwGWAVEBWAFVAakDIwE0AwABAXAAAfsB+gH5Af8BkwF4AWMC/wH2AesC/wH2
AesC/wH2AesB/wMGAQgYAAFKAbcC/wQAAVIBogHZAfQBSgG3Av8BSgG3Av8BUAFZAV0BoyQAA0ABcAMm
ATkDBAEGAUgBfAFiAfYBUAFTAVEBnwFTAXYBZQHlAwIBAwMiATIBVQFxAWIB3HwAAf8B9gHrAv8B9gHr
Av8B9gHrAf8B7AHhAdQB/xQAAwoBDgFKAbcC/wM1AVYUAAGuAaQBkAH/EAADOAFcCAADQgF0AzEBTwFR
AXYBZAHnAVIBWgFWAbABRwF+AWUB+BAAAzgBXHgAA0ABcAH/AfYB6wH/AfEB5gHaAf8cAAE/AkABbQFN
AaEB1gHzAUkBSwFNAYgMAAGuAaQBkAH/EAABTgFRAVABmQwAAUsBTgFNAZABVgFuAWEB1wFRAVgBVgGq
AUcBgwFjAfsDHAEoDAABTgFRAVABmZAAAa4BpAGQAf8BrgGkAZAB/xwAAa4BpAGQAf8BrgGkAZAB/xAA
AUcBfgFlAfgBTgFRAVABmQM4AVwcAAFOAVEBUAGZAU4BUQFQAZkDIgEx/wD/AP8AywADMgFQUAABJAH6
ARUB/wEkAfoBFQH/BAABJAH6ARUB/wEkAfoBFQH/GAABqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFW
AQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/
AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8YAANQAZ4B2wGWAQwB/wHbAZYBDAH/AdsBlgEM
Af8DAAEBHAADMgFQASMB+gEUAf9AAAFRAVMBUQGgAxIBGAgAAzIBUAgAAT4BPwE+AWwDIQEwDAABfwFl
AUsB7wFNASQBCwH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/xQAAdsBlgEMAf8UAAHbAZYBDAH/IAABIwH6ARQB/zgAAVYBcgFTAc8kAAMhATAIAAF/AWUBSwHv
AeEBvQGKAf8BTQEkAQsB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/
EAAByQGWARgB/UAAASMB+gEUAf9cAAM7AWQIAAF/AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wFNASQBCwH/
AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTQEkAQsB/wHhAb0BigH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFNASQBCwH/EAADNgFZHAAB2wGWAQwB/yQAASMB+gEU
Af8sAAEkAfoBFQH/LAABJAH6ARUB/wQAAX8BZQFLAe8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8BTQEk
AQsB/wHhAb0BigH/AfoB6wHSAf8B3QG5AYcB/wFTASoBEQH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wFNASQBCwH/AfoB6wHSAf8wAAM1AVcoAAEjAfoBFAH/KAABJAH6ARUB/ywA
ASQB+gEVAf8EAAF/AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTQEkAQsB/wHh
Ab0BigH/AU0BJAELAf8B+gHrAdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGK
Af8BcQFOATUB/wH6AesB0gH/IAAB2wGWAQwB/zwAASMB+gEUAf8gAAMyAVAsAAMyAVAIAAF/AWUBSwHv
AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/
IAAB2wGWAQwB/0AAASMB+gEUAf8gAAEkAfoBFQH/LAABJAH6ARUB/wQAAX8BZQFLAe8B4QG9AYoB/wFN
ASQBCwH/AfoB6wHSAf8BTQEkAQsB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wHaAbYBhAH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8QAAHbAZYBDAH/
DAAB2wGWAQwB/xAAAZoBegE1AfAwAAEjAfoBFAH/HAABJAH6ARUB/ywAASQB+gEVAf8EAAF/AWUBSwHv
AeEBvQGKAf8BTQEkAQsB/wHpAcwBoQH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B9gHnAc4B/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
FAACTAFLAZAIAAHbAZYBDAH/SAABIwH6ARQB/0QAAxIBGAgAAX8BZQFLAe8B4QG9AYoB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8YAAHbAZYBDAH/BAAB2wGW
AQwB/wwAAdsBlgEMAf88AAEjAfoBFAH/GAABJAH6ARUB/yQAAVIBVgFSAagMAAGoAVYBBAH/AagBVgEE
Af8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGo
AVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/ygAAdsBlgEMAf8DQAFw
RAABIwH6ARQB/xgAASQB+gEVAf8cAAFWAWgBUwHHwAADMgFQIAABJAH6ARUB/wEkAfoBFQH/BAABJAH6
ARUB/wEkAfoBFQH/zAADMgFQJAADMgFQ/wD/AP8APwAB2wGWAQoB/wHbAZYBCgH/AdsBlgEKAf8B2wGW
AQoB/wHbAZYBCgH/AdsBlgEKAf8MAAGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEE
Af8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGo
AVYBBAH/AagBVgEEAf8BqAFWAQQB/wQAAagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFW
AQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/
AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/BAABqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGo
AVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEE
Af8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8MAAFpAWIBVAHfEAAB2wGWAQoB/xAAAloBWAHACAABfwFl
AUsB7wFNASQBCwH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wF/AWUBSwHvAU0BJAELAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AX8BZQFLAe8BTQEkAQsB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8MAAMqAUAQAAHbAZYBCgH/AdsBlgEKAf8B2wGWAQoB/wHbAZYBCgH/
AdsBlgEKAf8B2wGWAQoB/wgAAX8BZQFLAe8B4QG9AYoB/wFNASQBCwH/AeEBvQGKAf8B+gHrAdIB/wH6
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD0
KQAAAk1TRnQBSQFMAgEBDAEAARgBAAEIAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABQAMAAQEBAAEgBgABQP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A4gABIwEhASMBMAGt
AdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGf
Af8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/xQA
Af8B9gHrAf9wAAMjATMBTgFQAU4BmQM4AVwcAAFOAVABTgGZAU4BUAFOAZkIAAFUAUEBWwG+Aa0B2wGf
Af8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/AWoBXgFuAf8BUAEsAVsB/wF3
AXYBeAH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/EAAB/wH2
AesB/wMGAQgEAAMMARAoAAFLAUMBMwH/AdQBuAEAAf8B1AG4AQAB/wFLAUMBMwH/AUsBQwEzAf8BSwFD
ATMB/wFLAUMBMwH/AUsBQwEzAf8BSwFDATMB/wFLAUMBMwH/AdQBuAEAAf8B1AG4AQAB/wFLAUMBMwH/
DAABTgFQAU4BmSwAAU4BUAFOAZkEAAFUAUEBWwG+Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGf
Af8BrQHbAZ8B/wFQASwBWw3/AVABLAFbAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGt
AdsBnwH/DAAB/wH2AesB/wFjAUcBLgH/CAAB/wH2AesB/ygAAUsBQwEzAf8BSwFDATMB/wFLAUMBMwH/
AUsBQwEzAf8BSwFDATMB/wFLAUMBMwH/AfQB2wEAAf8B/gHkAQAB/wFLAUMBMwH/AUsBQwEzAf8BSwFD
ATMB/wHUAbgBAAH/AUsBQwEzAf8MAAFOAVABTgGZCAADCwEPA0IBdAQAAU4BdgFmAfABUAJRAZ8EAAFO
Ak8BlwgAAU4BUAFOAZkEAAFUAUEBWwG+Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BUAEs
AVsV/wFQASwBWwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8IAAG0AaEBkAL/AfYB6wH/
CAABXQFZAVcBzwH/AfYB6wH/KAABSwFDATMB/wFLAUMBMwH/AUsBQwEzAf8BSwFDATMB/wFLAUMBMwL/
AeUBAAH/AVsBUgEuAv8B5QEAAv8B5QEAAf8BqwGZARYB/wFLAUMBMwH/AdQBuAEAAf8BSwFDATMB/xgA
AygBPQFVAVcBVgGxAyQBNQgAAVMBcgFkAecDCAELAU8BUQFQAZsMAAFUAUEBWwG+Aa0B2wGfAf8BrQHb
AZ8B/wGtAdsBnwH/Aa0B2wGfAf8BXgE9AWgF/wFQASwBWwH/AVABLAFbAf8BVAEwAV4F/wFSAS4BXQH/
Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8IAAH/AfYB6wL/AfYB6wH/AXYBXAFFAf8BbQFS
AToB/wHiAcoBsAH/AYUBZwFRAf8oAAFLAUMBMwH/AUsBQwEzAf8BSwFDATMB/wFLAUMBMwH/AdIBvQEK
Af8BYgFYASwC/wHlAQAB/wFLAUMBMwL/AeUBAAH/AcIBrgEPAf8BSwFDATMB/wFLAUMBMwH/AUsBQwEz
Af8YAAFIAkkBiAMVAR0BSwF6AWcB8gFTAVcBVQGtBAADCAELFAABVAFBAVsBvgGtAdsBnwH/Aa0B2wGf
Af8BrQHbAZ8B/wGtAdsBnwn/AYQBjQGBAf8BrQHbAZ8B/wFUATQBXgn/Aa0B2wGfAf8BrQHbAZ8B/wGt
AdsBnwH/Aa0B2wGfAf8IAAH/AfYB6wH/AW0BUgE6Av8B9gHrAv8B9gHrAf8BkwF6AWgB/wGOAXMBYAH/
AagBjwFwAf80AAFJAbcC/wFMAU0BTgGQAywBRAFJAbcC/wQAAUkBtwL/UAABVAFBAVsBvgGtAdsBnwH/
Aa0B2wGfAf8BrQHbAZ8B/wGoAdIBnAn/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwn/Aa0B2wGfAf8BrQHb
AZ8B/wGtAdsBnwH/Aa0B2wGfAf8EAAFtAVIBOgH/BAACTAFLAY8BywGyAZkB/wH7AfEB5QL/AfYB6wH/
AfsB8QHlBf8B2wHCAagB/wFjAUcBLgH/LAABSQG3Av8BSQG3Av8DQAFvAyEBMAFJAbcC/wMiATIcAAFO
AVABTgGZAU4BUAFOAZkDSgGLBAADSAGGA0gBhQFIAkkBhwFLAUwBSwGOAUwCTQGRA0gBhQFLAUwBSwGO
CAABVAFBAVsBvgGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwn/AVABLAFbAf8BrQHbAZ8B/wFQ
ASwBWwn/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8MAAHiAcoBsAH/BAABZAFWAU0B5wF1
AVwBRQH/AYABYgFLAv8B9gHrAf8BdwFeAUcF/wM7AWQgAAFRAZ4B0gH1BAABSQG3Av8BSQGzAfMB/QME
AQYDLAFEAkcBSAGCAUkBtwL/IAABVwFuAWQB4AFPAYIBawH3Aw0BEQNIAYUBUwFXAVUBrQQAAxIBGQQA
AyMBMwMxAU0IAAFUAUEBWwG+Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BUAEsAVsJ/wFY
ATYBYwn/AVABLAFbAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/xQAAVcCVgG4AWMBRwEu
Af8BcQFYAUEB/wHiAcoBsAL/AfYB6wL/AfYB6wH/AeMB1gHJAf8BYwFHAS4B/xwAAzcBWwM+AWsBSQG3
Av8DAwEEAU0BqQHjAfoBUwGbAckB8gFXAWIBaAG9Az0BaBwAAUsCTAGQAzEBTgMFAQcDAAEBAzoBYgFR
AlIBoQFNAk4BlgFSAVUBUwGpAyMBNAMAAQEMAAFUAUEBWwG+Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/
Aa0B2wGfAf8BggGJAYAB/wHpAeQB6g3/AZ0BiQGjAf8BqQHTAZwB/wGtAdsBnwH/AVABLAFbAf8BUAEs
AVsB/wGtAdsBnwH/JAAB+wH6AfkB/wGTAXcBYgL/AfYB6wL/AfYB6wL/AfYB6wH/AwYBCBgAAUkBtwL/
BAABUgGcAc8B9AFJAbcC/wFJAbcC/wFQAVUBVgGjJAADQAFwAyYBOQMEAQYBSAF6AWIB9gFQAlEBnwFW
AXMBZQHlAwIBAwMiATIBVgFsAWEB3AwAAVQBQQFbAb4BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHb
AZ8B/wGtAdsBnwH/AWcBWAFsAf8BUAEsAVsB/wFQASwBWwH/AVABLAFbAf8DeQH/Aa0B2wGfAf8BrQHb
AZ8B/wFwAU8B8AH/AXABTwHwAf8BrQHbAZ8B/zAAAf8B9gHrAv8B9gHrAv8B9gHrAf8B7AHhAdQB/xQA
AwoBDgFJAbcC/wM1AVYUAAGuAaQBkAH/EAADOAFcCAADQgF0AzEBTwFTAXIBZAHnAVMBVgFVAbABRwF9
AWMB+BAAAzgBXAQAAVQBQQFbAb4BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/
Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BrQHbAZ8B/wGtAdsBnwH/Aa0B2wGfAf8BUAEs
AVsB/wFQASwBWwH/Aa0B2wGfAf80AANAAXAB/wH2AesB/wHxAeYB2gH/HAADPwFtAU0BmgHMAfMCSQFK
AYgMAAGuAaQBkAH/EAABTgFQAU4BmQwAAUsCTAGQAVkBaQFgAdcBUgFWAVQBqgFHAYIBYQH7AxwBKAwA
AU4BUAFOAZkIAAFQASwBWwH/AVABLAFbAf8BUAEsAVsB/wFQASwBWwH/AVABLAFbAf8BUAEsAVsB/wFQ
ASwBWwH/AVABLAFbAf8BUAEsAVsB/wFQASwBWwH/AVABLAFbAf8BUAEsAVsB/wFQASwBWwH/AVABLAFb
Af8BUAEsAVsB/0wAAa4BpAGQAf8BrgGkAZAB/xwAAa4BpAGQAf8BrgGkAZAB/xAAAUcBfQFjAfgBTgFQ
AU4BmQM4AVwcAAFOAVABTgGZAU4BUAFOAZkDIgExFAABUAEsAVsB/wGJAcoB/QH/AYkBygH9Af8BiQHK
Af0B/wGJAcoB/QH/AYkBygH9Af8BiQHKAf0B/wGJAcoB/QH/AVABLAFbAf/cAAFQASwBWwH/AYkBygH9
Af8BiQHKAf0B/wGJAcoB/QH/AYkBygH9Af8BiQHKAf0B/wGJAcoB/QH/AYkBygH9Af8BUAEsAVsB/9wA
ASABHwEhASwBUAEsAVsB/wFQASwBWwH/AVABLAFbAf8BUAEsAVsB/wFQASwBWwH/AVABLAFbAf8BUAEs
AVsB/wMGAQj/AJEAAzIBUFAAASMB+gEUAf8BIwH6ARQB/wQAASMB+gEUAf8BIwH6ARQB/xgAAagBVQED
Af8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGo
AVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/GAADUAGe
AdsBlgELAf8B2wGWAQsB/wHbAZYBCwH/AwABARwAAzIBUAEiAfoBEwH/QAADUQGgAxIBGAgAAzIBUAgA
AT4BPwE+AWwDIQEwDAABewFkAUwB7wFMASMBCgH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/xQAAdsBlgELAf8UAAHbAZYBCwH/IAABIgH6ARMB/zgAAVgBbAFW
Ac8kAAMhATAIAAF7AWQBTAHvAeEBvQGKAf8BTAEjAQoB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BfwFlAUsB7wHhAb0BigH/AU0BJAELAf8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wF/AWUBSwHvAeEBvQGKAf8BTQEkAQsB/wHh
Ab0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/DAADKgFAMAABfwFlAUsB7wHh
Ab0BigH/AfoB6wHSAf8BTQEkAQsB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AU0BJAEL
Af8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTQEkAQsB/wF/
AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wFNASQBCwH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8BTQEkAQsB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFN
ASQBCwH/AX8BZQFLAe8B4QG9AYoB/wH6AesB0gH/AU0BJAELAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wFNASQBCwH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AU0BJAELAf8MAAMqAUAQAAHbAZYBCgH/AdsBlgEKAf8B2wGWAQoB/wHbAZYBCgH/AdsBlgEK
Af8B2wGWAQoB/wgAAX8BZQFLAe8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8BTQEkAQsB/wHhAb0BigH/
AfoB6wHSAf8B3QG5AYcB/wFTASoBEQH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wFNASQBCwH/AfoB6wHSAf8BfwFlAUsB7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wFNASQBCwH/
AeEBvQGKAf8B+gHrAdIB/wHdAbkBhwH/AVMBKgERAf8BTQEkAQsB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AU0BJAELAf8B+gHrAdIB/wF/AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/
AU0BJAELAf8B4QG9AYoB/wH6AesB0gH/Ad0BuQGHAf8BUwEqAREB/wFNASQBCwH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8BTQEkAQsB/wH6AesB0gH/DAADKgFABAAB2wGWAQoB/wHbAZYBCgH/
AdsBlgEKAf8B2wGWAQoB/xAAAloBWAHACAABfwFlAUsB7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AU0BJAELAf8B4QG9AYoB/wFNASQBCwH/AfoB6wHSAf8B5wHVAbwB/wHhAb0BigH/AfoB6wHS
Af8B+gHrAdIB/wHhAb0BigH/AXEBTgE1Af8B+gHrAdIB/wF/AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8BTQEkAQsB/wHhAb0BigH/AU0BJAELAf8B+gHrAdIB/wHnAdUBvAH/AeEBvQGK
Af8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BcQFOATUB/wH6AesB0gH/AX8BZQFLAe8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFNASQBCwH/AeEBvQGKAf8BTQEkAQsB/wH6AesB0gH/AecB1QG8
Af8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wFxAU4BNQH/AfoB6wHSAf8MAAMqAUAQAAHb
AZYBCgH/AdsBlgEKAf8B2wGWAQoB/wHbAZYBCgH/AdsBlgEKAf8B2wGWAQoB/wgAAX8BZQFLAe8B4QG9
AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8BTQEkAQsB/wH6AesB0gH/AfoB6wHSAf8BTQEkAQsB/wH6AesB0gH/AfoB6wHSAf8BfwFl
AUsB7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wFNASQBCwH/AfoB6wHSAf8B+gHrAdIB/wFNASQBCwH/AfoB6wHSAf8B+gHr
AdIB/wF/AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AU0BJAELAf8B+gHr
AdIB/wH6AesB0gH/DAADKgFAMAABfwFlAUsB7wHhAb0BigH/AU0BJAELAf8B+gHrAdIB/wFNASQBCwH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AdoBtgGEAf8BTQEk
AQsB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wF/AWUBSwHvAeEBvQGKAf8BTQEkAQsB/wH6AesB0gH/
AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B2gG2
AYQB/wFNASQBCwH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AX8BZQFLAe8B4QG9AYoB/wFNASQBCwH/
AfoB6wHSAf8BTQEkAQsB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wHaAbYBhAH/AU0BJAELAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8IAAHbAZYBCgH/AdsBlgEK
Af8B2wGWAQoB/wHbAZYBCgH/CAAB2wGWAQoB/wHbAZYBCgH/AdsBlgEKAf8B2wGWAQoB/wHbAZYBCgH/
AdsBlgEKAf8IAAF/AWUBSwHvAeEBvQGKAf8BTQEkAQsB/wHpAcwBoQH/AU0BJAELAf8B+gHrAdIB/wH6
Af8B+gHrAdIB/wHhAb0BigH/EAABxgGWARkB/UAAASIB+gETAf9cAAM7AWQIAAF7AWQBTAHvAeEBvQGK
Af8B+gHrAdIB/wFMASMBCgH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTAEjAQoB/wHh
Ab0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/EAADNgFZ
HAAB2wGWAQsB/yQAASIB+gETAf8sAAEjAfoBFAH/LAABIwH6ARQB/wQAAXsBZAFMAe8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8BTAEjAQoB/wHhAb0BigH/AfoB6wHSAf8B3QG5AYcB/wFSASkBEAH/AUwBIwEK
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/AfoB6wHSAf8wAAM1AVcoAAEi
AfoBEwH/KAABIwH6ARQB/ywAASMB+gEUAf8EAAF7AWQBTAHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8BTAEjAQoB/wHhAb0BigH/AUwBIwEKAf8B+gHrAdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHr
AdIB/wH6AesB0gH/AeEBvQGKAf8BcAFNATQB/wH6AesB0gH/IAAB2wGWAQsB/zwAASIB+gETAf8gAAMy
AVAsAAMyAVAIAAF7AWQBTAHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AUwBIwEKAf8B+gHrAdIB/wH6AesB0gH/AUwBIwEK
Af8B+gHrAdIB/wH6AesB0gH/IAAB2wGWAQsB/0AAASIB+gETAf8gAAEjAfoBFAH/LAABIwH6ARQB/wQA
AXsBZAFMAe8B4QG9AYoB/wFMASMBCgH/AfoB6wHSAf8BTAEjAQoB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHaAbYBhAH/AUwBIwEKAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8QAAHbAZYBCwH/DAAB2wGWAQsB/xAAAZQBdwE6AfAwAAEiAfoBEwH/HAABIwH6ARQB/ywA
ASMB+gEUAf8EAAF7AWQBTAHvAeEBvQGKAf8BTAEjAQoB/wHpAcwBoQH/AUwBIwEKAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B9gHnAc4B/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AX8BZQFLAe8B4QG9AYoB/wFNASQBCwH/AekBzAGhAf8BTQEkAQsB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH2AecBzgH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BfwFlAUsB7wHhAb0BigH/AU0BJAELAf8B6QHMAaEB/wFN
ASQBCwH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfYB5wHO
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wgAAdsBlgEKAf8IAAJaAVgBwAHbAZYBCgH/
AdsBlgEKAf8B2wGWAQoB/xAAAloBWAHACAABfwFlAUsB7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
Af8B+gHrAdIB/wH6AesB0gH/FAACTAFLAZAIAAHbAZYBCwH/SAABIgH6ARMB/0QAAxIBGAgAAXsBZAFM
Ae8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wF/AWUBSwHvAeEBvQGKAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AX8BZQFLAe8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8IAAHbAZYBCgH/
AdsBlgEKAf8B2wGWAQoB/wHbAZYBCgH/CAAB2wGWAQoB/wHbAZYBCgH/AdsBlgEKAf8B2wGWAQoB/wHb
AZYBCgH/AdsBlgEKAf8MAAGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFW
AQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/
AagBVgEEAf8BqAFWAQQB/wQAAagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGo
AVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEE
Af8BqAFWAQQB/wGoAVYBBAH/BAABqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/
AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFWAQQB/wGoAVYBBAH/AagBVgEEAf8BqAFW
AQQB/wGoAVYBBAH/AagBVgEEAf//AP8A/wADAAFCAU0BPgcAAT4DAAEoAwABQAMAATADAAEBAQABAQUA
AYABARYAA/8BAAb/AgAB+wP/AccB8wIAAfIB/wHAAQEB3wH9AgAB5gH/AcABAQHZAS0CAAHMAf8BwAEB
AfgBxwIAAcAB/wHAAQEB+AFfAgABwAF/AfwBLwL/AgABoAEfAfwBDwHiAQMCAAHoAQ8B9AEPAfABUwIA
AfgBBwHwAQ8B4AEHAgAB/wGBAfoBHwHwAQcCAAH/AfAB+AH7AdgBPQIAAf8B+AH+ATsB3AEdAgAC/wHn
AfMBxwHxAgAG/wIABv8CAAz/Ab8B/wH8AZ8BgAEAAfwBHwHPAf8B8wFnAgAB+wHvAfcB/wHvAfsCAAH3
Af8B+wL/AfsCAAL3Af0B/wHfAf0CAAH/AfcB/gH/Ad8B/QIAAf8BfwH/AX8BvwH7AgAB/wF/Af8BvwHf
Af0CAAH3AXsB/wLfAf0CAAH7AX8B/wHvAf8B+wIAAf0BdwH/AfcB7wH7AYABAAH/Ac8B/wH7AvcF/wH7
AfwBnwX/Af0B/wF/Gf8BAwGAAQABgAEAAYABAAHvAXsGAAHvAQMGAAHvAf8GAAHvAQMGAAHoAXsGAAHv
AQMGAAHvAf8GAAHDAQMGAAHYAXsGAAHDAQMBgAEAAYABAAGAAQAY/ws=
Af8YAAHbAZYBCwH/BAAB2wGWAQsB/wwAAdsBlgELAf88AAEiAfoBEwH/GAABIwH6ARQB/yQAAVIBVQFS
AagMAAGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/
AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFV
AQMB/ygAAdsBlgELAf8DQAFwRAABIgH6ARMB/xgAASMB+gEUAf8cAAFXAWEBVgHHwAADMgFQIAABIwH6
ARQB/wEjAfoBFAH/BAABIwH6ARQB/wEjAfoBFAH/zAADMgFQJAADMgFQ/wD/AP8APwAB2wGWAQkB/wHb
AZYBCQH/AdsBlgEJAf8B2wGWAQkB/wHbAZYBCQH/AdsBlgEJAf8MAAGoAVUBAwH/AagBVQEDAf8BqAFV
AQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/
AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wQAAagBVQEDAf8BqAFVAQMB/wGo
AVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQED
Af8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/BAABqAFVAQMB/wGoAVUBAwH/
AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFV
AQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8MAAFmAWEBVgHfEAAB2wGW
AQkB/xAAAloBWAHACAABewFkAUwB7wFMASMBCgH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wF7AWQBTAHvAUwBIwEKAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AXsBZAFMAe8BTAEjAQoB/wHhAb0BigH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8MAAMqAUAQAAHbAZYBCQH/AdsBlgEJ
Af8B2wGWAQkB/wHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/wgAAXsBZAFMAe8B4QG9AYoB/wFMASMBCgH/
AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BewFkAUwB7wHhAb0BigH/
AUwBIwEKAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wF7AWQBTAHv
AeEBvQGKAf8BTAEjAQoB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/
DAADKgFAMAABewFkAUwB7wHhAb0BigH/AfoB6wHSAf8BTAEjAQoB/wHhAb0BigH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AUwBIwEKAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8BTAEjAQoB/wF7AWQBTAHvAeEBvQGKAf8B+gHrAdIB/wFMASMBCgH/AeEBvQGKAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8BTAEjAQoB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/AXsBZAFMAe8B4QG9AYoB/wH6AesB0gH/AUwBIwEKAf8B4QG9
AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AUwBIwEKAf8MAAMqAUAQAAHbAZYBCQH/AdsBlgEJAf8B2wGW
AQkB/wHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/wgAAXsBZAFMAe8B4QG9AYoB/wH6AesB0gH/AfoB6wHS
Af8BTAEjAQoB/wHhAb0BigH/AfoB6wHSAf8B3QG5AYcB/wFSASkBEAH/AUwBIwEKAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/AfoB6wHSAf8BewFkAUwB7wHhAb0BigH/AfoB6wHS
Af8B+gHrAdIB/wFMASMBCgH/AeEBvQGKAf8B+gHrAdIB/wHdAbkBhwH/AVIBKQEQAf8BTAEjAQoB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AUwBIwEKAf8B+gHrAdIB/wF7AWQBTAHvAeEBvQGK
Af8B+gHrAdIB/wH6AesB0gH/AUwBIwEKAf8B4QG9AYoB/wH6AesB0gH/Ad0BuQGHAf8BUgEpARAB/wFM
ASMBCgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTAEjAQoB/wH6AesB0gH/DAADKgFA
BAAB2wGWAQkB/wHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/xAAAloBWAHACAABewFkAUwB7wHhAb0BigH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AUwBIwEKAf8B4QG9AYoB/wFMASMBCgH/AfoB6wHSAf8B5wHV
AbwB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/AXABTQE0Af8B+gHrAdIB/wF7AWQBTAHv
AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTAEjAQoB/wHhAb0BigH/AUwBIwEKAf8B+gHr
AdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BcAFNATQB/wH6AesB0gH/
AXsBZAFMAe8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/AeEBvQGKAf8BTAEj
AQoB/wH6AesB0gH/AecB1QG8Af8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wFwAU0BNAH/
AfoB6wHSAf8MAAMqAUAQAAHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/wHbAZYBCQH/AdsBlgEJAf8B2wGW
AQkB/wgAAXsBZAFMAe8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BTAEjAQoB/wH6AesB0gH/AfoB6wHSAf8BTAEjAQoB/wH6
AesB0gH/AfoB6wHSAf8BewFkAUwB7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFMASMBCgH/AfoB6wHSAf8B+gHrAdIB/wFM
ASMBCgH/AfoB6wHSAf8B+gHrAdIB/wF7AWQBTAHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AUwBIwEKAf8B+gHrAdIB/wH6
AesB0gH/AUwBIwEKAf8B+gHrAdIB/wH6AesB0gH/DAADKgFAMAABewFkAUwB7wHhAb0BigH/AUwBIwEK
Af8B+gHrAdIB/wFMASMBCgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AdoBtgGEAf8BTAEjAQoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wF7AWQBTAHvAeEBvQGK
Af8BTAEjAQoB/wH6AesB0gH/AUwBIwEKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B2gG2AYQB/wFMASMBCgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AXsBZAFM
Ae8B4QG9AYoB/wFMASMBCgH/AfoB6wHSAf8BTAEjAQoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHaAbYBhAH/AUwBIwEKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8IAAHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/wHbAZYBCQH/CAAB2wGWAQkB/wHbAZYBCQH/AdsBlgEJ
Af8B2wGWAQkB/wHbAZYBCQH/AdsBlgEJAf8IAAF7AWQBTAHvAeEBvQGKAf8BTAEjAQoB/wHpAcwBoQH/
AUwBIwEKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B9gHn
Ac4B/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AXsBZAFMAe8B4QG9AYoB/wFMASMBCgH/
AekBzAGhAf8BTAEjAQoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH2AecBzgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BewFkAUwB7wHhAb0BigH/
AUwBIwEKAf8B6QHMAaEB/wFMASMBCgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfYB5wHOAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wgAAdsBlgEJ
Af8IAAJaAVgBwAHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/xAAAloBWAHACAABewFkAUwB7wHhAb0BigH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wF7AWQBTAHv
AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AXsBZAFMAe8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8IAAHbAZYBCQH/AdsBlgEJAf8B2wGWAQkB/wHbAZYBCQH/CAAB2wGWAQkB/wHbAZYBCQH/
AdsBlgEJAf8B2wGWAQkB/wHbAZYBCQH/AdsBlgEJAf8MAAGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGo
AVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQED
Af8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wQAAagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/
AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFV
AQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/BAABqAFVAQMB/wGoAVUBAwH/AagBVQED
Af8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf8BqAFVAQMB/wGo
AVUBAwH/AagBVQEDAf8BqAFVAQMB/wGoAVUBAwH/AagBVQEDAf//AP8A/wADAAFCAU0BPgcAAT4DAAEo
AwABQAMAAUADAAEBAQABAQYAAQIWAAP/gQAG/wIAAfsD/wHHAfMCAAHyAf8BwAEBAd8B/QIAAeYB/wHA
AQEB2QEtAgABzAH/AcABAQH4AccCAAHAAf8BwAEBAfgBXwIAAcABfwH8AS8C/wIAAaABHwH8AQ8B4gED
AgAB6AEPAfQBDwHwAVMCAAH4AQcB8AEPAeABBwIAAf8BgQH6AR8B8AEHAgAB/wHwAfgB+wHYAT0CAAH/
AfgB/gE7AdwBHQGAAQAC/wHnAfMBxwHxAfABBwb/AfABBwb/AfABBwz/Ab8B/wH8AZ8BgAEAAfwBHwHP
Af8B8wFnAgAB+wHvAfcB/wHvAfsCAAH3Af8B+wL/AfsCAAL3Af0B/wHfAf0CAAH/AfcB/gH/Ad8B/QIA
Af8BfwH/AX8BvwH7AgAB/wF/Af8BvwHfAf0CAAH3AXsB/wLfAf0CAAH7AX8B/wHvAf8B+wIAAf0BdwH/
AfcB7wH7AYABAAH/Ac8B/wH7AvcF/wH7AfwBnwX/Af0B/wF/Gf8BAwGAAQABgAEAAYABAAHvAXsGAAHv
AQMGAAHvAf8GAAHvAQMGAAHoAXsGAAHvAQMGAAHvAf8GAAHDAQMGAAHYAXsGAAHDAQMBgAEAAYABAAGA
AQAY/ws=
</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

View File

@@ -267,7 +267,6 @@ namespace ToolLib.VisionJob
TreeView tree = GetJobTree();
graph = tree.CreateGraphics();
tree.CreateGraphics().Dispose();
foreach (KeyValuePair<TreeNode, TreeNode> item in D_itemAndSource)
{
// 将此划线线程委托到JOB管理界面

View File

@@ -46,6 +46,7 @@ namespace VisionJobFactory
public class FindLineToolInterface : IToolInfo
{
ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image);
ToolIO inputPos = new ToolIO("InputPos", null, DataType.Pose);
ToolIO outputXld = new ToolIO("outputXld", null, DataType.Line);
ToolIO startPointRow = new ToolIO("StartPointRow", null, DataType.IntValue);
ToolIO startPointColumn = new ToolIO("StartPointColumn", null, DataType.IntValue);
@@ -59,7 +60,7 @@ namespace VisionJobFactory
tool = new FindLine();
FormToolName = "FindLineTool.FormFindLine";
FormTool = null;
toolInput = new List<ToolIO>() { inputImage };
toolInput = new List<ToolIO>() { inputImage, inputPos };
toolOutput = new List<ToolIO>() { outputXld, startPointRow, startPointColumn, endPointRow, endPointColumn };
}
/// <summary>
@@ -75,6 +76,7 @@ namespace VisionJobFactory
public class CaliperInterface : IToolInfo
{
ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image);
ToolIO inputPos = new ToolIO("InputPos", null, DataType.Pose);
ToolIO inputCenterRow = new ToolIO("inputCenterRow", null, DataType.IntValue);
ToolIO inputCenterColumn = new ToolIO("inputCenterColumn", null, DataType.IntValue);
ToolIO inputPhi = new ToolIO("inputPhi", null, DataType.IntValue);
@@ -88,7 +90,7 @@ namespace VisionJobFactory
tool = new Caliper();
FormToolName = "CaliperTool.FormCaliper";
FormTool = null;
toolInput = new List<ToolIO>() { inputImage, inputCenterRow, inputCenterColumn, inputPhi };
toolInput = new List<ToolIO>() { inputImage, inputCenterRow, inputCenterColumn, inputPhi , inputPos };
toolOutput = new List<ToolIO>() { outputCenterRow, outputCenterColumn };
}
/// <summary>
@@ -112,6 +114,10 @@ namespace VisionJobFactory
{
ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image);
ToolIO outPose = new ToolIO("GetPose", null, DataType.Pose);
ToolIO outPoseX = new ToolIO("GetPose.X", null, DataType.IntValue);
ToolIO outPoseY = new ToolIO("GetPose.Y", null, DataType.IntValue);
ToolIO outPoseR = new ToolIO("GetPose.Z", null, DataType.DoubleValue);
ToolIO outPoseScore = new ToolIO("GetPose.Score", null, DataType.DoubleValue);
public PMAlignToolToolInterface(string toolName)
{
enable = true;
@@ -121,7 +127,8 @@ namespace VisionJobFactory
FormToolName = "PMAlignTool.FormPMAlignTool";
FormTool = null;
toolInput = new List<ToolIO>() { inputImage };
toolOutput = new List<ToolIO>() { outPose };
toolOutput = new List<ToolIO>() { outPose, outPoseX, outPoseY, outPoseR, outPoseScore };
}
/// <summary>
/// 只获取选择工具的描述信息

View File

@@ -32,6 +32,10 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>
</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="halcondotnet, Version=17.12.0.0, Culture=neutral, PublicKeyToken=4973bed59ddbf2b8, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@@ -151,6 +155,9 @@
<ItemGroup>
<None Include="Resources\新建2.png" />
</ItemGroup>
<ItemGroup>
<Content Include="几何.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -72,10 +72,6 @@ G:\VisionEdit\VisionEdit\VisionEdit\obj\Debug\VisionEdit.FormLib.FormToolBox.res
G:\VisionEdit\VisionEdit\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
G:\VisionEdit\VisionEdit\VisionEdit\obj\Debug\VisionEdit.Properties.Resources.resources
G:\VisionEdit\VisionEdit\VisionEdit\obj\Debug\VisionEdit.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.Properties.Resources.resources
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\VisionEdit.exe.config
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\VisionEdit.exe
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\VisionEdit.pdb
@@ -84,26 +80,31 @@ F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\DataStruct.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\FormLib.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\halcondotnet.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\HWindow_Tool.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Logger.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\ToolBase.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\ToolLib.VisionJob.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Newtonsoft.Json.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\log4net.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Logger.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\DevComponents.DotNetBar2.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\log4net.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\CommonMethods.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\DataStruct.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\FormLib.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\ToolBase.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Logger.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\ToolLib.VisionJob.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\HWindow_Tool.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\halcondotnet.xml
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Newtonsoft.Json.xml
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Logger.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\DevComponents.DotNetBar2.xml
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.csprojResolveAssemblyReference.cache
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.Properties.Resources.resources
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.csproj.GenerateResource.Cache
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.exe
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\obj\Debug\VisionEdit.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\log4net.config
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\HalconTool.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\FindLineTool.dll
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\CaliperTool.dll
@@ -115,4 +116,3 @@ F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\FindLineTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\CaliperTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\PMAlignTool.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\Controls.pdb
F:\GitHubClone\最新克隆\VisionEdit\VisionEdit\bin\Debug\log4net.config

BIN
VisionEdit/几何.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB