diff --git a/Data/DcLang-Korean.txt b/Data/DcLang-Korean.txt
new file mode 100644
index 0000000..8f596c3
--- /dev/null
+++ b/Data/DcLang-Korean.txt
@@ -0,0 +1,98 @@
+# 한국말 메시지
+LANG=한국어
+
+0=FFXIV dc
+1=준비됐습니다
+2=FFXIV 플러그인이 없어요!
+3=FFXIV 플러그인을 찾았어요!
+4=FFXIV 듀티 콘텐츠 시작합니다!
+5=ACT 정보: {0} ({1})
+6=FFXIV 플러그인 정보: {0} ({1})
+7=잘못된 데이터: {0}
+8=분석할 수 없어요
+9=알수없는 듀티: {0}
+10=알수없는 인스턴스: {0}
+11=알수없는 지역: {0}
+12=알수없는 페이트: {0}
+13=데이터를 읽을 수가 없어요!
+14=데이터 파일이 없어요! {0}
+20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6})
+21=루렛
+22=인스턴스
+23=페이트
+24=스커미시
+25=크리티컬 인게이지먼트
+26=기본
+27=없음
+
+99=듀티 콘텐츠 플러그인 {0}
+
+101=소리 파일을 선택하세요
+102=소리 파일 (*.wav)|*.wav|모든 파일 (*.*)|*.*
+103=알림 테스트입니다!!
+104=마우스 눌림 방지
+
+200=설정
+201=표시 언어
+202=FFXIV를 보고 있지 않을때 오버레이를 감춥니다
+
+300=듀티
+301=콘텐츠
+302=설정
+303=패킷
+304=데이터셋
+305=로그 글꼴
+306=오버레이 보기
+307=투명도
+308=소리 듣기
+309=인스턴스
+310=페이트
+311=라인 알림
+312=라인 토큰
+313=텔레그램 알림
+314=텔레그램 ID
+315=텔레그램 토큰
+316=패킷 찾기
+317=설명
+318=세이브더퀸 찾기
+319=기능
+320=현재값
+321=상태
+322=찾은값
+323=CE 이름
+324=상태
+325=사람수
+326=진행도
+327=핑
+328=핑 사용
+329=속도별 색깔
+330=매우 좋음
+331=좋음
+332=보통
+333=나쁨
+334=그래프 보기
+335=클라이언트의 접속이 없을때 사용할 DC 선택
+
+10001="{0}" 발생했어요!
+10002=찾습니다: {0}
+10003=매칭됐어요: {0}
+10004=들어가요: {0}
+10005={0} 발생했어요!
+10006=대기 갯수: {0}
+10007=시작
+10008=취소
+10009=적용 및 저장
+10010=중부 라노시아로 가시면 값이 채워집니다. 또는 남부 보즈야 전선의 스커미시로도 알 수 있습니다.
+10011=토벌전 "성도 이슈가르드 방어전"에 해제로 입장해보세요.
+10012=매치
+10013=인스턴스
+10014=남부 보즈야 전선으로 가서 크리티컬 인게이지먼트를 기다리세요. 오른쪽 보즈야 찾기에 후보 데이터가 뜨면 맞는 데이터를 선택하세요.
+10015=설명을 볼 항목을 선택하세요
+10016=확인됨
+10017=끝남
+10018=등록중
+10019=입장하는중
+10020=진행중
+10021=알수없어요
+10022=패킷 데이터를 적용하고 덮어쓰실거예요?
+10023=선택함
diff --git a/DcControl.Designer.cs b/DcControl.Designer.cs
index b8b6bca..88b1356 100644
--- a/DcControl.Designer.cs
+++ b/DcControl.Designer.cs
@@ -35,6 +35,7 @@ namespace DutyContent
this.tabPageConfig = new System.Windows.Forms.TabPage();
this.txtMesg = new System.Windows.Forms.RichTextBox();
this.btnClearMesg = new System.Windows.Forms.Button();
+ this.tabPagePing = new System.Windows.Forms.TabPage();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -65,6 +66,7 @@ namespace DutyContent
//
this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left;
this.tabMain.Controls.Add(this.tabPageDuty);
+ this.tabMain.Controls.Add(this.tabPagePing);
this.tabMain.Controls.Add(this.tabPageConfig);
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabMain.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
@@ -120,6 +122,15 @@ namespace DutyContent
this.btnClearMesg.Text = "Clear Mesg";
this.btnClearMesg.UseVisualStyleBackColor = true;
//
+ // tabPagePing
+ //
+ this.tabPagePing.Location = new System.Drawing.Point(104, 4);
+ this.tabPagePing.Name = "tabPagePing";
+ this.tabPagePing.Size = new System.Drawing.Size(684, 489);
+ this.tabPagePing.TabIndex = 2;
+ this.tabPagePing.Text = "Ping";
+ this.tabPagePing.UseVisualStyleBackColor = true;
+ //
// DcControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -144,5 +155,6 @@ namespace DutyContent
private System.Windows.Forms.TabPage tabPageDuty;
private System.Windows.Forms.TabPage tabPageConfig;
private System.Windows.Forms.RichTextBox txtMesg;
+ private System.Windows.Forms.TabPage tabPagePing;
}
}
diff --git a/DcControl.cs b/DcControl.cs
index 595364e..9e5909f 100644
--- a/DcControl.cs
+++ b/DcControl.cs
@@ -55,6 +55,9 @@ namespace DutyContent
Tab.DutyForm dutyform = new Tab.DutyForm();
tabPageDuty.Controls.Add(dutyform.Controls[0]);
+ Tab.PingForm pingform = new Tab.PingForm();
+ tabPagePing.Controls.Add(pingform.Controls[0]);
+
Tab.ConfigForm configform = new Tab.ConfigForm();
tabPageConfig.Controls.Add(configform.Controls[0]);
}
@@ -130,6 +133,7 @@ namespace DutyContent
DcConfig.PluginEnable = false;
+ Tab.PingForm.Self?.PluginDeinitialize();
Tab.DutyForm.Self?.PluginDeinitialize();
Tab.ConfigForm.Self?.PluginDeinitialize();
DcConfig.SaveConfig();
@@ -184,6 +188,7 @@ namespace DutyContent
//
Tab.ConfigForm.Self?.PluginInitialize();
Tab.DutyForm.Self?.PluginInitialize();
+ Tab.PingForm.Self?.PluginInitialize();
//
DcConfig.PluginEnable = true;
@@ -314,6 +319,9 @@ namespace DutyContent
tabPageDuty.Text = MesgLog.Text(300);
Tab.DutyForm.Self?.UpdateUiLocale();
+ tabPagePing.Text = MesgLog.Text(327);
+ Tab.PingForm.Self?.UpdateUiLocale();
+
tabPageConfig.Text = MesgLog.Text(200);
Tab.ConfigForm.Self?.UpdateUiLocale();
}
diff --git a/DutyContent.csproj b/DutyContent.csproj
index 2f8abbd..e46e571 100644
--- a/DutyContent.csproj
+++ b/DutyContent.csproj
@@ -95,6 +95,12 @@
DutyOvForm.cs
+
+ Form
+
+
+ PingForm.cs
+
@@ -132,6 +138,9 @@
ResXFileCodeGenerator
Resources.Designer.cs
+
+ PingForm.cs
+
@@ -175,6 +184,9 @@
+
+
+
if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y
diff --git a/Overlay/DutyOvForm.cs b/Overlay/DutyOvForm.cs
index 3f016f7..6b5fcb2 100644
--- a/Overlay/DutyOvForm.cs
+++ b/Overlay/DutyOvForm.cs
@@ -6,6 +6,9 @@ namespace DutyContent.Overlay
{
public partial class DutyOvForm : Form
{
+ private static DutyOvForm _self;
+ public static DutyOvForm Self => _self;
+
private const int BlinkTime = 300;
private const int BlinkCount = 20;
@@ -21,6 +24,8 @@ namespace DutyContent.Overlay
//
public DutyOvForm()
{
+ _self = this;
+
InitializeComponent();
Location = DcConfig.Duty.OverlayLocation;
diff --git a/Tab/DutyForm.Designer.cs b/Tab/DutyForm.Designer.cs
index 1370c04..3db0e5f 100644
--- a/Tab/DutyForm.Designer.cs
+++ b/Tab/DutyForm.Designer.cs
@@ -59,6 +59,7 @@ namespace DutyContent.Tab
this.tabContent = new System.Windows.Forms.TabControl();
this.tabPageContent = new System.Windows.Forms.TabPage();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.chkShowDebug = new System.Windows.Forms.CheckBox();
this.rdoFatePreset4 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset3 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset2 = new System.Windows.Forms.RadioButton();
@@ -99,23 +100,6 @@ namespace DutyContent.Tab
this.btnOverlayDimming = new System.Windows.Forms.Button();
this.lblOverlayTransparent = new System.Windows.Forms.Label();
this.chkEnableOverlay = new System.Windows.Forms.CheckBox();
- this.tabPagePing = new System.Windows.Forms.TabPage();
- this.panel6 = new System.Windows.Forms.Panel();
- this.cboPingDefAddr = new System.Windows.Forms.ComboBox();
- this.lblPingDefAddr = new System.Windows.Forms.Label();
- this.pbxPingGraph = new System.Windows.Forms.PictureBox();
- this.chkPingGraph = new System.Windows.Forms.CheckBox();
- this.tlpnPingColors = new System.Windows.Forms.TableLayoutPanel();
- this.lblPingStat1 = new System.Windows.Forms.Label();
- this.btnPingColor4 = new System.Windows.Forms.Button();
- this.btnPingColor2 = new System.Windows.Forms.Button();
- this.btnPingColor3 = new System.Windows.Forms.Button();
- this.lblPingStat2 = new System.Windows.Forms.Label();
- this.lblPingStat4 = new System.Windows.Forms.Label();
- this.btnPingColor1 = new System.Windows.Forms.Button();
- this.lblPingStat3 = new System.Windows.Forms.Label();
- this.lblPingColors = new System.Windows.Forms.Label();
- this.chkUsePing = new System.Windows.Forms.CheckBox();
this.tabPagePacket = new System.Windows.Forms.TabPage();
this.panel5 = new System.Windows.Forms.Panel();
this.txtPacketDescription = new System.Windows.Forms.TextBox();
@@ -136,7 +120,6 @@ namespace DutyContent.Tab
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.lblPacketFinder = new System.Windows.Forms.Label();
this.ilTabContent = new System.Windows.Forms.ImageList(this.components);
- this.chkShowDebug = new System.Windows.Forms.CheckBox();
this.tabContent.SuspendLayout();
this.tabPageContent.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@@ -148,10 +131,6 @@ namespace DutyContent.Tab
this.panel3.SuspendLayout();
this.panel2.SuspendLayout();
this.panel1.SuspendLayout();
- this.tabPagePing.SuspendLayout();
- this.panel6.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).BeginInit();
- this.tlpnPingColors.SuspendLayout();
this.tabPagePacket.SuspendLayout();
this.panel5.SuspendLayout();
this.SuspendLayout();
@@ -160,7 +139,6 @@ namespace DutyContent.Tab
//
this.tabContent.Controls.Add(this.tabPageContent);
this.tabContent.Controls.Add(this.tabPageSetting);
- this.tabContent.Controls.Add(this.tabPagePing);
this.tabContent.Controls.Add(this.tabPagePacket);
this.tabContent.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabContent.ImageList = this.ilTabContent;
@@ -204,6 +182,17 @@ namespace DutyContent.Tab
this.splitContainer1.SplitterDistance = 262;
this.splitContainer1.TabIndex = 0;
//
+ // chkShowDebug
+ //
+ this.chkShowDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.chkShowDebug.AutoSize = true;
+ this.chkShowDebug.Location = new System.Drawing.Point(201, 7);
+ this.chkShowDebug.Name = "chkShowDebug";
+ this.chkShowDebug.Size = new System.Drawing.Size(58, 17);
+ this.chkShowDebug.TabIndex = 5;
+ this.chkShowDebug.Text = "Debug";
+ this.chkShowDebug.UseVisualStyleBackColor = true;
+ //
// rdoFatePreset4
//
this.rdoFatePreset4.AutoSize = true;
@@ -670,208 +659,6 @@ namespace DutyContent.Tab
this.chkEnableOverlay.UseVisualStyleBackColor = true;
this.chkEnableOverlay.CheckedChanged += new System.EventHandler(this.ChkEnableOverlay_CheckedChanged);
//
- // tabPagePing
- //
- this.tabPagePing.Controls.Add(this.panel6);
- this.tabPagePing.ImageIndex = 3;
- this.tabPagePing.Location = new System.Drawing.Point(4, 39);
- this.tabPagePing.Name = "tabPagePing";
- this.tabPagePing.Size = new System.Drawing.Size(792, 459);
- this.tabPagePing.TabIndex = 3;
- this.tabPagePing.Text = "327";
- this.tabPagePing.UseVisualStyleBackColor = true;
- //
- // panel6
- //
- this.panel6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.panel6.Controls.Add(this.cboPingDefAddr);
- this.panel6.Controls.Add(this.lblPingDefAddr);
- this.panel6.Controls.Add(this.pbxPingGraph);
- this.panel6.Controls.Add(this.chkPingGraph);
- this.panel6.Controls.Add(this.tlpnPingColors);
- this.panel6.Controls.Add(this.lblPingColors);
- this.panel6.Controls.Add(this.chkUsePing);
- this.panel6.Location = new System.Drawing.Point(6, 8);
- this.panel6.Name = "panel6";
- this.panel6.Size = new System.Drawing.Size(778, 353);
- this.panel6.TabIndex = 1;
- //
- // cboPingDefAddr
- //
- this.cboPingDefAddr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cboPingDefAddr.FormattingEnabled = true;
- this.cboPingDefAddr.Location = new System.Drawing.Point(535, 51);
- this.cboPingDefAddr.Name = "cboPingDefAddr";
- this.cboPingDefAddr.Size = new System.Drawing.Size(238, 21);
- this.cboPingDefAddr.TabIndex = 15;
- this.cboPingDefAddr.SelectedIndexChanged += new System.EventHandler(this.CboPingDefAddr_SelectedIndexChanged);
- //
- // lblPingDefAddr
- //
- this.lblPingDefAddr.AutoSize = true;
- this.lblPingDefAddr.Location = new System.Drawing.Point(515, 35);
- this.lblPingDefAddr.Name = "lblPingDefAddr";
- this.lblPingDefAddr.Size = new System.Drawing.Size(25, 13);
- this.lblPingDefAddr.TabIndex = 14;
- this.lblPingDefAddr.Text = "335";
- //
- // pbxPingGraph
- //
- this.pbxPingGraph.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.pbxPingGraph.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.pbxPingGraph.Location = new System.Drawing.Point(129, 108);
- this.pbxPingGraph.Name = "pbxPingGraph";
- this.pbxPingGraph.Size = new System.Drawing.Size(644, 114);
- this.pbxPingGraph.TabIndex = 13;
- this.pbxPingGraph.TabStop = false;
- //
- // chkPingGraph
- //
- this.chkPingGraph.AutoSize = true;
- this.chkPingGraph.Location = new System.Drawing.Point(26, 108);
- this.chkPingGraph.Name = "chkPingGraph";
- this.chkPingGraph.Size = new System.Drawing.Size(44, 17);
- this.chkPingGraph.TabIndex = 12;
- this.chkPingGraph.Text = "334";
- this.chkPingGraph.UseVisualStyleBackColor = true;
- this.chkPingGraph.CheckedChanged += new System.EventHandler(this.ChkPingGraph_CheckedChanged);
- //
- // tlpnPingColors
- //
- this.tlpnPingColors.ColumnCount = 4;
- this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
- this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
- this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
- this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
- this.tlpnPingColors.Controls.Add(this.lblPingStat1, 0, 0);
- this.tlpnPingColors.Controls.Add(this.btnPingColor4, 3, 1);
- this.tlpnPingColors.Controls.Add(this.btnPingColor2, 1, 1);
- this.tlpnPingColors.Controls.Add(this.btnPingColor3, 2, 1);
- this.tlpnPingColors.Controls.Add(this.lblPingStat2, 1, 0);
- this.tlpnPingColors.Controls.Add(this.lblPingStat4, 3, 0);
- this.tlpnPingColors.Controls.Add(this.btnPingColor1, 0, 1);
- this.tlpnPingColors.Controls.Add(this.lblPingStat3, 2, 0);
- this.tlpnPingColors.Location = new System.Drawing.Point(129, 35);
- this.tlpnPingColors.Name = "tlpnPingColors";
- this.tlpnPingColors.Padding = new System.Windows.Forms.Padding(3);
- this.tlpnPingColors.RowCount = 2;
- this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
- this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
- this.tlpnPingColors.Size = new System.Drawing.Size(318, 62);
- this.tlpnPingColors.TabIndex = 11;
- //
- // lblPingStat1
- //
- this.lblPingStat1.AutoSize = true;
- this.lblPingStat1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lblPingStat1.Location = new System.Drawing.Point(6, 3);
- this.lblPingStat1.Name = "lblPingStat1";
- this.lblPingStat1.Size = new System.Drawing.Size(72, 22);
- this.lblPingStat1.TabIndex = 6;
- this.lblPingStat1.Text = "330";
- this.lblPingStat1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // btnPingColor4
- //
- this.btnPingColor4.BackColor = System.Drawing.Color.Plum;
- this.btnPingColor4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.btnPingColor4.Location = new System.Drawing.Point(240, 28);
- this.btnPingColor4.Name = "btnPingColor4";
- this.btnPingColor4.Size = new System.Drawing.Size(72, 28);
- this.btnPingColor4.TabIndex = 8;
- this.btnPingColor4.UseVisualStyleBackColor = false;
- this.btnPingColor4.Click += new System.EventHandler(this.BtnPingColor4_Click);
- //
- // btnPingColor2
- //
- this.btnPingColor2.BackColor = System.Drawing.Color.Aqua;
- this.btnPingColor2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.btnPingColor2.Location = new System.Drawing.Point(84, 28);
- this.btnPingColor2.Name = "btnPingColor2";
- this.btnPingColor2.Size = new System.Drawing.Size(72, 28);
- this.btnPingColor2.TabIndex = 10;
- this.btnPingColor2.UseVisualStyleBackColor = false;
- this.btnPingColor2.Click += new System.EventHandler(this.BtnPingColor2_Click);
- //
- // btnPingColor3
- //
- this.btnPingColor3.BackColor = System.Drawing.Color.LawnGreen;
- this.btnPingColor3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.btnPingColor3.Location = new System.Drawing.Point(162, 28);
- this.btnPingColor3.Name = "btnPingColor3";
- this.btnPingColor3.Size = new System.Drawing.Size(72, 28);
- this.btnPingColor3.TabIndex = 9;
- this.btnPingColor3.UseVisualStyleBackColor = false;
- this.btnPingColor3.Click += new System.EventHandler(this.BtnPingColor3_Click);
- //
- // lblPingStat2
- //
- this.lblPingStat2.AutoSize = true;
- this.lblPingStat2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lblPingStat2.Location = new System.Drawing.Point(84, 3);
- this.lblPingStat2.Name = "lblPingStat2";
- this.lblPingStat2.Size = new System.Drawing.Size(72, 22);
- this.lblPingStat2.TabIndex = 5;
- this.lblPingStat2.Text = "331";
- this.lblPingStat2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblPingStat4
- //
- this.lblPingStat4.AutoSize = true;
- this.lblPingStat4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lblPingStat4.Location = new System.Drawing.Point(240, 3);
- this.lblPingStat4.Name = "lblPingStat4";
- this.lblPingStat4.Size = new System.Drawing.Size(72, 22);
- this.lblPingStat4.TabIndex = 3;
- this.lblPingStat4.Text = "333";
- this.lblPingStat4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // btnPingColor1
- //
- this.btnPingColor1.BackColor = System.Drawing.Color.RoyalBlue;
- this.btnPingColor1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.btnPingColor1.Location = new System.Drawing.Point(6, 28);
- this.btnPingColor1.Name = "btnPingColor1";
- this.btnPingColor1.Size = new System.Drawing.Size(72, 28);
- this.btnPingColor1.TabIndex = 7;
- this.btnPingColor1.UseVisualStyleBackColor = false;
- this.btnPingColor1.Click += new System.EventHandler(this.BtnPingColor1_Click);
- //
- // lblPingStat3
- //
- this.lblPingStat3.AutoSize = true;
- this.lblPingStat3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lblPingStat3.Location = new System.Drawing.Point(162, 3);
- this.lblPingStat3.Name = "lblPingStat3";
- this.lblPingStat3.Size = new System.Drawing.Size(72, 22);
- this.lblPingStat3.TabIndex = 4;
- this.lblPingStat3.Text = "332";
- this.lblPingStat3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // lblPingColors
- //
- this.lblPingColors.AutoSize = true;
- this.lblPingColors.Location = new System.Drawing.Point(23, 35);
- this.lblPingColors.Name = "lblPingColors";
- this.lblPingColors.Size = new System.Drawing.Size(25, 13);
- this.lblPingColors.TabIndex = 2;
- this.lblPingColors.Text = "329";
- //
- // chkUsePing
- //
- this.chkUsePing.AutoSize = true;
- this.chkUsePing.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.chkUsePing.Location = new System.Drawing.Point(3, 3);
- this.chkUsePing.Name = "chkUsePing";
- this.chkUsePing.Size = new System.Drawing.Size(58, 24);
- this.chkUsePing.TabIndex = 0;
- this.chkUsePing.Text = "328";
- this.chkUsePing.UseVisualStyleBackColor = true;
- this.chkUsePing.CheckedChanged += new System.EventHandler(this.ChkUsePing_CheckedChanged);
- //
// tabPagePacket
//
this.tabPagePacket.Controls.Add(this.panel5);
@@ -1075,17 +862,6 @@ namespace DutyContent.Tab
this.ilTabContent.Images.SetKeyName(2, "pix_tab_tool.png");
this.ilTabContent.Images.SetKeyName(3, "pix_tab_ping.png");
//
- // chkShowDebug
- //
- this.chkShowDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.chkShowDebug.AutoSize = true;
- this.chkShowDebug.Location = new System.Drawing.Point(201, 7);
- this.chkShowDebug.Name = "chkShowDebug";
- this.chkShowDebug.Size = new System.Drawing.Size(58, 17);
- this.chkShowDebug.TabIndex = 5;
- this.chkShowDebug.Text = "Debug";
- this.chkShowDebug.UseVisualStyleBackColor = true;
- //
// DutyForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1112,12 +888,6 @@ namespace DutyContent.Tab
this.panel2.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
- this.tabPagePing.ResumeLayout(false);
- this.panel6.ResumeLayout(false);
- this.panel6.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).EndInit();
- this.tlpnPingColors.ResumeLayout(false);
- this.tlpnPingColors.PerformLayout();
this.tabPagePacket.ResumeLayout(false);
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
@@ -1190,23 +960,6 @@ namespace DutyContent.Tab
private System.Windows.Forms.Label lblPacketDesc;
private System.Windows.Forms.ColumnHeader columnHeader8;
private System.Windows.Forms.CheckBox chkOverlayClickThru;
- private System.Windows.Forms.TabPage tabPagePing;
- private System.Windows.Forms.Panel panel6;
- private System.Windows.Forms.Label lblPingColors;
- private System.Windows.Forms.CheckBox chkUsePing;
- private System.Windows.Forms.Button btnPingColor2;
- private System.Windows.Forms.Label lblPingStat4;
- private System.Windows.Forms.Label lblPingStat2;
- private System.Windows.Forms.Label lblPingStat3;
- private System.Windows.Forms.Button btnPingColor4;
- private System.Windows.Forms.Button btnPingColor1;
- private System.Windows.Forms.Button btnPingColor3;
- private System.Windows.Forms.Label lblPingStat1;
- private System.Windows.Forms.TableLayoutPanel tlpnPingColors;
- private System.Windows.Forms.PictureBox pbxPingGraph;
- private System.Windows.Forms.CheckBox chkPingGraph;
- private System.Windows.Forms.Label lblPingDefAddr;
- private System.Windows.Forms.ComboBox cboPingDefAddr;
private System.Windows.Forms.CheckBox chkShowDebug;
}
}
\ No newline at end of file
diff --git a/Tab/DutyForm.cs b/Tab/DutyForm.cs
index 2074232..d0d9f51 100644
--- a/Tab/DutyForm.cs
+++ b/Tab/DutyForm.cs
@@ -1,5 +1,4 @@
-using DutyContent.Interface;
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
@@ -10,8 +9,6 @@ using System.Net;
using System.Net.Http;
using System.Text;
using System.IO;
-using System.Threading;
-using System.Net.NetworkInformation;
namespace DutyContent.Tab
{
@@ -28,12 +25,6 @@ namespace DutyContent.Tab
private Overlay.DutyOvForm _overlay;
- private System.Timers.Timer _ping_timer;
- private long _ping_last;
- private Color _ping_color = Color.Transparent;
- private Libre.PingGrapher _ping_grpr;
- private List _ping_keeps = new List() { 0, 0, };
-
public DutyForm()
{
_self = this;
@@ -41,7 +32,6 @@ namespace DutyContent.Tab
InitializeComponent();
_overlay = new Overlay.DutyOvForm();
- _ping_grpr = new Libre.PingGrapher(pbxPingGraph);
}
private void DutyTabForm_FormClosing(object sender, FormClosingEventArgs e)
@@ -112,14 +102,6 @@ namespace DutyContent.Tab
btnTestNotify.Enabled = DcConfig.Duty.EnableNotify;
- //
- chkUsePing.Checked = DcConfig.Duty.UsePing;
- btnPingColor1.BackColor = DcConfig.Duty.PingColors[0];
- btnPingColor2.BackColor = DcConfig.Duty.PingColors[1];
- btnPingColor3.BackColor = DcConfig.Duty.PingColors[2];
- btnPingColor4.BackColor = DcConfig.Duty.PingColors[3];
- chkPingGraph.Checked = DcConfig.Duty.PingGraph;
-
//
switch (DcConfig.Duty.ActiveFate)
{
@@ -129,52 +111,10 @@ namespace DutyContent.Tab
case 3: rdoFatePreset4.Checked = true; break;
}
UpdateFates();
-
- //
- try
- {
- var svl = File.ReadAllLines(Path.Combine(DcConfig.DataPath, "ServerList.txt"));
- int ssv = -1;
-
- for (var i = 0; i < svl.Length; i++)
- {
- cboPingDefAddr.Items.Add(svl[i]);
-
- if (svl[i].StartsWith(DcConfig.Duty.PingDefAddr))
- ssv = i;
- }
-
- if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
- ssv = -1;
-
- cboPingDefAddr.SelectedIndex = ssv > 0 ? ssv : 0;
- }
- catch
- {
- cboPingDefAddr.Items.Clear();
- cboPingDefAddr.Items.Add(MesgLog.Text(27));
- cboPingDefAddr.SelectedIndex = 0;
- }
-
- //
- _ping_timer = new System.Timers.Timer() { Interval = 5000 };
- _ping_timer.Elapsed += (sender, e) => PingOnce();
-
- if (DcConfig.Duty.UsePing)
- {
- PingOnce(false);
- _ping_timer.Start();
- }
}
public void PluginDeinitialize()
{
- if (_ping_timer != null)
- {
- _ping_timer.Stop();
- _ping_timer = null;
- }
-
_overlay.Hide();
_overlay = null;
}
@@ -209,7 +149,6 @@ namespace DutyContent.Tab
tabPageContent.Text = MesgLog.Text(301);
tabPageSetting.Text = MesgLog.Text(302);
tabPagePacket.Text = MesgLog.Text(303);
- tabPagePing.Text = MesgLog.Text(327);
lblDataSet.Text = MesgLog.Text(304);
lblLogFont.Text = MesgLog.Text(305);
@@ -245,15 +184,6 @@ namespace DutyContent.Tab
btnPacketStart.Text = MesgLog.Text(10007);
btnPacketApply.Text = MesgLog.Text(10009);
-
- chkUsePing.Text = MesgLog.Text(328);
- lblPingColors.Text = MesgLog.Text(329);
- lblPingStat1.Text = MesgLog.Text(330);
- lblPingStat2.Text = MesgLog.Text(331);
- lblPingStat3.Text = MesgLog.Text(332);
- lblPingStat4.Text = MesgLog.Text(333);
- chkPingGraph.Text = MesgLog.Text(334);
- lblPingDefAddr.Text = MesgLog.Text(335);
}
public void PacketHandler(string pid, byte[] message)
@@ -405,8 +335,8 @@ namespace DutyContent.Tab
var stq =
_stq_type == DcContent.SaveTheQueenType.Bozja ? 30000 :
- _stq_type == DcContent.SaveTheQueenType.Zadnor ? 30100 :
- 30100; // temporary
+ _stq_type == DcContent.SaveTheQueenType.Zadnor ? 30100 :
+ 30100; // temporary
var ce = stq + data[8];
var stat = data[10];
@@ -1209,7 +1139,12 @@ namespace DutyContent.Tab
1597, 1598, 1599,
1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
- 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628
+ 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
+
+ // zadnor
+ 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724,
+ 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
+ 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742,
};
//
@@ -1303,7 +1238,7 @@ namespace DutyContent.Tab
}
// critical engagement
- if (data.Length >= 12)
+ if (data.Length >= 12 && _stq_type != DcContent.SaveTheQueenType.No)
{
// 0[4] timestamp
// 4[2] mmss
@@ -1354,7 +1289,11 @@ namespace DutyContent.Tab
if (ok)
{
- var ce = DcContent.GetFate(code + 30000);
+ var stq =
+ _stq_type == DcContent.SaveTheQueenType.Bozja ? 30000 :
+ _stq_type == DcContent.SaveTheQueenType.Zadnor ? 30100 :
+ 30100; // temporary
+ var ce = DcContent.GetFate(code + stq);
var li = new ListViewItem(new string[]
{
@@ -1375,216 +1314,5 @@ namespace DutyContent.Tab
}
}
}
-
- private void ChkUsePing_CheckedChanged(object sender, EventArgs e)
- {
- if (!DcConfig.PluginEnable)
- return;
-
- DcConfig.Duty.UsePing = chkUsePing.Checked;
-
- SaveConfig();
-
- if (chkUsePing.Checked)
- {
- PingOnce();
- _ping_timer.Start();
- }
- else
- {
- _ping_timer.Stop();
- _overlay.ResetStat();
- }
- }
-
- private void PingColorWorker(int index, Button button)
- {
- Color color = (Color)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
- {
- var dg = new ColorDialog()
- {
- AnyColor = true,
- Color = DcConfig.Duty.PingColors[index],
- };
-
- return dg.ShowDialog() == DialogResult.OK ? dg.Color : DcConfig.Duty.PingColors[index];
- }));
-
- if (DcConfig.Duty.PingColors[index] != color)
- {
- button.BackColor = color;
- DcConfig.Duty.PingColors[index] = color;
- SaveConfig();
- }
- }
-
- private void BtnPingColor1_Click(object sender, EventArgs e)
- {
- PingColorWorker(0, btnPingColor1);
- }
-
- private void BtnPingColor2_Click(object sender, EventArgs e)
- {
- PingColorWorker(1, btnPingColor2);
- }
-
- private void BtnPingColor3_Click(object sender, EventArgs e)
- {
- PingColorWorker(2, btnPingColor3);
- }
-
- private void BtnPingColor4_Click(object sender, EventArgs e)
- {
- PingColorWorker(3, btnPingColor4);
- }
-
- private void ChkPingGraph_CheckedChanged(object sender, EventArgs e)
- {
- if (!DcConfig.PluginEnable)
- return;
-
- DcConfig.Duty.PingGraph = chkPingGraph.Checked;
-
- SaveConfig();
- }
-
- private void CboPingDefAddr_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (!DcConfig.PluginEnable)
- return;
-
- var val = cboPingDefAddr.SelectedItem as string;
-
- if (!string.IsNullOrEmpty(val))
- {
- var ss = val.Split(' ');
- if (ss.Length > 0)
- {
- DcConfig.Duty.PingDefAddr = ss[0].Trim();
-
- SaveConfig();
-
- return;
- }
- }
-
- DcConfig.Duty.PingDefAddr = string.Empty;
-
- SaveConfig();
- }
-
- //
- private void PingOnce(bool check_plugin_enable = true)
- {
- if (!DcConfig.Duty.UsePing)
- return;
-
- if (check_plugin_enable && !DcConfig.PluginEnable)
- return;
-
- var conns = DcConfig.Connections.CopyConnection();
- long rtt = 0;
- double loss = 0;
-
- if (conns.Length > 0)
- {
- foreach (var row in conns)
- {
- var (r, l) = CalcPing(row.RemoteAddress);
-
- if (rtt < r)
- rtt = r;
-
- if (loss < l)
- loss = l;
- }
- }
- else
- {
- if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
- {
- _overlay.ResetStat();
- return;
- }
-
- var defip = ThirdParty.Converter.ToIPAddressFromIPV4(DcConfig.Duty.PingDefAddr);
-
- if (defip == IPAddress.None || defip == IPAddress.IPv6None)
- {
- _overlay.ResetStat();
- return;
- }
-
- var (r, l) = CalcPing(defip);
-
- if (rtt < r)
- rtt = r;
-
- if (loss < l)
- loss = l;
- }
-
- //MesgLog.L("Ping: {0}, {1}%", rtt, loss);
-
- Color color;
- if (loss > 0.0 || rtt > 150)
- color = DcConfig.Duty.PingColors[3];
- else if (rtt > 100)
- color = DcConfig.Duty.PingColors[2];
- else if (rtt > 50)
- color = DcConfig.Duty.PingColors[1];
- else
- color = DcConfig.Duty.PingColors[0];
-
- if (_ping_last != rtt || loss > 0.0 || _ping_color != color)
- {
- _ping_last = rtt;
- _ping_color = color;
-
- _overlay.SetStatPing(color, rtt, loss);
- }
-
- //
- if (DcConfig.Duty.PingGraph)
- {
- _ping_keeps.Add((int)rtt);
- if (_ping_keeps.Count > 120)
- _ping_keeps.RemoveAt(0);
-
- _ping_grpr.Enter();
- _ping_grpr.DrawValues(_ping_keeps);
- WorkerAct.Invoker(() => _ping_grpr.Leave());
- }
- }
-
- // http://forum.codecall.net/topic/37643-c-packet-lossping-program/
-
- private static readonly PingOptions _ping_options = new PingOptions { DontFragment = true };
- private static readonly byte[] _ping_buffers = Encoding.ASCII.GetBytes("01234567890123456789012345678901");
- private static readonly int _ping_timerout = 120;
-
- //
- private (long Rtt, double Loss) CalcPing(IPAddress host, int amount = 6)
- {
- var ps = new Ping();
-
- int failed = 0;
- long rtt = 0;
-
- for (var i = 0; i < amount; i++)
- {
- PingReply pr = ps.Send(host, _ping_timerout, _ping_buffers, _ping_options);
-
- if (pr.Status != IPStatus.Success)
- failed++;
-
- if (rtt < pr.RoundtripTime)
- rtt = pr.RoundtripTime;
- }
-
- double loss = (failed / amount) * 100;
-
- return (rtt, loss);
- }
}
}
diff --git a/Tab/DutyForm.resx b/Tab/DutyForm.resx
index 0e045a1..5699061 100644
--- a/Tab/DutyForm.resx
+++ b/Tab/DutyForm.resx
@@ -124,306 +124,306 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAG
- RgAAAk1TRnQBSQFMAgEBBAEAASgBAQEoAQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD+
+ RQAAAk1TRnQBSQFMAgEBBAEAATABAQEwAQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
- /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgRZAcQDVQHqAxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/
- AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/
- AxIB/wNdAeIDVAGuAykBPwgAAwcBCgNIAYUCEgGqAf8CDQGqAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGk
- Af8CDAGkAf8CDAGkAf8CDAGjAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGi
- Af8CDAGiAf8CDAGiAf8CDAGiAf8CDAGjAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGk
- Af8CDQGqAf8CEgGqAf8DSAGFAwcBCv8ABQADTgGXAzMB/wOyAf8DzQH/A90B/wPdAf8D3QH/A90B/wPd
+ /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgRZAcQDVQHqAxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/
+ AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/
+ AxEB/wNdAeIDVAGuAykBPwgAAwcBCgNIAYUCEQGqAf8CDAGqAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGk
+ Af8CCwGkAf8CCwGkAf8CCwGjAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGi
+ Af8CCwGiAf8CCwGiAf8CCwGiAf8CCwGjAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGk
+ Af8CDAGqAf8CEQGqAf8DSAGFAwcBCv8ABQADTgGXAzIB/wOyAf8DzQH/A90B/wPdAf8D3QH/A90B/wPd
Af8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd
- Af8D3QH/A90B/wPIAf8DogH/AyQB/wNGAYEEAANIAYUCDAGkAf8CDAGiAf8CDAGhAf8CDAGhAf8CDAGh
- Af8CDAGhAf8CDAGhAf8CCQGgAf8CCQGeAf8CCQGbAf8CCQGZAf8CCQGZAf8CCQGXAf8CCQGVAf8CCQGV
- Af8CCQGVAf8CCQGVAf8CCQGXAf8CCQGZAf8CCQGZAf8CCQGbAf8CCQGeAf8CCQGgAf8CDAGhAf8CDAGh
- Af8CDAGhAf8CDAGhAf8CDAGhAf8CDAGiAf8CDAGkAf8DSAGFVwABAQMCBAMEBAEGAwQBBgMDAQQDAQEC
- AwABAYwAAzcBWgM/Af8D2wH/A4sB/wMpAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMS
- Af8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AykB/wOH
- Af8DzQH/AysB/wMrAUICDAGkAf8CDAGiAf8CCQGdAf8CBwGYAf8CBwGXAf8CBwGXAf8CBwGXAf8CBwGX
- Af8CBAGRAf8CBAGPAf8CBAGMAf8CBAGKAf8CBAGKAf8CAgGIAf8CAAGGAf8CAAGGAf8CAAGGAf8CAQGG
- Af8CBAGIAf8CBAGKAf8CBAGKAf8CBAGMAf8CBAGPAf8CBAGVAf8CBwGXAf8CBwGXAf8CBwGXAf8CBwGX
- Af8CBwGYAf8CCQGdAf8CDAGiAf8CDAGkAf9QAAMCAQMDBgEIAw0BEgMaASQDIwEzAyEBMAMWAR4DCgEO
- AwQBBgMAAQGIAANZAcMDsgH/A4oB/wFPAT0BIwH/AbkBkwE1Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7
- Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wG9
- AZUBMwH/AaMBgAEnAf8BvQGVATMB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7
- Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wG5AZMBNQH/AVoBRQEmAf8DhQH/A6MB/wNU
- AasCDAGjAf8CCQGaAf8CBQGRAf8CAAGNAf8CAAGNAf8CAAGKAf8CAAGGAf8CAAGBAf8CAAFZAf8CAAFX
- Af8CAAFSAf8CAAFRAf8CAAFRAf8CAAFRAf8CAAFNAf8CAAFKAf8CAAFKAf8CAAFNAf8CAAFRAf8CAAFR
- Af8CAAFRAf8CAAFSAf8CAAFXAf8CAAGAAf8CAAGGAf8CAAGGAf8CAAGKAf8CAAGNAf8CAAGNAf8CBQGR
- Af8CCQGaAf8CDAGjAf9MAAMCAQMDBwEKAxcBIAMwAUwBRQJGAX4BTwJRAZwBTQJOAZYDQQFyAyoBQQMS
- ARkDBQEHAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/RAADQQH5A8oB/wMnAf8BuQGPATQB/wHVAaIBPAH/
- AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGi
- ATwB/wHVAaIBPAH/AcQBlQE0Af8BiQFGASAB/wEbASoBMAH/AZQBSwEfAf8B0wGhATsB/wHVAaIBPAH/
- AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGi
- ATwB/wHAAZMBNgH/AyAB/wPFAf8DTgHwAgoBmQH/AgABiwH/AgABVwH/AgABUwH/AgABSwH/AgABSwH/
- AgABRgH/AgABQwH/AgABQgH/AgABPwH/AgABOwH/AgABOwH/AgABOgH/AgABNwH/AgABMwH/AgABMwH/
- AgABMwH/AgABMwH/AgABNwH/AgABOgH/AgABOwH/AgABOwH/AgABPwH/AgABQgH/AgABRQH/AgABSwH/
- AgABSwH/AgABSwH/AgABUwH/AgABVwH/AgABiwH/AgoBmQH/SAADAQECAwcBCQMYASIDOAFeAVMCVQGt
- AV0CYQHiA20B9wNlAfQBXgJhAdoDUAGaAy0BRgMOARMDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMS
- Af8DwgH/AxQB/wHMAZUBOQH/AdUBmwE7Af8B1QGbATsB/wHVAZsBOwH/AdUBmwE7Af8B1QGbATsB/wHV
- AZsBOwH/AdUBmwE7Af8B1QGbATsB/wHVAZsBOwH/Ab8BiwExAf8BkwFGAR4B/wEaASgBMQH/AQABMAGO
- Af8BSQE2ASIB/wGVAUcBHgH/Ac8BlwE4Af8B1QGbATsB/wHVAZsBOwH/AdUBmwE7Af8B1QGbATsB/wHV
- AZsBOwH/AdUBmwE7Af8B1QGbATsB/wHVAZsBOwH/AcUBkAE3Af8DGgH/A8IB/wMSAf8CCAGRAf8BAgEH
- AYIB/wECAR4BhAH/AQgBJwGFAf8BCAEnAYAB/wEIASkBgwH/AQgBKQGDAf8BCAEpAYMB/wEIASkBWQH/
- AQgBKQFZAf8BCAEpAVkB/wEIASkBWQH/AQgBKQFUAf8BCAEmAVEB/wEIASYBUQH/AQgBJgFRAf8BCAEm
- AVEB/wEIASYBUQH/AQgBJgFRAf8BCAEmAVEB/wEIASYBVgH/AQgBJgFWAf8BCAEmAVYB/wEIASYBVgH/
- AQgBJwGDAf8BCAEpAYMB/wEIASkBgwH/AQgBKQGDAf8BCAEpAYgB/wEEAR4BhwH/AQIBBwGDAf8CCAGR
- Af9HAAEBAwYBCAMWAR4DOAFdA1UBtQNkAfEB8wH4AfwB/wHtA/8B8wP/AZIBogGsAf4DXwHgA0gBhQMf
- ASwDBQEHLwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMSAf8DtAH/AxIB/wHOAZABOAH/AdUBlAE6Af8B1QGU
- AToB/wHVAZQBOgH/AdUBlAE6Af8B1QGUAToB/wHVAZQBOgH/AdQBkwE6Af8B0AGRATgB/wG0AVgBKwH/
- AYoBPgEeAf8BEAEmATYB/wEAARQBUwH/AQABFAFOAf8BAAEbAVQB/wEzASwBJgH/AZIBQQEdAf8BuQGA
- AS0B/wHSAZIBOQH/AdUBlAE6Af8B1QGUAToB/wHVAZQBOgH/AdUBlAE6Af8B1QGUAToB/wHVAZQBOgH/
- AcUBiwE2Af8DGQH/A7QB/wMSAf8CAwGKAf8BBwEgAYcB/wEZAYUBqQH/ATABqwHUAf8BSQHRAd4B/wFO
- AdQB4QH/AVEB1AHhAf8BUwHUAeEB/wFTAdQB4QH/AVEB1AHhAf8BTgHUAeEB/wFOAdQB4QH/AU4B0wHg
- Af8BTgHRAd4B/wFOAdEB3gH/AU4B0QHeAf8BTgHRAd4B/wFOAdEB3gH/AU4B0QHeAf8BTgHRAd4B/wFO
- AdEB3gH/AU4B0QHeAf8BTgHRAd4B/wFOAdEB3gH/AU4B0QHhAf8BTgHUAeEB/wFOAdQB4QH/AUkB1AHh
- Af8BMQGyAdgB/wEbAYUBrwH/AQcBIAGLAf8CAwGKAf9DAAEBAwUBBwMUARsDNQFWA1QBrwFaAl0B8AHz
- AfgB/AH/AdQD/wHEAfwC/wHGAf4C/wHoA/8BdgGEAYgB+wFVAlYBsQMtAUUDBwEKLwAB/wMAAf8DAAH/
- AwAB/wMAAf9EAAMSAf8DpwH/AxIB/wHOAYcBNwH/AdUBiwE5Af8B1QGLATkB/wHLAYQBNQH/Ab0BVgEu
- Af8BxAGAATIB/wHAAVgBMAH/AZUBPAEdAf8BjQE5AR4B/wE3ASoBJgH/AQABHgFLAf8BAAEDAUEB/wEZ
- AZEBsgH/AU4B1QHmAf8BAAE3AYkB/wEAAQkBRwH/AQABIgFCAf8BTQEwASEB/wGSATsBHQH/AbEBTwEp
- Af8BwwGAATEB/wHDAYABMQH/AboBVQEtAf8B0wGKATgB/wHVAYsBOQH/AcUBggE1Af8DGQH/A6cB/wMS
- Af8CAgGBAf8BCwEsAZAB/wEsAaEBwgH/AR0BVgGkAf8BEQEoAVcB/wESASgBhAH/ARMBKAGIAf8BFAEo
- AYgB/wEUASgBgQH/ARMBKAGBAf8BEgEoAYEB/wESASgBVwH/ARIBKAFWAf8BEgEoAVYB/wESASgBVgH/
- ARIBKAFWAf8BEgEoAVYB/wESASgBVgH/ARIBKAFWAf8BEgEoAVYB/wESASgBgQH/ARIBKAGBAf8BEgEo
- AYEB/wESASgBgQH/ARQBKQGIAf8BFwEsAYgB/wESASgBhAH/AREBKAFXAf8BHQFYAaQB/wEsAaEBwwH/
- AQsBLAGRAf8CAgGBAf8/AAEBAwQBBgMSARgDMgFQA1IBqQFZAmQB7AGSAaIBrAH+AdkD/wHEAfwC/wHD
- AfsC/wHDAfsC/wHXA/8CqAGrAf0BVwJZAb8DMgFQAwgBCy8AAf8DAAH/AwAB/wMAAf8DAAH/RAADEgH/
- A5sB/wMSAf8BzgFaATUB/wHVAYMBNwH/AcsBWAEzAf8BgwExAR4B/wFDASkBIQH/AVEBLAEfAf8BSQEq
- ASAB/wEaAScBMgH/AQABIQFPAf8BAAEJAUsB/wEAASYBVQH/AUgB0AHnAf8BUwHdAfEB/wE4AacBsQH/
- AVkB4QH3Af8BLwGpAcUB/wEAAQoBQQH/AQABFQFSAf8BAAEkAUcB/wErAScBKQH/AU8BKwEfAf8BUAEr
- AR8B/wE+ASkBJQH/AZQBNgEbAf8B0wGCATYB/wHFAVYBMwH/AxgB/wObAf8DEgH/AgIBWQH/AQwBLQGL
- Af8BJQGcAb0B/wEDARQBRAH/AQABBwFQAf8BCAEuAZgB/wEHATEBnQH/AQcBLwGdAf8BBwEuAZwB/wEH
- AS4BlgH/AQYBLQGVAf8BCQErAZEB/wEAAQUBUAH/AgABRwH/AgABRwH/AgABRwH/AgABRwH/AgABRwH/
- AQABAwFOAf8BCAEnAZIB/wEHASkBlAH/AQEBHwGNAf8BCwE1AZgB/wEAARgBjgH/AQsBNQGfAf8BBwEl
- AZMB/wEDAQgBUAH/AgABQQH/AQMBEgFCAf8BJQGXAbQB/wEMASwBiAH/AgIBWQH/OwABAQMEAQYDEAEV
- AywBQwFPAlABmwFYAmIB6QGSAaIBrAH+Ad4D/wHGAf4C/wHDAfsC/wHDAfsC/wHIA/8B7AP/AXYBhQGI
- AfsBVQJWAbEDLQFFAwcBCi8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMS
- Af8DkwH/AxIB/wHMAVIBMwH/AdMBVQE1Af8BzgFSATMB/wGKAS4BGwH/AQABNgGEAf8BAAEuAY0B/wEA
- ASYBiAH/AQABHAGBAf8BCgFRAZ8B/wFMAdUB5gH/AZAB7wH+Af8BLwGbAbwB/wE7AREBKAH/AZEBDQEm
- Af8BKgEnAT8B/wFGAcoB5gH/AZAB7QH6Af8BNgG0AcoB/wEAATcBkgH/AQABHgGBAf8BAAEnAYcB/wEA
- ATgBlgH/ARgBKAE7Af8BkwEwARoB/wHSAVUBNQH/AcMBTgExAf8DFwH/A5MB/wMSAf8CAgFZAf8BDAEu
- AYsB/wElAZ0BvQH/AQMBFAFLAf8BBgEtAZUB/wFCAdYB6QH/AUMB1wHwAf8BQgHSAfAB/wFCAdEB8AH/
- AUIB0QHuAf8BPwHNAesB/wE8AcUB5wH/AQABEQGKAf8CBAFRAf8CBAFRAf8CBAFRAf8CBAFRAf8BAwEF
- AVIB/wEAARMBjAH/AT0BwQHiAf8BNwHEAegB/wEVAYoBzwH/AUsB4QH1Af8BAgFLAcMB/wFNAeEB9QH/
- ASgBogHVAf8BAAESAZIB/wEAAQEBTQH/AQMBEgFKAf8BIwGUAbQB/wEMASkBiAH/AgIBWQH/OAADBAEF
- Aw0BEgMoATwDSgGKAV4CYQHaAqgBqgH9AeID/wHGAf4C/wHDAfsC/wHDAfsC/wHJA/8B6QP/AqgBqgH9
- AVwCYQHcA0cBggMdASoDBQEHLwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQA
- AxIB/wOPAf8DEgH/AckBTwEyAf8B0AFSATQB/wHQAVIBNAH/AaYBOgEiAf8BIAEkATIB/wEGAVABowH/
- ATgBqwHSAf8BkgHrAfgB/wGJAeoB9wH/ATcBogG8Af8BNwEkAT0B/wGaARgBPgH/Ab8BKwGLAf8BwQEw
- AZMB/wG7ASkBggH/AYIBEQEwAf8BLwFAAVoB/wFGAcMB2wH/AZMB8AH8Af8BhgHhAfMB/wElAZEBuQH/
- AQABSwGfAf8BTQElAR0B/wG8AUcBLAH/AdABUgE0Af8BwAFLATAB/wMXAf8DjwH/AxIB/wICAVkB/wEM
- AS4BiwH/ASUBnQG9Af8BAwEUAU8B/wEDAS8BnwH/AUkB4gH1Af8BUAHsAv8BVQHuAv8BVgHuAv8BVgHu
- Av8BVgHuAv8BNQHAAesB/wEAAREBjwH/AgQBVgH/AgQBUwH/AgQBUQH/AgQBUgH/AQABCQGCAf8BFwFV
- Ab4B/wFHAdoB+AH/ARcBmAHfAf8BNgHEAfEB/wEqAbYB6gH/ASIBrAHlAf8BQgHWAfkB/wEcAZ8B4QH/
- ASUBnwHTAf8BAwEeAYwB/wECARIBTQH/ASABlAG0Af8BDAEpAYgB/wICAVkB/yQAAwEBAgMDBAQEBgQI
- AQsDDwEUAyQBNgFGAkcBgAFYAlwB0QF2AYUBiQH7AekD/wHIA/8BwwH7Av8BwwH7Av8BzAP/AfAD/wF2
- AYUBiQH7AVkCXQHXA0wBkgMrAUIDDQESAwMBBC8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/
- AgAC/wIAAv8kAAMSAf8DjwH/AxIB/wHHAU0BMgH/Ac4BUAE0Af8BzgFQATQB/wGmAToBIwH/AiABLgH/
- AQABQAGQAf8BHwGHAakB/wESAScBPwH/AUYBCgEhAf8BpQEZAUEB/wHCASwBjAH/AcsBOwGkAf8B0gFD
- AbEB/wHUAUQBtAH/AdEBQQGwAf8BygE6AaIB/wG+ASoBhAH/AZIBEwE3Af8BOAEPASEB/wEKAToBWAH/
- ASQBigGsAf8BAAE1AYgB/wFMASUBHQH/Ab0BRgEtAf8BzgFQATQB/wG/AUoBMAH/AxcB/wOPAf8DEgH/
- AgIBWQH/AQwBLQGLAf8BJQGcAbkB/wEDARQBSQH/AQMBLwGfAf8BSQHhAfUB/wFOAecC/wFPAegC/wFQ
- AegC/wFSAeoC/wFWAe4C/wE1AcAB6wH/AQABEQGOAf8CBAFQAf8CBAFPAf8CBAFOAf8CBAFOAf8BAAEK
- AYEB/wEtAaEB1AH/AU4B5gL/AQQBRwHBAf8BTgHmAv8BFgGPAdQB/wE7AckB8QH/ATsByQHxAf8BFgGP
- AdUB/wFEAdwB9QH/AQgBLQGYAf8BAwESAUgB/wEkAZQBtAH/AQwBKQGIAf8CAgFZAf8cAAMCAQMDBgEI
- Aw0BEQMXASADIgEyAyoBQAMsAUMDMQFOA0cBggFZAlwBzAFrAXQBeAH6Ae0D/wHJA/8BwwH7Av8BwwH7
- Av8BzQP/AfgD/wFcAW8BcwH4AVwCXgHOAUgCSQGHAysBQgMRARcDBAEGAwABAS8AAf8DAAH/AwAB/wMA
- Af8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMSAf8DkAH/AxIB/wHFAUsBMQH/AcwBTgEzAf8BzAFO
- ATMB/wGkATcBIgH/AR0BIAEwAf8BAAE6AYkB/wEAAT8BjQH/ASkBGQEzAf8BvAEiAVcB/wHEATIBnAH/
- AdEBQgGvAf8B3AFOAcEB/wHmAVcBzQH/AekBWgHSAf8B5gFYAc0B/wHdAU8BwQH/AdABQgGvAf8BxQEz
- AZsB/wGzAR4BRgH/AQABJwFIAf8BCwFGAZAB/wEAAS8BgwH/AUsBJAEdAf8BuwFFASwB/wHMAU4BMwH/
- Ab0BSAEvAf8DFwH/A5AB/wMSAf8CAgFZAf8BDAEtAYsB/wElAZsBuAH/AQMBEwFHAf8BBgEnAZIB/wEy
- AbsB4AH/ATYBvAHmAf8BNgG/AeYB/wE9Ab8B5AH/AT0BwQHnAf8BPQHFAesB/wE4Ab8B5AH/AQABDgGE
- Af8CAwFOAf8CAgFOAf8CAAFOAf8CAAFOAf8BAAECAVEB/wEAAQsBhQH/AQABEQGNAf8BAAEMAYgB/wEA
- AREBjwH/AQABDQGLAf8BAAEQAZQB/wEAAREBlgH/AQEBEQGTAf8BAAERAZIB/wEAAQUBUgH/AQMBEgFH
- Af8BJQGUAbQB/wEMASkBiAH/AgIBWQH/FwABAQMEAQUDCgEOAxoBJQMxAU0DRAF5AU8CUAGbAVMCVAGs
- A1QBrgNVAbUBWgJeAdgDbQH3AfQD/wHKA/8BwwH7Av8BxAH8Av8B0Qf/A20B9wFYAlsBxgNDAXgDJgE4
- AxABFQMEAQYDAAEBMwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wOS
- Af8DEgH/AcMBSAEwAf8BygFLATIB/wHIAUoBMQH/AYwBKQEYAf8BBgEfATwB/wEBAT8BjAH/AQEBSwGd
- Af8BRgEXATMB/wHCASwBkAH/Ac0BPQGrAf8B3gFRAcQB/wHvAYcB2gH/AfsBkwHsAf8B/QGYAfQB/wH7
- AZMB7AH/Ae8BhwHaAf8B3gFRAcQB/wHOAT0BrAH/Ab0BKQGEAf8BFQEpAUkB/wETAVIBnQH/AQABLgGE
- Af8BOQEgASIB/wGwAT0BJwH/AcoBSwEyAf8BuwFFAS4B/wMXAf8DkgH/AxIB/wICAVkB/wEMAS0BigH/
- ASUBlwG2Af8BAwESAUcB/wEAAQMBUAH/AQABEAGPAf8BAAESAZcB/wEAARIBlwH/AQABEgGPAf8BAAES
- AY8B/wEAARIBjwH/AQABDwGIAf8BAAEDAVIB/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIA
- AU4B/wIDAU4B/wIEAVAB/wIEAVYB/wIEAVYB/wIEAVoB/wIEAYMB/wIEAYMB/wIEAVkB/wIAAUgB/wED
- ARIBRwH/ASUBlAG0Af8BDAEpAYgB/wICAVkB/xMAAQEDBAEGAw8BFAMkATUBPwJAAW8DVgGzAVsCYQHh
- A2UB9AFmAXIBdwH6AVwBbwFzAfgCWQFaAfUBVAFvAXYC+gP/Ac0D/wHDAfsC/wHEAfwC/wHUA/8B8wH4
- AfwB/wJZAVwB9QFWAlgBwQNAAXADIAEuAwsBDwMEAQUDAAEBGwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
- AgAC/wIAAv8MAAMSAf8DlgH/AxIB/wHBAUUBMAH/AcgBSAExAf8BxAFGAS8B/wGHASYBGAH/AQABJQFP
- Af8BEwFNAZcB/wEFAUgBlwH/AYABFgE3Af8BxgEyAZoB/wHVAUYBtwH/AeoBgAHSAf8B/AGWAfEC/wGo
- Af4C/wGvA/8BqAH+Af8B/AGWAfEB/wHqAYAB0gH/AdYBRgG3Af8BxQEwAZMB/wEsASIBPgH/AREBVAGg
- Af8BAAE6AY0B/wEXAR8BMwH/AYwBJwEXAf8BxwFIATEB/wG5AUIBLgH/AxgB/wOWAf8DEgH/AgIBWAH/
- AQwBKwGFAf8BIgGVAbQB/wECARIBRwH/AgABSAH/AgQBWQH/AgQBgwH/AgQBgwH/AgQBVgH/AgQBVgH/
- AgQBUwH/AgQBTwH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgIBTgH/
- AgQBUAH/AgQBVgH/AgQBVgH/AgQBVgH/AgQBgwH/AgQBgwH/AgQBWQH/AgABSAH/AQMBEgFHAf8BJQGU
- AbQB/wEMASkBiAH/AgIBWQH/EAADAgEDAwsBDwMjATQBRAJFAXwBVwJaAcUDbQH3AfMB+AH8Af8B8QP/
- AecD/wHqA/8B7wP/AeQD/wHNA/8BwwH7Av8BxgH+Av8B2gP/AfMB+AH8Af8BZAJlAfQBVgJYAbwDPQFp
- Ax0BKgMKAQ0DAwEEIwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8MAAMSAf8DmgH/AxIB/wG+
- AUQBLwH/AcUBRgEwAf8BrwE6AScB/wFGASABGwH/AQABLwGLAf8BKgGJAasB/wEDATcBWgH/AakBHgFI
- Af8ByAE2AaEB/wHaAUsBvAH/AfABiAHcAf8B/gGfAfoC/wG0A/8BwgP/AbQC/wH+AZ8B+gH/AfABiAHc
- Af8B2wFLAb0B/wHJATUBnQH/AVIBFwE2Af8BDQFRAZ0B/wEZAVYBogH/AQABJAFPAf8BhgElARcB/wHD
- AUUBLwH/AbYBQQEtAf8DGAH/A5oB/wMSAf8CAgFXAf8BDAEpAYMB/wEkAZQBtAH/AQMBEgFHAf8CAAFI
- Af8CBAFZAf8CBAGDAf8CBAGDAf8CBAFWAf8CBAFWAf8CBAFRAf8CBAFOAf8CAAFOAf8CAAFOAf8CAAFO
- Af8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CBAFOAf8CBAFSAf8CBAFWAf8CBAFWAf8CBAGD
- Af8CBAGDAf8CBAFZAf8CAAFIAf8BAwESAUcB/wElAZQBtAH/AQwBKQGIAf8CAgFZAf8QAAMDAQQDGAEh
- Az0BaQFXAlkBvwFuAXQBeAH6AfED/wHOA/8BxAH8Av8BwwH7Av8BwwH7Av8BwwH7Av8BwwH7Av8BwwH7
- Av8BxgH+Av8B3gP/AZIBogGsAf4BTgJdAfABVQJXAbcDOwFjAxoBJQMJAQwDAwEEJwAB/wMAAf8DAAH/
- AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
- AgAC/wIAAv8CAAL/AgAC/wIAAv8MAAMSAf8DnwH/AxIB/wG7AUEBLgH/AcABQgEuAf8BhgEkARYB/wEJ
- AR4BNwH/AQABPQGUAf8BMQGVAbkB/wEhASgBQwH/AbgBIQFVAf8BxwE2AaAB/wHZAUoBuwH/Ae8BhQHa
- Af8B/gGdAfoC/wGxA/8BvAP/AbEC/wH+AZ0B+gH/Ae8BhQHaAf8B2QFKAbwB/wHHATUBnwH/AaQBGwFE
- Af8BDAFBAYkB/wE3AZcBuAH/AQABLQGKAf8BRQEfARwB/wGtATgBJgH/AbMBPgEsAf8DGAH/A58B/wMS
- Af8CAgFXAf8BDAEpAYMB/wElAZQBtAH/AQMBEgFHAf8BAAEPAVkB/wELATkBrAH/AQwBPgG2Af8BCgE8
- AbAB/wEEASsBogH/AQABFQGOAf8BAQEIAVkB/wIEAVAB/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIA
- AU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIEAU4B/wIEAVEB/wIEAVYB/wIEAVYB/wIEAYMB/wIEAYMB/wIE
- AVkB/wIAAUgB/wEDARIBRwH/ASQBlAG0Af8BDAEpAYgB/wICAVkB/xAAAwQBBgMjATMBTQJOAZUDZQH0
- BP8B2gP/AdkD/wHgA/8B3QP/Ac8D/wHFAf0C/wHDAfsC/wHDAfsC/wHTA/8BkgGiAawB/gFOAl0B8AFV
- AlcBtwM6AWADGAEiAwgBCwMCAQMrAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxIB/wOk
- Af8DEgH/AbkBPgEsAf8BoAEwASAB/wFAARwBGgH/AQABHgFWAf8BIAFVAaIB/wEIAUYBkgH/AU4BDgEf
- Af8BtwEhAVgB/wHCATIBmwH/AdMBRAGzAf8B5gFZAc8B/wH6AZEB6wL/AaAB/AL/AagB/gL/AaAB/AH/
- AfoBkQHrAf8B5gFZAc8B/wHTAUQBtAH/AcMBMQGaAf8BtgEfAUwB/wEiARoBLgH/ARwBVwGkAf8BAAE7
- AZEB/wEEARYBMgH/AYQBIgEUAf8BqQE3AScB/wMYAf8DpAH/AxIB/wICAVgB/wEMASkBhQH/ASUBlAG0
- Af8BAwESAUcB/wEKAS8BkgH/AUkB5AH1Af8BTgHpAv8BRwHgAfgB/wEqAbEB3wH/ARIBRwG1Af8BBAEW
- AYoB/wEEAQYBUAH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgIBTgH/
- AgQBTwH/AgQBUwH/AgQBWAH/AQEBCQGEAf8BAAEOAY0B/wEAAQwBjAH/AQMBBwGDAf8CAAFJAf8BAgES
- AUcB/wEiAZUBtAH/AQwBKwGIAf8CAgFZAf8QAAMEAQYDIgEyAUwCTQGRA2QB8QKoAakB/QGGAZsBqQH+
- AqgBqgH9AWQBggGIAfsBZQF3AX0B/AHnAfEB+AH/AdUD/wHDAfsC/wHDAfsC/wHgA/8BXwF5AYYB+wFa
- Al0B0wNCAXQDGgElAwYBCAMBAQIvAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxIB/wOq
- Af8DEgH/AakBNAElAf8BSAEdARoB/wE5AZYBtQH/AVIBwQHkAf8BlAHYAesB/wEAASwBiAH/AQABHwFA
- Af8BoQEXAT8B/wG/ASoBjgH/AcoBOgGmAf8B2gFLAbwB/wHoAYEB0gH/AfQBigHhAf8B+QGQAegB/wH0
- AYoB4QH/AegBgQHSAf8B2gFLAb0B/wHLAToBpQH/AcABKQGKAf8BWAEWATMB/wEAAR0BTQH/ARkBVwGp
- Af8BnAHhAe8B/wFEAbAB1gH/ASwBJQEtAf8BkAEpARwB/wMZAf8DqgH/AxIB/wICAVkB/wEMASkBiAH/
- ASUBlAG0Af8BAwESAUcB/wEAARkBigH/ARMBjAHPAf8BEwGTAdwB/wEUAY8B1QH/AQoBUQHDAf8BBAEr
- AaUB/wEAAQ8BiQH/AQABBQFVAf8CAwFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFO
- Af8CAwFOAf8CBAFQAf8CBAFYAf8BBAETAY4B/wERAUkBuAH/AScBmgHSAf8BHgGNAcsB/wEIATABpQH/
- AQABBQFRAf8BAwESAUcB/wElAZcBtgH/AQwBLQGKAf8CAgFZAf8QAAMDAQQDFgEeAzYBWQFPAlEBnAFX
- AlkBvwFZAlwByQFaAl0BygFcAl4BzgFYAl8B4wFXAmIB9gHwA/8BwwH7Av8BwwH7Av8B3QP/AW8BewF/
- AfwDWQHHAzcBWwMPARQDAAEBTwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQA
- AxIB/wOwAf8DEgH/Aa8BNQEoAf8BVwEcARQB/wE6ARcBGQH/ATUBUQGFAf8BsAHuAfcB/wGbAeMB7wH/
- AQABLwGRAf8BBAErAUQB/wGlARsBRwH/AcABLgGVAf8BywE8AakB/wHWAUcBtwH/Ad4BUQHCAf8B4QFT
- AcYB/wHeAVEBwgH/AdYBRwG3Af8BywE8AagB/wHDAS0BkQH/AYEBFwE5Af8BAAE1AYAB/wEMAU8BpQH/
- AbcB8wH6Af8BlgHaAeQB/wEtASIBKgH/AU0BGwEWAf8BowEwASUB/wMZAf8DsAH/AxIB/wICAVkB/wEM
- ASkBiAH/ASUBlAG0Af8BAwESAUcB/wEAAScBjwH/ATMBxwHoAf8BOgHQAfMB/wE7AcsB8gH/ATEBuwHm
- Af8BGwGNAcwB/wEHATIBpQH/AQIBDgGBAf8BAAEDAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIA
- AU4B/wIAAU4B/wIAAU4B/wIEAU4B/wEBAQcBWAH/AQ0BRwG1Af8BPAHQAfEB/wFMAekB/QH/AUkB5QH7
- Af8BJQGpAdwB/wEAARYBhAH/AQMBEwFHAf8BJQGbAbgB/wEMAS0BiwH/AgIBWQH/EAADAgEDAwoBDQMc
- AScDLwFJAzwBZgNEAXoDSAGEAU4CTwGXAVkCXAHMAVMCZAHxBP8BwwH7Av8BwwH7Av8B1wP/AqgBqwH9
- A1sByAM3AVoDCwEPUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wO2
- Af8DEgH/AbABNAEoAf8BsgE0AScB/wGfASsBHwH/AVgBGwESAf8BHwEXASYB/wGTAdQB6AH/AZYB3gHv
- Af8BAAE+AZYB/wEXASIBOQH/AbgBHwFSAf8BvwEsAZMB/wHGATUBoAH/AcsBOwGmAf8BzQE9AaoB/wHL
- ATsBpgH/AcYBNQGgAf8BwAEsAZEB/wGdARoBQwH/AQABNwFRAf8BDAFOAagB/wGvAesB+AH/AUsBoAHD
- Af8BPQIWAf8BWgEbAREB/wGtATIBJQH/AakBMgEnAf8DGQH/A7YB/wMSAf8CAgFZAf8BDAEpAYgB/wEk
- AZQBtAH/AQMBEgFHAf8BAAEiAY4B/wEsAcMB5wH/ATMBzgHyAf8BMwHIAfIB/wEpAbQB5gH/ARYBigHK
- Af8BBgEwAZ8B/wEAAQoBVAH/AgABRQH/AgABQwH/AgABQwH/AgABQwH/AgABQwH/AgABQwH/AgABQwH/
- AgABQwH/AgABRAH/AQABBAFSAf8BHQGVAcsB/wFBAekB/QH/AUMB7gL/AUMB7gL/ATUB1QHwAf8BAAEj
- AZAB/wEDARQBRwH/ASUBnAG5Af8BDAEtAYsB/wICAVkB/xMAAQEDBwEJAxYBHwMvAUkBQQJCAXMBTAJN
- AZEBUAJSAaMBVQJXAboDXwHgAUkCYgH2AfMD/wHDAfsC/wHDAfsC/wHdA/8BbwF7AX8B/AFXAloBvQMx
- AU8DCQEMUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wO7Af8DEgH/
- Aa0BMQEnAf8BswEzASgB/wGzATMBKAH/AagBLgEjAf8BVwEYAREB/wEfARcBJgH/AZEB0QHqAf8BVgG6
- Ad0B/wEAAUcBkwH/AUABFAEvAf8BuAEdAVUB/wG8ASUBhwH/AcABJwGKAf8BvwEoAYwB/wHAAScBigH/
- AbwBJAGGAf8BtAEcAU0B/wETASUBOgH/AQEBTQGiAf8BnQHeAfEB/wFLAaABxgH/AT8BFQEWAf8BlgEl
- ARwB/wGyATMBKAH/AbMBMwEoAf8BpgEvASYB/wMaAf8DuwH/AxIB/wICAVkB/wEMASkBiAH/ASABlAG0
- Af8BAgESAUcB/wEAARQBhQH/AQoBggHKAf8BCQGOAdcB/wEJAYoB1wH/AQkBhgHPAf8BCQFRAcAB/wED
- ATgBqgH/AQABGQGMAf8CAAFAAf8CAAE6Af8CAAE6Af8CAAE6Af8CAAE6Af8CAAE6Af8CAAE6Af8CAAE8
- Af8CAAE+Af8BAAEBAU4B/wETAYABwQH/ATYB4wH7Af8BOgHuAv8BOgHuAv8BJwHGAeoB/wEAARsBjAH/
- AQMBFAFJAf8BJQGdAb0B/wEMAS4BiwH/AgIBWQH/EwABAQMKAQ0DKgFAAU4CTwGXAVgCXAHRA1wB6gNn
- AfICWQFcAfUBZAGCAYgB+wHaAeoB9QH/AdgD/wHDAfsC/wHFAf0C/wHvA/8DYgH2AVACUgGjAycBOgMH
- AQlTAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADEgH/A8AB/wMSAf8BqQEv
- ASUB/wGvATABJgH/Aa8BMAEmAf8BrwEwASYB/wGlASsBIgH/AVMBFgEPAf8BIAEpAT4B/wGYAdoB8QH/
- ASwBjwG8Af8BAAEyAU4B/wFPAQoBIAH/AUMBFgExAf8BMgEcATcB/wEyARwBNwH/ATYBGwE2Af8BSwES
- AS0B/wE5AQ0BHgH/AQABQgGQAf8BWgG8AeAB/wGEAbsB4QH/ATEBEwEZAf8BkQEiARkB/wGvATABJgH/
- Aa8BMAEmAf8BrwEwASYB/wGiAS0BJAH/AxoB/wPAAf8DEgH/AgIBWgH/AQwBKQGLAf8BIwGUAbQB/wEA
- AQ4BQwH/AQABIgGMAf8BKwHaAesB/wEwAeQB9QH/ATAB4gH1Af8BKwHZAfMB/wElAcIB6QH/ARYBkwHR
- Af8BBgEyAaMB/wIAATcB/wIAATAB/wIAATAB/wIAATAB/wIAATAB/wIAATAB/wIAATAB/wIAATMB/wIA
- ATMB/wIAATsB/wEAASEBkAH/ARcBngHWAf8BKwHRAfAB/wElAcMB6gH/AQwBUgG9Af8BAAEFAVAB/wEA
- ARABSQH/ASUBnQG9Af8BDAEuAY4B/wICAVoB/xMAAQEDDwEUAzsBYwNeAdgE/wH7A/8B8wP/Ae4D/wHi
- A/8B0QP/AcYB/gL/AcQB/AL/AdYD/wHnAfEB+AH/AVcCXAHfA0QBeQMYASIDBAEGUwAB/wMAAf8DAAH/
- AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wPHAf8DEgH/AaYBKwEkAf8BrAEsASUB/wGs
- ASwBJQH/AawBLAElAf8BrAEsASUB/wGaASQBHQH/AUoBFAESAf8BPQGQAbIB/wGWAdIB8QH/AQIBRQGi
- Af8BAAE+AYsB/wEAAUYBkwH/AQABTAGaAf8BAgFOAZwB/wEAAUsBlwH/AQABRgGTAf8BAAE5AYsB/wEn
- AYkBuwH/AZgB2AHzAf8BIQEvAUUB/wFSARQBDwH/AasBKwEkAf8BrAEsASUB/wGsASwBJQH/AawBLAEl
- Af8BnwEqASMB/wMaAf8DxwH/AxIB/wIEAYUB/wEQATABjQH/ASUBlwG0Af8BAAEMAUEB/wEAAQMBQgH/
- AQABJgGMAf8BAAEoAZIB/wEAASgBkgH/AQABJgGQAf8BAAEhAYYB/wEAARQBVAH/AQABBQFEAf8CAAEt
- Af8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEtAf8CAAEuAf8CAAE5
- Af8BAAEMAVQB/wEAASIBigH/AQABGgGFAf8BAAEFAU0B/wIAAToB/wEAAQ0BQgH/ASUBnAG5Af8BEAEx
- AZEB/wIEAYUB/xMAAQEDDQESAzgBXAFYAlsBywGSAZ8BqAH+AeoD/wHNA/8BxAH8Av8BwwH7Av8BwwH7
- Av8BxgH+Av8B2AP/AfMB+AH8Af8DXQHwA1IBqQMuAUcDDAEQAwIBA1MAAf8DAAH/AwAB/wMAAf8DAAH/
- RAADEgH/A88B/wMSAf8BowEoASIB/wGoASkBIwH/AagBKQEjAf8BqAEpASMB/wGoASkBIwH/AagBKQEj
- Af8BjQEcARcB/wElARcBIgH/AYwB0gHzAf8BwwHwAfgB/wHVAe4B9wH/AeAB9wH8Af8B5wP/AegD/wHm
- Af4C/wHdAfIB+gH/Ac0B7QH3Af8BtQHvAfsB/wFLAasBzwH/AUABEAESAf8BlgEhARsB/wGoASkBIwH/
- AagBKQEjAf8BqAEpASMB/wGoASkBIwH/AZ0BJwEhAf8DGwH/A88B/wMSAf8CCgGKAf8BEQEzAZgB/wEm
- AZUBtgH/ARABNwGIAf8BAgEQAUAB/wECARABRQH/AQIBEAFFAf8BAgEQAUUB/wECARABPwH/AQIBEAE/
- Af8BAgEQAT8B/wECARABOgH/AQABCgE5Af8BAAEKATkB/wEAAQoBOQH/AQABCgE5Af8BAAEKATkB/wEA
- AQoBOQH/AQABCgE5Af8BAAEKATkB/wECARABOgH/AQIBEQFAAf8BAgESAUEB/wECARIBQQH/AQIBEgFH
- Af8BAgESAUcB/wECAREBRgH/AQIBEAFAAf8BDgE3AYcB/wElAZQBtQH/AREBMwGYAf8CCgGKAf8TAAEB
- AwcBCgMmATgDSgGLAVkCXAHPAWEBbwFzAfgB8wH4AfwB/wHyA/8B5gP/AegD/wH6A/8BkgGiAawB/gNh
- Ae4DVQGyAzgBXAMVAR0DBQEHAwABAVMAAf8DAAH/AwAB/wMAAf8DAAH/RAADEgH/A9cB/wMSAf8BnwEl
- ASEB/wGkASYBIgH/AaQBJgEiAf8BpAEmASIB/wGkASYBIgH/AaQBJgEiAf8BmQEhAR0B/wE6AQ4BEgH/
- Aa8B3AHkAf8B4gHwAfIB/wGNAaQBrwH/AT4BRAFQAf8BLAEoATYB/wEtASkBNwH/AS8BLAE5Af8BSQFV
- AYYB/wGlAcABxQH/Ae8C+wH/ATUBggGXAf8BSwEPAQ4B/wGjASUBIQH/AaQBJgEiAf8BpAEmASIB/wGk
- ASYBIgH/AaQBJgEiAf8BmQEkASAB/wMbAf8D1wH/AxIB/wILAZQB/wEQAS4BmwH/ATEBogHDAf8BRAG3
- Ac0B/wFAAbkBzQH/AUABuQHNAf8BPgG5Ac0B/wE9AbkBzQH/AT0BuQHNAf8BPQG5Ac0B/wE9AbkBzQH/
- AT0BuQHNAf8BPQG5Ac0B/wE9AbkBzQH/AT0BuQHNAf8BPQG5Ac0B/wE9AbkBzQH/AT0BuQHNAf8BPQG5
- Ac0B/wE9AbkBzQH/AUABuQHNAf8BQAG8Ac8B/wFAAb8B0gH/AUABvwHSAf8BQAG/AdIB/wFAAb8B0gH/
- AT4BvAHPAf8BPQG5Ac0B/wE8AbYByAH/ASwBngHAAf8BEAEtAZsB/wILAZQB/xQAAwQBBQMRARcDKQE/
- A0QBeQFVAlYBtAFcAmEB3ANfAfMBZgFyAXcB+gFmAXIBdwH6A10B7QFbAl4B0AFQAlEBnwM2AVkDGAEh
- AwcBCgMBAQJXAAH/AwAB/wMAAf8DAAH/AwAB/0QAAxIB/wPfAf8DEgH/AZwBIgEgAf8BoQEjASEB/wGh
- ASMBIQH/AaEBIwEhAf8BoQEjASEB/wGhASMBIQH/AZsBIAEeAf8BQAENARAB/wGPAZYBoQH/AS4BCwET
- Af8BSAINAf8BSwENAQwB/wGBARUBEwH/AYEBFQETAf8BgQEVARMB/wFKAQ0BDAH/AUUBDQEOAf8BIgEW
- ASUB/wFSAVYBiAH/AUoBDQEMAf8BoAEiASAB/wGhASMBIQH/AaEBIwEhAf8BoQEjASEB/wGhASMBIQH/
- AZYBIQEfAf8DHAH/A98B/wMSAf8CDAGeAf8BDQEUAZQB/wEcATYBnwH/AS8BVgGuAf8BMgFaAasB/wEy
- AVoBqwH/ATABWgGrAf8BLwFaAacB/wEvAVoBpgH/AS0BVwGmAf8BKQFUAaYB/wEpAVQBogH/ASkBVAGh
- Af8BKQFUAaEB/wEpAVQBoQH/ASkBVAGhAf8BKQFUAaEB/wEpAVQBoQH/ASkBVAGhAf8BKQFUAaEB/wEt
- AVQBogH/AS0BVAGmAf8BMAFXAaYB/wEyAVoBpgH/ATIBWgGnAf8BMgFaAasB/wEwAVoBqwH/AS8BWgGr
- Af8BLAFWAa4B/wEaATYBnwH/AQ0BFAGUAf8CDAGeAf8XAAEBAwQBBgMMARADHAEoAzEBTQNCAXUDTgGZ
- AVMCVQGtA1IBqQNLAY4BPAI9AWcDKQE+AxQBGwMHAQkDAgEDWwAB/wMAAf8DAAH/AwAB/wMAAf9EAANM
- AfMD3wH/AykB/wGKAhwB/wGbAR4BHwH/AZsBHgEfAf8BmwEeAR8B/wGbAR4BHwH/AZsBHgEfAf8BmgEd
- AR4B/wFFAQoBCwH/AT8BCgENAf8BRwIKAf8BmQEdAR4B/wGaAR4BHwH/AZsBHgEfAf8BmwEeAR8B/wGb
- AR4BHwH/AZoBHQEeAf8BkgEaARsB/wFGAgoB/wE8AQoBDgH/AUcCCgH/AZoBHgEfAf8BmwEeAR8B/wGb
- AR4BHwH/AZsBHgEfAf8BmwEeAR8B/wFXARoBGwH/AzEB/wPdAf8DTgHwAhEBpAH/AgwBngH/AgsBlAH/
- AgoBjwH/AgoBjAH/AgoBhgH/AgoBggH/AgUBWQH/AgQBWQH/AgMBVgH/AgIBUwH/AgIBUQH/AgIBUQH/
- AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUwH/AgMBVgH/
- AgQBWQH/AgUBWQH/AgoBggH/AgoBhgH/AgoBjAH/AgoBjwH/AgsBlAH/AgwBngH/AhEBpAH/GwABAQMC
- AQMDBgEIAwwBEAMWAR4DIgEyAyoBQAMpAT4DHwEsAxIBGQMKAQ0DBAEGAwEBAl8AAf8DAAH/AwAB/wMA
- Af8DAAH/RAADVwG9A78B/wOUAf8BPQEbAR0B/wGKARoBIAH/AZMBGAEfAf8BkwEYAR8B/wGTARgBHwH/
- AZMBGAEfAf8BkwEYAR8B/wGSARgBHgH/AY4BFgEdAf8BkgEYAR8B/wGTARgBHwH/AZMBGAEfAf8BkwEY
- AR8B/wGTARgBHwH/AZMBGAEfAf8BkwEYAR8B/wGTARgBHwH/AZIBGAEeAf8BjQEWARwB/wGSARgBHwH/
- AZMBGAEfAf8BkwEYAR8B/wGTARgBHwH/AZMBGAEfAf8BgAEbASAB/wEyARoBHAH/A7QB/wO0Af8DVAGu
- AhQBrAH/AhQBqQH/AhQBpgH/Ag8BpgH/Ag4BpgH/Ag4BowH/Ag4BnwH/AgwBngH/AgwBlwH/AgwBlwH/
- AgwBlgH/AgwBlgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/
- AgwBlgH/AgwBlgH/AgwBlwH/AgwBlwH/AgwBngH/Ag4BnwH/Ag4BowH/Ag4BpgH/Ag8BpgH/AhQBpgH/
- AhQBqQH/AhQBrAH/JAADAQECAwMEBAQGAQgDBgEIAwQBBgMDAQQDAAEBZwAB/wMAAf8DAAH/AwAB/wMA
- Af9EAAM0AVQDQQH/A+4B/wOTAf8DKAH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/
- AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMxAf8DsgH/
- A+oB/wMxAf8DLQFFAhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhABqAH/
- Ag8BpAH/AgwBogH/AgwBnwH/AgwBnwH/AgwBnAH/AgwBnAH/AgwBnAH/AgwBnAH/AgwBnAH/AgwBnAH/
- AgwBnAH/AgwBnAH/AgwBnwH/AgwBnwH/AgwBogH/Ag8BpwH/AhABqAH/AhQBrAH/AhQBrAH/AhQBrAH/
- AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH//wAFAANKAY0DQAH/A80B/wP5Af8D+wH/A/sB/wP7Af8D+wH/
+ Af8D3QH/A90B/wPIAf8DogH/AyMB/wNGAYEEAANIAYUCCwGkAf8CCwGiAf8CCwGhAf8CCwGhAf8CCwGh
+ Af8CCwGhAf8CCwGhAf8CCAGgAf8CCAGeAf8CCAGbAf8CCAGZAf8CCAGZAf8CCAGXAf8CCAGVAf8CCAGV
+ Af8CCAGVAf8CCAGVAf8CCAGXAf8CCAGZAf8CCAGZAf8CCAGbAf8CCAGeAf8CCAGgAf8CCwGhAf8CCwGh
+ Af8CCwGhAf8CCwGhAf8CCwGhAf8CCwGiAf8CCwGkAf8DSAGFVwABAQMCBAMEBAEGAwQBBgMDAQQDAQEC
+ AwABAYwAAzcBWgM+Af8D2wH/A4sB/wMoAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMR
+ Af8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AygB/wOH
+ Af8DzQH/AyoB/wMrAUICCwGkAf8CCwGiAf8CCAGdAf8CBgGYAf8CBgGXAf8CBgGXAf8CBgGXAf8CBgGX
+ Af8CAwGRAf8CAwGPAf8CAwGMAf8CAwGKAf8CAwGKAf8CAQGIAf8CAAGGAf8CAAGGAf8CAAGGAf8CAAGG
+ Af8CAwGIAf8CAwGKAf8CAwGKAf8CAwGMAf8CAwGPAf8CAwGVAf8CBgGXAf8CBgGXAf8CBgGXAf8CBgGX
+ Af8CBgGYAf8CCAGdAf8CCwGiAf8CCwGkAf9QAAMCAQMDBgEIAw0BEgMaASQDIwEzAyEBMAMWAR4DCgEO
+ AwQBBgMAAQGIAANZAcMDsgH/A4oB/wFOATwBIgH/AbkBkwE0Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6
+ Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wG9
+ AZUBMgH/AaMBgAEmAf8BvQGVATIB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6
+ Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wG5AZMBNAH/AVkBRAElAf8DhQH/A6MB/wNU
+ AasCCwGjAf8CCAGaAf8CBAGRAf8CAAGNAf8CAAGNAf8CAAGKAf8CAAGGAf8CAAGBAf8CAAFYAf8CAAFW
+ Af8CAAFRAf8CAAFQAf8CAAFQAf8CAAFQAf8CAAFMAf8CAAFJAf8CAAFJAf8CAAFMAf8CAAFQAf8CAAFQ
+ Af8CAAFQAf8CAAFRAf8CAAFWAf8CAAGAAf8CAAGGAf8CAAGGAf8CAAGKAf8CAAGNAf8CAAGNAf8CBAGR
+ Af8CCAGaAf8CCwGjAf9MAAMCAQMDBwEKAxcBIAMwAUwBRQJGAX4BTwJRAZwBTQJOAZYDQQFyAyoBQQMS
+ ARkDBQEHAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/RAADQQH5A8oB/wMmAf8BuQGPATMB/wHVAaIBOwH/
+ AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGi
+ ATsB/wHVAaIBOwH/AcQBlQEzAf8BiQFFAR8B/wEaASkBLwH/AZQBSgEeAf8B0wGhAToB/wHVAaIBOwH/
+ AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGi
+ ATsB/wHAAZMBNQH/Ax8B/wPFAf8DTgHwAgkBmQH/AgABiwH/AgABVgH/AgABUgH/AgABSgH/AgABSgH/
+ AgABRQH/AgABQgH/AgABQQH/AgABPgH/AgABOgH/AgABOgH/AgABOQH/AgABNgH/AgABMgH/AgABMgH/
+ AgABMgH/AgABMgH/AgABNgH/AgABOQH/AgABOgH/AgABOgH/AgABPgH/AgABQQH/AgABRAH/AgABSgH/
+ AgABSgH/AgABSgH/AgABUgH/AgABVgH/AgABiwH/AgkBmQH/SAADAQECAwcBCQMYASIDOAFeAVMCVQGt
+ AV0CYQHiA20B9wNlAfQBXgJhAdoDUAGaAy0BRgMOARMDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMR
+ Af8DwgH/AxMB/wHMAZUBOAH/AdUBmwE6Af8B1QGbAToB/wHVAZsBOgH/AdUBmwE6Af8B1QGbAToB/wHV
+ AZsBOgH/AdUBmwE6Af8B1QGbAToB/wHVAZsBOgH/Ab8BiwEwAf8BkwFFAR0B/wEZAScBMAH/AQABLwGO
+ Af8BSAE1ASEB/wGVAUYBHQH/Ac8BlwE3Af8B1QGbAToB/wHVAZsBOgH/AdUBmwE6Af8B1QGbAToB/wHV
+ AZsBOgH/AdUBmwE6Af8B1QGbAToB/wHVAZsBOgH/AcUBkAE2Af8DGQH/A8IB/wMRAf8CBwGRAf8BAQEG
+ AYIB/wEBAR0BhAH/AQcBJgGFAf8BBwEmAYAB/wEHASgBgwH/AQcBKAGDAf8BBwEoAYMB/wEHASgBWAH/
+ AQcBKAFYAf8BBwEoAVgB/wEHASgBWAH/AQcBKAFTAf8BBwElAVAB/wEHASUBUAH/AQcBJQFQAf8BBwEl
+ AVAB/wEHASUBUAH/AQcBJQFQAf8BBwElAVAB/wEHASUBVQH/AQcBJQFVAf8BBwElAVUB/wEHASUBVQH/
+ AQcBJgGDAf8BBwEoAYMB/wEHASgBgwH/AQcBKAGDAf8BBwEoAYgB/wEDAR0BhwH/AQEBBgGDAf8CBwGR
+ Af9HAAEBAwYBCAMWAR4DOAFdA1UBtQNkAfEB8wH4AfwB/wHtA/8B8wP/AZABoAGqAf4DXwHgA0gBhQMf
+ ASwDBQEHLwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMRAf8DtAH/AxEB/wHOAZABNwH/AdUBlAE5Af8B1QGU
+ ATkB/wHVAZQBOQH/AdUBlAE5Af8B1QGUATkB/wHVAZQBOQH/AdQBkwE5Af8B0AGRATcB/wG0AVcBKgH/
+ AYoBPQEdAf8BDwElATUB/wEAARMBUgH/AQABEwFNAf8BAAEaAVMB/wEyASsBJQH/AZIBQAEcAf8BuQGA
+ ASwB/wHSAZIBOAH/AdUBlAE5Af8B1QGUATkB/wHVAZQBOQH/AdUBlAE5Af8B1QGUATkB/wHVAZQBOQH/
+ AcUBiwE1Af8DGAH/A7QB/wMRAf8CAgGKAf8BBgEfAYcB/wEYAYUBqQH/AS8BqwHUAf8BSAHRAd4B/wFN
+ AdQB4QH/AVAB1AHhAf8BUgHUAeEB/wFSAdQB4QH/AVAB1AHhAf8BTQHUAeEB/wFNAdQB4QH/AU0B0wHg
+ Af8BTQHRAd4B/wFNAdEB3gH/AU0B0QHeAf8BTQHRAd4B/wFNAdEB3gH/AU0B0QHeAf8BTQHRAd4B/wFN
+ AdEB3gH/AU0B0QHeAf8BTQHRAd4B/wFNAdEB3gH/AU0B0QHhAf8BTQHUAeEB/wFNAdQB4QH/AUgB1AHh
+ Af8BMAGyAdgB/wEaAYUBrwH/AQYBHwGLAf8CAgGKAf9DAAEBAwUBBwMUARsDNQFWA1QBrwFaAl0B8AHz
+ AfgB/AH/AdQD/wHEAfwC/wHGAf4C/wHoA/8BcwGDAYcB+wFVAlYBsQMtAUUDBwEKLwAB/wMAAf8DAAH/
+ AwAB/wMAAf9EAAMRAf8DpwH/AxEB/wHOAYcBNgH/AdUBiwE4Af8B1QGLATgB/wHLAYQBNAH/Ab0BVQEt
+ Af8BxAGAATEB/wHAAVcBLwH/AZUBOwEcAf8BjQE4AR0B/wE2ASkBJQH/AQABHQFKAf8BAAECAUAB/wEY
+ AZEBsgH/AU0B1QHmAf8BAAE2AYkB/wEAAQgBRgH/AQABIQFBAf8BTAEvASAB/wGSAToBHAH/AbEBTgEo
+ Af8BwwGAATAB/wHDAYABMAH/AboBVAEsAf8B0wGKATcB/wHVAYsBOAH/AcUBggE0Af8DGAH/A6cB/wMR
+ Af8CAQGBAf8BCgErAZAB/wErAaEBwgH/ARwBVQGkAf8BEAEnAVYB/wERAScBhAH/ARIBJwGIAf8BEwEn
+ AYgB/wETAScBgQH/ARIBJwGBAf8BEQEnAYEB/wERAScBVgH/AREBJwFVAf8BEQEnAVUB/wERAScBVQH/
+ AREBJwFVAf8BEQEnAVUB/wERAScBVQH/AREBJwFVAf8BEQEnAVUB/wERAScBgQH/AREBJwGBAf8BEQEn
+ AYEB/wERAScBgQH/ARMBKAGIAf8BFgErAYgB/wERAScBhAH/ARABJwFWAf8BHAFXAaQB/wErAaEBwwH/
+ AQoBKwGRAf8CAQGBAf8/AAEBAwQBBgMSARgDMgFQA1IBqQFZAmQB7AGQAaABqgH+AdkD/wHEAfwC/wHD
+ AfsC/wHDAfsC/wHXA/8CqAGqAf0BVwJZAb8DMgFQAwgBCy8AAf8DAAH/AwAB/wMAAf8DAAH/RAADEQH/
+ A5sB/wMRAf8BzgFZATQB/wHVAYMBNgH/AcsBVwEyAf8BgwEwAR0B/wFCASgBIAH/AVABKwEeAf8BSAEp
+ AR8B/wEZASYBMQH/AQABIAFOAf8BAAEIAUoB/wEAASUBVAH/AUcB0AHnAf8BUgHdAfEB/wE3AacBsQH/
+ AVgB4QH3Af8BLgGpAcUB/wEAAQkBQAH/AQABFAFRAf8BAAEjAUYB/wEqASYBKAH/AU4BKgEeAf8BTwEq
+ AR4B/wE9ASgBJAH/AZQBNQEaAf8B0wGCATUB/wHFAVUBMgH/AxcB/wObAf8DEQH/AgEBWAH/AQsBLAGL
+ Af8BJAGcAb0B/wECARMBQwH/AQABBgFPAf8BBwEtAZgB/wEGATABnQH/AQYBLgGdAf8BBgEtAZwB/wEG
+ AS0BlgH/AQUBLAGVAf8BCAEqAZEB/wEAAQQBTwH/AgABRgH/AgABRgH/AgABRgH/AgABRgH/AgABRgH/
+ AQABAgFNAf8BBwEmAZIB/wEGASgBlAH/AQABHgGNAf8BCgE0AZgB/wEAARcBjgH/AQoBNAGfAf8BBgEk
+ AZMB/wECAQcBTwH/AgABQAH/AQIBEQFBAf8BJAGXAbQB/wELASsBiAH/AgEBWAH/OwABAQMEAQYDEAEV
+ AywBQwFPAlABmwFYAmIB6QGQAaABqgH+Ad4D/wHGAf4C/wHDAfsC/wHDAfsC/wHIA/8B7AP/AXMBhAGH
+ AfsBVQJWAbEDLQFFAwcBCi8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMR
+ Af8DkwH/AxEB/wHMAVEBMgH/AdMBVAE0Af8BzgFRATIB/wGKAS0BGgH/AQABNQGEAf8BAAEtAY0B/wEA
+ ASUBiAH/AQABGwGBAf8BCQFQAZ8B/wFLAdUB5gH/AZAB7wH+Af8BLgGbAbwB/wE6ARABJwH/AZEBDAEl
+ Af8BKQEmAT4B/wFFAcoB5gH/AZAB7QH6Af8BNQG0AcoB/wEAATYBkgH/AQABHQGBAf8BAAEmAYcB/wEA
+ ATcBlgH/ARcBJwE6Af8BkwEvARkB/wHSAVQBNAH/AcMBTQEwAf8DFgH/A5MB/wMRAf8CAQFYAf8BCwEt
+ AYsB/wEkAZ0BvQH/AQIBEwFKAf8BBQEsAZUB/wFBAdYB6QH/AUIB1wHwAf8BQQHSAfAB/wFBAdEB8AH/
+ AUEB0QHuAf8BPgHNAesB/wE7AcUB5wH/AQABEAGKAf8CAwFQAf8CAwFQAf8CAwFQAf8CAwFQAf8BAgEE
+ AVEB/wEAARIBjAH/ATwBwQHiAf8BNgHEAegB/wEUAYoBzwH/AUoB4QH1Af8BAQFKAcMB/wFMAeEB9QH/
+ AScBogHVAf8BAAERAZIB/wIAAUwB/wECAREBSQH/ASIBlAG0Af8BCwEoAYgB/wIBAVgB/zgAAwQBBQMN
+ ARIDKAE8A0oBigFeAmEB2gKoAakB/QHiA/8BxgH+Av8BwwH7Av8BwwH7Av8ByQP/AekD/wKoAakB/QFc
+ AmEB3ANHAYIDHQEqAwUBBy8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMR
+ Af8DjwH/AxEB/wHJAU4BMQH/AdABUQEzAf8B0AFRATMB/wGmATkBIQH/AR8BIwExAf8BBQFPAaMB/wE3
+ AasB0gH/AZIB6wH4Af8BiQHqAfcB/wE2AaIBvAH/ATYBIwE8Af8BmgEXAT0B/wG/ASoBiwH/AcEBLwGT
+ Af8BuwEoAYIB/wGCARABLwH/AS4BPwFZAf8BRQHDAdsB/wGTAfAB/AH/AYYB4QHzAf8BJAGRAbkB/wEA
+ AUoBnwH/AUwBJAEcAf8BvAFGASsB/wHQAVEBMwH/AcABSgEvAf8DFgH/A48B/wMRAf8CAQFYAf8BCwEt
+ AYsB/wEkAZ0BvQH/AQIBEwFOAf8BAgEuAZ8B/wFIAeIB9QH/AU8B7AL/AVQB7gL/AVUB7gL/AVUB7gL/
+ AVUB7gL/ATQBwAHrAf8BAAEQAY8B/wIDAVUB/wIDAVIB/wIDAVAB/wIDAVEB/wEAAQgBggH/ARYBVAG+
+ Af8BRgHaAfgB/wEWAZgB3wH/ATUBxAHxAf8BKQG2AeoB/wEhAawB5QH/AUEB1gH5Af8BGwGfAeEB/wEk
+ AZ8B0wH/AQIBHQGMAf8BAQERAUwB/wEfAZQBtAH/AQsBKAGIAf8CAQFYAf8kAAMBAQIDAwQEBAYECAEL
+ Aw8BFAMkATYBRgJHAYABWAJcAdEBcwGEAYgB+wHpA/8ByAP/AcMB+wL/AcMB+wL/AcwD/wHwA/8BcwGE
+ AYgB+wFZAl0B1wNMAZIDKwFCAw0BEgMDAQQvAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIA
+ Av8CAAL/JAADEQH/A48B/wMRAf8BxwFMATEB/wHOAU8BMwH/Ac4BTwEzAf8BpgE5ASIB/wIfAS0B/wEA
+ AT8BkAH/AR4BhwGpAf8BEQEmAT4B/wFFAQkBIAH/AaUBGAFAAf8BwgErAYwB/wHLAToBpAH/AdIBQgGx
+ Af8B1AFDAbQB/wHRAUABsAH/AcoBOQGiAf8BvgEpAYQB/wGSARIBNgH/ATcBDgEgAf8BCQE5AVcB/wEj
+ AYoBrAH/AQABNAGIAf8BSwEkARwB/wG9AUUBLAH/Ac4BTwEzAf8BvwFJAS8B/wMWAf8DjwH/AxEB/wIB
+ AVgB/wELASwBiwH/ASQBnAG5Af8BAgETAUgB/wECAS4BnwH/AUgB4QH1Af8BTQHnAv8BTgHoAv8BTwHo
+ Av8BUQHqAv8BVQHuAv8BNAHAAesB/wEAARABjgH/AgMBTwH/AgMBTgH/AgMBTQH/AgMBTQH/AQABCQGB
+ Af8BLAGhAdQB/wFNAeYC/wEDAUYBwQH/AU0B5gL/ARUBjwHUAf8BOgHJAfEB/wE6AckB8QH/ARUBjwHV
+ Af8BQwHcAfUB/wEHASwBmAH/AQIBEQFHAf8BIwGUAbQB/wELASgBiAH/AgEBWAH/HAADAgEDAwYBCAMN
+ AREDFwEgAyIBMgMqAUADLAFDAzEBTgNHAYIBWQJcAcwBagFzAXcB+gHtA/8ByQP/AcMB+wL/AcMB+wL/
+ Ac0D/wH4A/8BXAFuAXIB+AFcAl4BzgFIAkkBhwMrAUIDEQEXAwQBBgMAAQEvAAH/AwAB/wMAAf8DAAH/
+ AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADEQH/A5AB/wMRAf8BxQFKATAB/wHMAU0BMgH/AcwBTQEy
+ Af8BpAE2ASEB/wEcAR8BLwH/AQABOQGJAf8BAAE+AY0B/wEoARgBMgH/AbwBIQFWAf8BxAExAZwB/wHR
+ AUEBrwH/AdwBTQHBAf8B5gFWAc0B/wHpAVkB0gH/AeYBVwHNAf8B3QFOAcEB/wHQAUEBrwH/AcUBMgGb
+ Af8BswEdAUUB/wEAASYBRwH/AQoBRQGQAf8BAAEuAYMB/wFKASMBHAH/AbsBRAErAf8BzAFNATIB/wG9
+ AUcBLgH/AxYB/wOQAf8DEQH/AgEBWAH/AQsBLAGLAf8BJAGbAbgB/wECARIBRgH/AQUBJgGSAf8BMQG7
+ AeAB/wE1AbwB5gH/ATUBvwHmAf8BPAG/AeQB/wE8AcEB5wH/ATwBxQHrAf8BNwG/AeQB/wEAAQ0BhAH/
+ AgIBTQH/AgEBTQH/AgABTQH/AgABTQH/AQABAQFQAf8BAAEKAYUB/wEAARABjQH/AQABCwGIAf8BAAEQ
+ AY8B/wEAAQwBiwH/AQABDwGUAf8BAAEQAZYB/wEAARABkwH/AQABEAGSAf8BAAEEAVEB/wECAREBRgH/
+ ASQBlAG0Af8BCwEoAYgB/wIBAVgB/xcAAQEDBAEFAwoBDgMaASUDMQFNA0QBeQFPAlABmwFTAlQBrANU
+ Aa4DVQG1AVoCXgHYA20B9wH0A/8BygP/AcMB+wL/AcQB/AL/AdEH/wNtAfcBWAJbAcYDQwF4AyYBOAMQ
+ ARUDBAEGAwABATMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMRAf8DkgH/
+ AxEB/wHDAUcBLwH/AcoBSgExAf8ByAFJATAB/wGMASgBFwH/AQUBHgE7Af8BAAE+AYwB/wEAAUoBnQH/
+ AUUBFgEyAf8BwgErAZAB/wHNATwBqwH/Ad4BUAHEAf8B7wGHAdoB/wH7AZMB7AH/Af0BmAH0Af8B+wGT
+ AewB/wHvAYcB2gH/Ad4BUAHEAf8BzgE8AawB/wG9ASgBhAH/ARQBKAFIAf8BEgFRAZ0B/wEAAS0BhAH/
+ ATgBHwEhAf8BsAE8ASYB/wHKAUoBMQH/AbsBRAEtAf8DFgH/A5IB/wMRAf8CAQFYAf8BCwEsAYoB/wEk
+ AZcBtgH/AQIBEQFGAf8BAAECAU8B/wEAAQ8BjwH/AQABEQGXAf8BAAERAZcB/wEAAREBjwH/AQABEQGP
+ Af8BAAERAY8B/wEAAQ4BiAH/AQABAgFRAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFN
+ Af8CAgFNAf8CAwFPAf8CAwFVAf8CAwFVAf8CAwFZAf8CAwGDAf8CAwGDAf8CAwFYAf8CAAFHAf8BAgER
+ AUYB/wEkAZQBtAH/AQsBKAGIAf8CAQFYAf8TAAEBAwQBBgMPARQDJAE1AT8CQAFvA1YBswFbAmEB4QNl
+ AfQBZAFxAXYB+gFcAW4BcgH4A1kB9QFTAW4BdQL6A/8BzQP/AcMB+wL/AcQB/AL/AdQD/wHzAfgB/AH/
+ AlkBWgH1AVYCWAHBA0ABcAMgAS4DCwEPAwQBBQMAAQEbAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
+ AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
+ AgAC/wwAAxEB/wOWAf8DEQH/AcEBRAEvAf8ByAFHATAB/wHEAUUBLgH/AYcBJQEXAf8BAAEkAU4B/wES
+ AUwBlwH/AQQBRwGXAf8BgAEVATYB/wHGATEBmgH/AdUBRQG3Af8B6gGAAdIB/wH8AZYB8QL/AagB/gL/
+ Aa8D/wGoAf4B/wH8AZYB8QH/AeoBgAHSAf8B1gFFAbcB/wHFAS8BkwH/ASsBIQE9Af8BEAFTAaAB/wEA
+ ATkBjQH/ARYBHgEyAf8BjAEmARYB/wHHAUcBMAH/AbkBQQEtAf8DFwH/A5YB/wMRAf8CAQFXAf8BCwEq
+ AYUB/wEhAZUBtAH/AQEBEQFGAf8CAAFHAf8CAwFYAf8CAwGDAf8CAwGDAf8CAwFVAf8CAwFVAf8CAwFS
+ Af8CAwFOAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAQFNAf8CAwFP
+ Af8CAwFVAf8CAwFVAf8CAwFVAf8CAwGDAf8CAwGDAf8CAwFYAf8CAAFHAf8BAgERAUYB/wEkAZQBtAH/
+ AQsBKAGIAf8CAQFYAf8QAAMCAQMDCwEPAyMBNAFEAkUBfAFXAloBxQNtAfcB8wH4AfwB/wHxA/8B5wP/
+ AeoD/wHvA/8B5AP/Ac0D/wHDAfsC/wHGAf4C/wHaA/8B8wH4AfwB/wFkAmUB9AFWAlgBvAM9AWkDHQEq
+ AwoBDQMDAQQjAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/
+ AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxEB/wOaAf8DEQH/Ab4BQwEu
+ Af8BxQFFAS8B/wGvATkBJgH/AUUBHwEaAf8BAAEuAYsB/wEpAYkBqwH/AQIBNgFZAf8BqQEdAUcB/wHI
+ ATUBoQH/AdoBSgG8Af8B8AGIAdwB/wH+AZ8B+gL/AbQD/wHCA/8BtAL/Af4BnwH6Af8B8AGIAdwB/wHb
+ AUoBvQH/AckBNAGdAf8BUQEWATUB/wEMAVABnQH/ARgBVQGiAf8BAAEjAU4B/wGGASQBFgH/AcMBRAEu
+ Af8BtgFAASwB/wMXAf8DmgH/AxEB/wIBAVYB/wELASgBgwH/ASMBlAG0Af8BAgERAUYB/wIAAUcB/wID
+ AVgB/wIDAYMB/wIDAYMB/wIDAVUB/wIDAVUB/wIDAVAB/wIDAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIA
+ AU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIDAU0B/wIDAVEB/wIDAVUB/wIDAVUB/wIDAYMB/wID
+ AYMB/wIDAVgB/wIAAUcB/wECAREBRgH/ASQBlAG0Af8BCwEoAYgB/wIBAVgB/xAAAwMBBAMYASEDPQFp
+ AVcCWQG/AW0BcwF3AfoB8QP/Ac4D/wHEAfwC/wHDAfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHG
+ Af4C/wHeA/8BkAGgAaoB/gFOAl0B8AFVAlcBtwM7AWMDGgElAwkBDAMDAQQnAAH/AwAB/wMAAf8DAAH/
+ AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
+ AgAC/wIAAv8CAAL/AgAC/wwAAxEB/wOfAf8DEQH/AbsBQAEtAf8BwAFBAS0B/wGGASMBFQH/AQgBHQE2
+ Af8BAAE8AZQB/wEwAZUBuQH/ASABJwFCAf8BuAEgAVQB/wHHATUBoAH/AdkBSQG7Af8B7wGFAdoB/wH+
+ AZ0B+gL/AbED/wG8A/8BsQL/Af4BnQH6Af8B7wGFAdoB/wHZAUkBvAH/AccBNAGfAf8BpAEaAUMB/wEL
+ AUABiQH/ATYBlwG4Af8BAAEsAYoB/wFEAR4BGwH/Aa0BNwElAf8BswE9ASsB/wMXAf8DnwH/AxEB/wIB
+ AVYB/wELASgBgwH/ASQBlAG0Af8BAgERAUYB/wEAAQ4BWAH/AQoBOAGsAf8BCwE9AbYB/wEJATsBsAH/
+ AQMBKgGiAf8BAAEUAY4B/wEAAQcBWAH/AgMBTwH/AgABTQH/AgABTQH/AgABTQH/AgABTQH/AgABTQH/
+ AgABTQH/AgABTQH/AgABTQH/AgMBTQH/AgMBUAH/AgMBVQH/AgMBVQH/AgMBgwH/AgMBgwH/AgMBWAH/
+ AgABRwH/AQIBEQFGAf8BIwGUAbQB/wELASgBiAH/AgEBWAH/EAADBAEGAyMBMwFNAk4BlQNlAfQE/wHa
+ A/8B2QP/AeAD/wHdA/8BzwP/AcUB/QL/AcMB+wL/AcMB+wL/AdMD/wGQAaABqgH+AU4CXQHwAVUCVwG3
+ AzoBYAMYASIDCAELAwIBAysAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
+ AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/DAADEQH/A6QB/wMR
+ Af8BuQE9ASsB/wGgAS8BHwH/AT8BGwEZAf8BAAEdAVUB/wEfAVQBogH/AQcBRQGSAf8BTQENAR4B/wG3
+ ASABVwH/AcIBMQGbAf8B0wFDAbMB/wHmAVgBzwH/AfoBkQHrAv8BoAH8Av8BqAH+Av8BoAH8Af8B+gGR
+ AesB/wHmAVgBzwH/AdMBQwG0Af8BwwEwAZoB/wG2AR4BSwH/ASEBGQEtAf8BGwFWAaQB/wEAAToBkQH/
+ AQMBFQExAf8BhAEhARMB/wGpATYBJgH/AxcB/wOkAf8DEQH/AgEBVwH/AQsBKAGFAf8BJAGUAbQB/wEC
+ AREBRgH/AQkBLgGSAf8BSAHkAfUB/wFNAekC/wFGAeAB+AH/ASkBsQHfAf8BEQFGAbUB/wEDARUBigH/
+ AQMBBQFPAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAQFNAf8CAwFO
+ Af8CAwFSAf8CAwFXAf8BAAEIAYQB/wEAAQ0BjQH/AQABCwGMAf8BAgEGAYMB/wIAAUgB/wEBAREBRgH/
+ ASEBlQG0Af8BCwEqAYgB/wIBAVgB/xAAAwQBBgMiATIBTAJNAZEDZAHxA6gB/QGEAZkBpwH+AqgBqQH9
+ AWIBgQGHAfsBZAF2AXwB/AHnAfEB+AH/AdUD/wHDAfsC/wHDAfsC/wHgA/8BXwF2AYUB+wFaAl0B0wNC
+ AXQDGgElAwYBCAMBAQIvAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
+ Af8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxEB/wOqAf8DEQH/
+ AakBMwEkAf8BRwEcARkB/wE4AZYBtQH/AVEBwQHkAf8BlAHYAesB/wEAASsBiAH/AQABHgE/Af8BoQEW
+ AT4B/wG/ASkBjgH/AcoBOQGmAf8B2gFKAbwB/wHoAYEB0gH/AfQBigHhAf8B+QGQAegB/wH0AYoB4QH/
+ AegBgQHSAf8B2gFKAb0B/wHLATkBpQH/AcABKAGKAf8BVwEVATIB/wEAARwBTAH/ARgBVgGpAf8BnAHh
+ Ae8B/wFDAbAB1gH/ASsBJAEsAf8BkAEoARsB/wMYAf8DqgH/AxEB/wIBAVgB/wELASgBiAH/ASQBlAG0
+ Af8BAgERAUYB/wEAARgBigH/ARIBjAHPAf8BEgGTAdwB/wETAY8B1QH/AQkBUAHDAf8BAwEqAaUB/wEA
+ AQ4BiQH/AQABBAFUAf8CAgFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAgFN
+ Af8CAwFPAf8CAwFXAf8BAwESAY4B/wEQAUgBuAH/ASYBmgHSAf8BHQGNAcsB/wEHAS8BpQH/AQABBAFQ
+ Af8BAgERAUYB/wEkAZcBtgH/AQsBLAGKAf8CAQFYAf8QAAMDAQQDFgEeAzYBWQFPAlEBnAFXAlkBvwFZ
+ AlwByQFaAl0BygFcAl4BzgFYAl8B4wFXAmIB9gHwA/8BwwH7Av8BwwH7Av8B3QP/AW4BegF+AfwDWQHH
+ AzcBWwMPARQDAAEBTwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wOw
+ Af8DEQH/Aa8BNAEnAf8BVgEbARMB/wE5ARYBGAH/ATQBUAGFAf8BsAHuAfcB/wGbAeMB7wH/AQABLgGR
+ Af8BAwEqAUMB/wGlARoBRgH/AcABLQGVAf8BywE7AakB/wHWAUYBtwH/Ad4BUAHCAf8B4QFSAcYB/wHe
+ AVABwgH/AdYBRgG3Af8BywE7AagB/wHDASwBkQH/AYEBFgE4Af8BAAE0AYAB/wELAU4BpQH/AbcB8wH6
+ Af8BlgHaAeQB/wEsASEBKQH/AUwBGgEVAf8BowEvASQB/wMYAf8DsAH/AxEB/wIBAVgB/wELASgBiAH/
+ ASQBlAG0Af8BAgERAUYB/wEAASYBjwH/ATIBxwHoAf8BOQHQAfMB/wE6AcsB8gH/ATABuwHmAf8BGgGN
+ AcwB/wEGATEBpQH/AQEBDQGBAf8BAAECAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIA
+ AU0B/wIAAU0B/wIDAU0B/wEAAQYBVwH/AQwBRgG1Af8BOwHQAfEB/wFLAekB/QH/AUgB5QH7Af8BJAGp
+ AdwB/wEAARUBhAH/AQIBEgFGAf8BJAGbAbgB/wELASwBiwH/AgEBWAH/EAADAgEDAwoBDQMcAScDLwFJ
+ AzwBZgNEAXoDSAGEAU4CTwGXAVkCXAHMAVMCZAHxBP8BwwH7Av8BwwH7Av8B1wP/AqgBqgH9A1sByAM3
+ AVoDCwEPUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wO2Af8DEQH/
+ AbABMwEnAf8BsgEzASYB/wGfASoBHgH/AVcBGgERAf8BHgEWASUB/wGTAdQB6AH/AZYB3gHvAf8BAAE9
+ AZYB/wEWASEBOAH/AbgBHgFRAf8BvwErAZMB/wHGATQBoAH/AcsBOgGmAf8BzQE8AaoB/wHLAToBpgH/
+ AcYBNAGgAf8BwAErAZEB/wGdARkBQgH/AQABNgFQAf8BCwFNAagB/wGvAesB+AH/AUoBoAHDAf8BPAIV
+ Af8BWQEaARAB/wGtATEBJAH/AakBMQEmAf8DGAH/A7YB/wMRAf8CAQFYAf8BCwEoAYgB/wEjAZQBtAH/
+ AQIBEQFGAf8BAAEhAY4B/wErAcMB5wH/ATIBzgHyAf8BMgHIAfIB/wEoAbQB5gH/ARUBigHKAf8BBQEv
+ AZ8B/wEAAQkBUwH/AgABRAH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/
+ AgABQwH/AQABAwFRAf8BHAGVAcsB/wFAAekB/QH/AUIB7gL/AUIB7gL/ATQB1QHwAf8BAAEiAZAB/wEC
+ ARMBRgH/ASQBnAG5Af8BCwEsAYsB/wIBAVgB/xMAAQEDBwEJAxYBHwMvAUkBQQJCAXMBTAJNAZEBUAJS
+ AaMBVQJXAboDXwHgAUkCYgH2AfMD/wHDAfsC/wHDAfsC/wHdA/8BbgF6AX4B/AFXAloBvQMxAU8DCQEM
+ UwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wO7Af8DEQH/Aa0BMAEm
+ Af8BswEyAScB/wGzATIBJwH/AagBLQEiAf8BVgEXARAB/wEeARYBJQH/AZEB0QHqAf8BVQG6Ad0B/wEA
+ AUYBkwH/AT8BEwEuAf8BuAEcAVQB/wG8ASQBhwH/AcABJgGKAf8BvwEnAYwB/wHAASYBigH/AbwBIwGG
+ Af8BtAEbAUwB/wESASQBOQH/AQABTAGiAf8BnQHeAfEB/wFKAaABxgH/AT4BFAEVAf8BlgEkARsB/wGy
+ ATIBJwH/AbMBMgEnAf8BpgEuASUB/wMZAf8DuwH/AxEB/wIBAVgB/wELASgBiAH/AR8BlAG0Af8BAQER
+ AUYB/wEAARMBhQH/AQkBggHKAf8BCAGOAdcB/wEIAYoB1wH/AQgBhgHPAf8BCAFQAcAB/wECATcBqgH/
+ AQABGAGMAf8CAAE/Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE7Af8CAAE9
+ Af8CAAFNAf8BEgGAAcEB/wE1AeMB+wH/ATkB7gL/ATkB7gL/ASYBxgHqAf8BAAEaAYwB/wECARMBSAH/
+ ASQBnQG9Af8BCwEtAYsB/wIBAVgB/xMAAQEDCgENAyoBQAFOAk8BlwFYAlwB0QNcAeoDZwHyAlkBWgH1
+ AWIBgQGHAfsB2gHqAfUB/wHYA/8BwwH7Av8BxQH9Av8B7wP/A2IB9gFQAlIBowMnAToDBwEJUwAB/wMA
+ Af8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wPAAf8DEQH/AakBLgEkAf8BrwEv
+ ASUB/wGvAS8BJQH/Aa8BLwElAf8BpQEqASEB/wFSARUBDgH/AR8BKAE9Af8BmAHaAfEB/wErAY8BvAH/
+ AQABMQFNAf8BTgEJAR8B/wFCARUBMAH/ATEBGwE2Af8BMQEbATYB/wE1ARoBNQH/AUoBEQEsAf8BOAEM
+ AR0B/wEAAUEBkAH/AVkBvAHgAf8BhAG7AeEB/wEwARIBGAH/AZEBIQEYAf8BrwEvASUB/wGvAS8BJQH/
+ Aa8BLwElAf8BogEsASMB/wMZAf8DwAH/AxEB/wIBAVkB/wELASgBiwH/ASIBlAG0Af8BAAENAUIB/wEA
+ ASEBjAH/ASoB2gHrAf8BLwHkAfUB/wEvAeIB9QH/ASoB2QHzAf8BJAHCAekB/wEVAZMB0QH/AQUBMQGj
+ Af8CAAE2Af8CAAEvAf8CAAEvAf8CAAEvAf8CAAEvAf8CAAEvAf8CAAEvAf8CAAEyAf8CAAEyAf8CAAE6
+ Af8BAAEgAZAB/wEWAZ4B1gH/ASoB0QHwAf8BJAHDAeoB/wELAVEBvQH/AQABBAFPAf8BAAEPAUgB/wEk
+ AZ0BvQH/AQsBLQGOAf8CAQFZAf8TAAEBAw8BFAM7AWMDXgHYBP8B+wP/AfMD/wHuA/8B4gP/AdED/wHG
+ Af4C/wHEAfwC/wHWA/8B5wHxAfgB/wFXAlwB3wNEAXkDGAEiAwQBBlMAAf8DAAH/AwAB/wMAAf8DAAH/
+ DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMRAf8DxwH/AxEB/wGmASoBIwH/AawBKwEkAf8BrAErASQB/wGs
+ ASsBJAH/AawBKwEkAf8BmgEjARwB/wFJARMBEQH/ATwBkAGyAf8BlgHSAfEB/wEBAUQBogH/AQABPQGL
+ Af8BAAFFAZMB/wEAAUsBmgH/AQEBTQGcAf8BAAFKAZcB/wEAAUUBkwH/AQABOAGLAf8BJgGJAbsB/wGY
+ AdgB8wH/ASABLgFEAf8BUQETAQ4B/wGrASoBIwH/AawBKwEkAf8BrAErASQB/wGsASsBJAH/AZ8BKQEi
+ Af8DGQH/A8cB/wMRAf8CAwGFAf8BDwEvAY0B/wEkAZcBtAH/AQABCwFAAf8BAAECAUEB/wEAASUBjAH/
+ AQABJwGSAf8BAAEnAZIB/wEAASUBkAH/AQABIAGGAf8BAAETAVMB/wEAAQQBQwH/AgABLAH/AgABJgH/
+ AgABJgH/AgABJgH/AgABJgH/AgABJgH/AgABJgH/AgABJgH/AgABLAH/AgABLQH/AgABOAH/AQABCwFT
+ Af8BAAEhAYoB/wEAARkBhQH/AQABBAFMAf8CAAE5Af8BAAEMAUEB/wEkAZwBuQH/AQ8BMAGRAf8CAwGF
+ Af8TAAEBAw0BEgM4AVwBWAJbAcsBkAGdAaYB/gHqA/8BzQP/AcQB/AL/AcMB+wL/AcMB+wL/AcYB/gL/
+ AdgD/wHzAfgB/AH/A10B8ANSAakDLgFHAwwBEAMCAQNTAAH/AwAB/wMAAf8DAAH/AwAB/0QAAxEB/wPP
+ Af8DEQH/AaMBJwEhAf8BqAEoASIB/wGoASgBIgH/AagBKAEiAf8BqAEoASIB/wGoASgBIgH/AY0BGwEW
+ Af8BJAEWASEB/wGMAdIB8wH/AcMB8AH4Af8B1QHuAfcB/wHgAfcB/AH/AecD/wHoA/8B5gH+Av8B3QHy
+ AfoB/wHNAe0B9wH/AbUB7wH7Af8BSgGrAc8B/wE/AQ8BEQH/AZYBIAEaAf8BqAEoASIB/wGoASgBIgH/
+ AagBKAEiAf8BqAEoASIB/wGdASYBIAH/AxoB/wPPAf8DEQH/AgkBigH/ARABMgGYAf8BJQGVAbYB/wEP
+ ATYBiAH/AQEBDwE/Af8BAQEPAUQB/wEBAQ8BRAH/AQEBDwFEAf8BAQEPAT4B/wEBAQ8BPgH/AQEBDwE+
+ Af8BAQEPATkB/wEAAQkBOAH/AQABCQE4Af8BAAEJATgB/wEAAQkBOAH/AQABCQE4Af8BAAEJATgB/wEA
+ AQkBOAH/AQABCQE4Af8BAQEPATkB/wEBARABPwH/AQEBEQFAAf8BAQERAUAB/wEBAREBRgH/AQEBEQFG
+ Af8BAQEQAUUB/wEBAQ8BPwH/AQ0BNgGHAf8BJAGUAbUB/wEQATIBmAH/AgkBigH/EwABAQMHAQoDJgE4
+ A0oBiwFZAlwBzwFfAW4BcgH4AfMB+AH8Af8B8gP/AeYD/wHoA/8B+gP/AZABoAGqAf4DYQHuA1UBsgM4
+ AVwDFQEdAwUBBwMAAQFTAAH/AwAB/wMAAf8DAAH/AwAB/0QAAxEB/wPXAf8DEQH/AZ8BJAEgAf8BpAEl
+ ASEB/wGkASUBIQH/AaQBJQEhAf8BpAElASEB/wGkASUBIQH/AZkBIAEcAf8BOQENAREB/wGvAdwB5AH/
+ AeIB8AHyAf8BjQGkAa8B/wE9AUMBTwH/ASsBJwE1Af8BLAEoATYB/wEuASsBOAH/AUgBVAGGAf8BpQHA
+ AcUB/wHvAvsB/wE0AYIBlwH/AUoBDgENAf8BowEkASAB/wGkASUBIQH/AaQBJQEhAf8BpAElASEB/wGk
+ ASUBIQH/AZkBIwEfAf8DGgH/A9cB/wMRAf8CCgGUAf8BDwEtAZsB/wEwAaIBwwH/AUMBtwHNAf8BPwG5
+ Ac0B/wE/AbkBzQH/AT0BuQHNAf8BPAG5Ac0B/wE8AbkBzQH/ATwBuQHNAf8BPAG5Ac0B/wE8AbkBzQH/
+ ATwBuQHNAf8BPAG5Ac0B/wE8AbkBzQH/ATwBuQHNAf8BPAG5Ac0B/wE8AbkBzQH/ATwBuQHNAf8BPAG5
+ Ac0B/wE/AbkBzQH/AT8BvAHPAf8BPwG/AdIB/wE/Ab8B0gH/AT8BvwHSAf8BPwG/AdIB/wE9AbwBzwH/
+ ATwBuQHNAf8BOwG2AcgB/wErAZ4BwAH/AQ8BLAGbAf8CCgGUAf8UAAMEAQUDEQEXAykBPwNEAXkBVQJW
+ AbQBXAJhAdwDXwHzAWQBcQF2AfoBZAFxAXYB+gNdAe0BWwJeAdABUAJRAZ8DNgFZAxgBIQMHAQoDAQEC
+ VwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMRAf8D3wH/AxEB/wGcASEBHwH/AaEBIgEgAf8BoQEiASAB/wGh
+ ASIBIAH/AaEBIgEgAf8BoQEiASAB/wGbAR8BHQH/AT8BDAEPAf8BjwGWAaEB/wEtAQoBEgH/AUcCDAH/
+ AUoBDAELAf8BgQEUARIB/wGBARQBEgH/AYEBFAESAf8BSQEMAQsB/wFEAQwBDQH/ASEBFQEkAf8BUQFV
+ AYgB/wFJAQwBCwH/AaABIQEfAf8BoQEiASAB/wGhASIBIAH/AaEBIgEgAf8BoQEiASAB/wGWASABHgH/
+ AxsB/wPfAf8DEQH/AgsBngH/AQwBEwGUAf8BGwE1AZ8B/wEuAVUBrgH/ATEBWQGrAf8BMQFZAasB/wEv
+ AVkBqwH/AS4BWQGnAf8BLgFZAaYB/wEsAVYBpgH/ASgBUwGmAf8BKAFTAaIB/wEoAVMBoQH/ASgBUwGh
+ Af8BKAFTAaEB/wEoAVMBoQH/ASgBUwGhAf8BKAFTAaEB/wEoAVMBoQH/ASgBUwGhAf8BLAFTAaIB/wEs
+ AVMBpgH/AS8BVgGmAf8BMQFZAaYB/wExAVkBpwH/ATEBWQGrAf8BLwFZAasB/wEuAVkBqwH/ASsBVQGu
+ Af8BGQE1AZ8B/wEMARMBlAH/AgsBngH/FwABAQMEAQYDDAEQAxwBKAMxAU0DQgF1A04BmQFTAlUBrQNS
+ AakDSwGOATwCPQFnAykBPgMUARsDBwEJAwIBA1sAAf8DAAH/AwAB/wMAAf8DAAH/RAADTAHzA98B/wMo
+ Af8BigIbAf8BmwEdAR4B/wGbAR0BHgH/AZsBHQEeAf8BmwEdAR4B/wGbAR0BHgH/AZoBHAEdAf8BRAEJ
+ AQoB/wE+AQkBDAH/AUYCCQH/AZkBHAEdAf8BmgEdAR4B/wGbAR0BHgH/AZsBHQEeAf8BmwEdAR4B/wGa
+ ARwBHQH/AZIBGQEaAf8BRQIJAf8BOwEJAQ0B/wFGAgkB/wGaAR0BHgH/AZsBHQEeAf8BmwEdAR4B/wGb
+ AR0BHgH/AZsBHQEeAf8BVgEZARoB/wMwAf8D3QH/A04B8AIQAaQB/wILAZ4B/wIKAZQB/wIJAY8B/wIJ
+ AYwB/wIJAYYB/wIJAYIB/wIEAVgB/wIDAVgB/wICAVUB/wIBAVIB/wIBAVAB/wIBAVAB/wIBAVAB/wIB
+ AVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVIB/wICAVUB/wIDAVgB/wIE
+ AVgB/wIJAYIB/wIJAYYB/wIJAYwB/wIJAY8B/wIKAZQB/wILAZ4B/wIQAaQB/xsAAQEDAgEDAwYBCAMM
+ ARADFgEeAyIBMgMqAUADKQE+Ax8BLAMSARkDCgENAwQBBgMBAQJfAAH/AwAB/wMAAf8DAAH/AwAB/0QA
+ A1cBvQO/Af8DlAH/ATwBGgEcAf8BigEZAR8B/wGTARcBHgH/AZMBFwEeAf8BkwEXAR4B/wGTARcBHgH/
+ AZMBFwEeAf8BkgEXAR0B/wGOARUBHAH/AZIBFwEeAf8BkwEXAR4B/wGTARcBHgH/AZMBFwEeAf8BkwEX
+ AR4B/wGTARcBHgH/AZMBFwEeAf8BkwEXAR4B/wGSARcBHQH/AY0BFQEbAf8BkgEXAR4B/wGTARcBHgH/
+ AZMBFwEeAf8BkwEXAR4B/wGTARcBHgH/AYABGgEfAf8BMQEZARsB/wO0Af8DtAH/A1QBrgITAawB/wIT
+ AakB/wITAaYB/wIOAaYB/wINAaYB/wINAaMB/wINAZ8B/wILAZ4B/wILAZcB/wILAZcB/wILAZYB/wIL
+ AZYB/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAZYB/wIL
+ AZYB/wILAZcB/wILAZcB/wILAZ4B/wINAZ8B/wINAaMB/wINAaYB/wIOAaYB/wITAaYB/wITAakB/wIT
+ AawB/yQAAwEBAgMDBAQEBgEIAwYBCAMEAQYDAwEEAwABAWcAAf8DAAH/AwAB/wMAAf8DAAH/RAADNAFU
+ A0AB/wPuAf8DkwH/AycB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/
+ AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DMAH/A7IB/wPqAf8DMAH/
+ Ay0BRQITAawB/wITAawB/wITAawB/wITAawB/wITAawB/wITAawB/wITAawB/wIPAagB/wIOAaQB/wIL
+ AaIB/wILAZ8B/wILAZ8B/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wIL
+ AZwB/wILAZ8B/wILAZ8B/wILAaIB/wIOAacB/wIPAagB/wITAawB/wITAawB/wITAawB/wITAawB/wIT
+ AawB/wITAawB/wITAawB//8ABQADSgGNAz8B/wPNAf8D+QH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/
A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/
- A/sB/wP7Af8D+wH/A+sB/wO9Af8DKwH/A0gBhwQAA0gBhQIUAawB/wIUAawB/wIUAawB/wIUAawB/wIU
- AawB/wIUAawB/wIUAawB/wITAakB/wIRAakB/wIRAaYB/wINAaQB/wIMAaEB/wIMAaEB/wIMAaEB/wIM
- AaEB/wIMAaEB/wIMAaEB/wIMAaEB/wIMAaEB/wINAaQB/wIRAaYB/wIRAakB/wITAasB/wIUAawB/wIU
- AawB/wIUAawB/wIUAawB/wIUAawB/wIUAawB/wIUAawB/wNIAYX/AAkAAzcBWgNZAcMDKwH8AxIB/wMS
- Af8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMS
- Af8DEgH/AxIB/wMSAf8DEgH/AxIB/wNVAeoDVAGuAy0BRQgAAwcBCgNIAYUCFAGsAf8CFAGsAf8CFAGs
- Af8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8CFAGrAf8CEwGqAf8CEgGqAf8CEgGoAf8CEgGk
- Af8CEgGkAf8CEgGkAf8CEgGkAf8CEgGoAf8CEgGqAf8CEwGqAf8CFAGrAf8CFAGsAf8CFAGsAf8CFAGs
- Af8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8DSAGFAwcBCv8AAQABQgFNAT4HAAE+AwABKAMA
- AYADAAFAAwABAQEAAQEGAAEEFgAD//8A/wADAAHAAgABAwQACP8BgAIAAQEEAAL/AfgBBwT/CAAC/wHw
- AQME/wgAAv8B4AEBAf8BwQL/CAAC/wHAAQEB/wHBAv8IAAL/AYABAQH/AcEC/wgAAv8BAAEBAf8BwQL/
- CAAB/wH+AQABAQH/AcEC/wgAAf8B/AEAAQEB/wLBAf8IAAH/AfwBAAEBAf8CwQH/CAAB/wGAAQABAQH/
- AsEB/wgAAf4CAAEBAf8CwQH/CAAB+AIAAQMB/wLBAf8IAAHwAgABBwHgAQEBwAEHCAAB8AIAAR8B4AEB
- AcABBwgAAfACAAE/AeABAQHAAQcIAAHwAgABfwHgAQEBwAEHCAAB8AIAAf8B4AEBAcABBwgAAfABAAEB
- Av8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/AsEB/wgAAfABAAEDAv8CwQH/CAAB8AEAAQMC/wLB
- Af8IAAHwAQABAwL/AcEC/wgAAfABAAEDAv8BwQL/CAAB+AEAAQcC/wHBAv8IAAH4AQABDwL/AcEC/wgA
- AfwBAAEfAv8BwQL/CAAB/wGAAX8C/wHBAv8IAAj/AYACAAEBBAAI/wHAAgABAwQACP8L
+ A/sB/wPrAf8DvQH/AyoB/wNIAYcEAANIAYUCEwGsAf8CEwGsAf8CEwGsAf8CEwGsAf8CEwGsAf8CEwGs
+ Af8CEwGsAf8CEgGpAf8CEAGpAf8CEAGmAf8CDAGkAf8CCwGhAf8CCwGhAf8CCwGhAf8CCwGhAf8CCwGh
+ Af8CCwGhAf8CCwGhAf8CCwGhAf8CDAGkAf8CEAGmAf8CEAGpAf8CEgGrAf8CEwGsAf8CEwGsAf8CEwGs
+ Af8CEwGsAf8CEwGsAf8CEwGsAf8CEwGsAf8DSAGF/wAJAAM3AVoDWQHDAysB/AMRAf8DEQH/AxEB/wMR
+ Af8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMR
+ Af8DEQH/AxEB/wMRAf8DVQHqA1QBrgMtAUUIAAMHAQoDSAGFAhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/
+ AhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/AhMBqwH/AhIBqgH/AhEBqgH/AhEBqAH/AhEBpAH/AhEBpAH/
+ AhEBpAH/AhEBpAH/AhEBqAH/AhEBqgH/AhIBqgH/AhMBqwH/AhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/
+ AhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/A0gBhQMHAQr/AAEAAUIBTQE+BwABPgMAASgDAAGAAwABQAMA
+ AQEBAAEBBgABBBYAA///AP8AAwABwAIAAQMEAAj/AYACAAEBBAAC/wH4AQcE/wgAAv8B8AEDBP8IAAL/
+ AeABAQH/AcEC/wgAAv8BwAEBAf8BwQL/CAAC/wGAAQEB/wHBAv8IAAL/AQABAQH/AcEC/wgAAf8B/gEA
+ AQEB/wHBAv8IAAH/AfwBAAEBAf8CwQH/CAAB/wH8AQABAQH/AsEB/wgAAf8BgAEAAQEB/wLBAf8IAAH+
+ AgABAQH/AsEB/wgAAfgCAAEDAf8CwQH/CAAB8AIAAQcB4AEBAcABBwgAAfACAAEfAeABAQHAAQcIAAHw
+ AgABPwHgAQEBwAEHCAAB8AIAAX8B4AEBAcABBwgAAfACAAH/AeABAQHAAQcIAAHwAQABAQL/AsEB/wgA
+ AfABAAEDAv8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/AsEB/wgAAfABAAEDAv8CwQH/CAAB8AEA
+ AQMC/wHBAv8IAAHwAQABAwL/AcEC/wgAAfgBAAEHAv8BwQL/CAAB+AEAAQ8C/wHBAv8IAAH8AQABHwL/
+ AcEC/wgAAf8BgAF/Av8BwQL/CAAI/wGAAgABAQQACP8BwAIAAQMEAAj/Cw==
\ No newline at end of file
diff --git a/Tab/PingForm.Designer.cs b/Tab/PingForm.Designer.cs
new file mode 100644
index 0000000..6b342f1
--- /dev/null
+++ b/Tab/PingForm.Designer.cs
@@ -0,0 +1,281 @@
+
+namespace DutyContent.Tab
+{
+ partial class PingForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.panel6 = new System.Windows.Forms.Panel();
+ this.cboPingDefAddr = new System.Windows.Forms.ComboBox();
+ this.lblPingDefAddr = new System.Windows.Forms.Label();
+ this.pbxPingGraph = new System.Windows.Forms.PictureBox();
+ this.chkPingGraph = new System.Windows.Forms.CheckBox();
+ this.tlpnPingColors = new System.Windows.Forms.TableLayoutPanel();
+ this.lblPingStat1 = new System.Windows.Forms.Label();
+ this.btnPingColor4 = new System.Windows.Forms.Button();
+ this.btnPingColor2 = new System.Windows.Forms.Button();
+ this.btnPingColor3 = new System.Windows.Forms.Button();
+ this.lblPingStat2 = new System.Windows.Forms.Label();
+ this.lblPingStat4 = new System.Windows.Forms.Label();
+ this.btnPingColor1 = new System.Windows.Forms.Button();
+ this.lblPingStat3 = new System.Windows.Forms.Label();
+ this.lblPingColors = new System.Windows.Forms.Label();
+ this.chkUsePing = new System.Windows.Forms.CheckBox();
+ this.panel6.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).BeginInit();
+ this.tlpnPingColors.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panel6
+ //
+ this.panel6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.panel6.Controls.Add(this.cboPingDefAddr);
+ this.panel6.Controls.Add(this.lblPingDefAddr);
+ this.panel6.Controls.Add(this.pbxPingGraph);
+ this.panel6.Controls.Add(this.chkPingGraph);
+ this.panel6.Controls.Add(this.tlpnPingColors);
+ this.panel6.Controls.Add(this.lblPingColors);
+ this.panel6.Controls.Add(this.chkUsePing);
+ this.panel6.Location = new System.Drawing.Point(10, 12);
+ this.panel6.Name = "panel6";
+ this.panel6.Size = new System.Drawing.Size(778, 426);
+ this.panel6.TabIndex = 2;
+ //
+ // cboPingDefAddr
+ //
+ this.cboPingDefAddr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cboPingDefAddr.FormattingEnabled = true;
+ this.cboPingDefAddr.Location = new System.Drawing.Point(535, 51);
+ this.cboPingDefAddr.Name = "cboPingDefAddr";
+ this.cboPingDefAddr.Size = new System.Drawing.Size(238, 21);
+ this.cboPingDefAddr.TabIndex = 15;
+ this.cboPingDefAddr.SelectedIndexChanged += new System.EventHandler(this.CboPingDefAddr_SelectedIndexChanged);
+ //
+ // lblPingDefAddr
+ //
+ this.lblPingDefAddr.AutoSize = true;
+ this.lblPingDefAddr.Location = new System.Drawing.Point(515, 35);
+ this.lblPingDefAddr.Name = "lblPingDefAddr";
+ this.lblPingDefAddr.Size = new System.Drawing.Size(25, 13);
+ this.lblPingDefAddr.TabIndex = 14;
+ this.lblPingDefAddr.Text = "335";
+ //
+ // pbxPingGraph
+ //
+ this.pbxPingGraph.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.pbxPingGraph.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pbxPingGraph.Location = new System.Drawing.Point(129, 108);
+ this.pbxPingGraph.Name = "pbxPingGraph";
+ this.pbxPingGraph.Size = new System.Drawing.Size(644, 186);
+ this.pbxPingGraph.TabIndex = 13;
+ this.pbxPingGraph.TabStop = false;
+ //
+ // chkPingGraph
+ //
+ this.chkPingGraph.AutoSize = true;
+ this.chkPingGraph.Location = new System.Drawing.Point(26, 108);
+ this.chkPingGraph.Name = "chkPingGraph";
+ this.chkPingGraph.Size = new System.Drawing.Size(44, 17);
+ this.chkPingGraph.TabIndex = 12;
+ this.chkPingGraph.Text = "334";
+ this.chkPingGraph.UseVisualStyleBackColor = true;
+ this.chkPingGraph.CheckedChanged += new System.EventHandler(this.ChkPingGraph_CheckedChanged);
+ //
+ // tlpnPingColors
+ //
+ this.tlpnPingColors.ColumnCount = 4;
+ this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tlpnPingColors.Controls.Add(this.lblPingStat1, 0, 0);
+ this.tlpnPingColors.Controls.Add(this.btnPingColor4, 3, 1);
+ this.tlpnPingColors.Controls.Add(this.btnPingColor2, 1, 1);
+ this.tlpnPingColors.Controls.Add(this.btnPingColor3, 2, 1);
+ this.tlpnPingColors.Controls.Add(this.lblPingStat2, 1, 0);
+ this.tlpnPingColors.Controls.Add(this.lblPingStat4, 3, 0);
+ this.tlpnPingColors.Controls.Add(this.btnPingColor1, 0, 1);
+ this.tlpnPingColors.Controls.Add(this.lblPingStat3, 2, 0);
+ this.tlpnPingColors.Location = new System.Drawing.Point(129, 35);
+ this.tlpnPingColors.Name = "tlpnPingColors";
+ this.tlpnPingColors.Padding = new System.Windows.Forms.Padding(3);
+ this.tlpnPingColors.RowCount = 2;
+ this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
+ this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
+ this.tlpnPingColors.Size = new System.Drawing.Size(318, 62);
+ this.tlpnPingColors.TabIndex = 11;
+ //
+ // lblPingStat1
+ //
+ this.lblPingStat1.AutoSize = true;
+ this.lblPingStat1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.lblPingStat1.Location = new System.Drawing.Point(6, 3);
+ this.lblPingStat1.Name = "lblPingStat1";
+ this.lblPingStat1.Size = new System.Drawing.Size(72, 22);
+ this.lblPingStat1.TabIndex = 6;
+ this.lblPingStat1.Text = "330";
+ this.lblPingStat1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // btnPingColor4
+ //
+ this.btnPingColor4.BackColor = System.Drawing.Color.Plum;
+ this.btnPingColor4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.btnPingColor4.Location = new System.Drawing.Point(240, 28);
+ this.btnPingColor4.Name = "btnPingColor4";
+ this.btnPingColor4.Size = new System.Drawing.Size(72, 28);
+ this.btnPingColor4.TabIndex = 8;
+ this.btnPingColor4.UseVisualStyleBackColor = false;
+ this.btnPingColor4.Click += new System.EventHandler(this.BtnPingColor4_Click);
+ //
+ // btnPingColor2
+ //
+ this.btnPingColor2.BackColor = System.Drawing.Color.Aqua;
+ this.btnPingColor2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.btnPingColor2.Location = new System.Drawing.Point(84, 28);
+ this.btnPingColor2.Name = "btnPingColor2";
+ this.btnPingColor2.Size = new System.Drawing.Size(72, 28);
+ this.btnPingColor2.TabIndex = 10;
+ this.btnPingColor2.UseVisualStyleBackColor = false;
+ this.btnPingColor2.Click += new System.EventHandler(this.BtnPingColor2_Click);
+ //
+ // btnPingColor3
+ //
+ this.btnPingColor3.BackColor = System.Drawing.Color.LawnGreen;
+ this.btnPingColor3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.btnPingColor3.Location = new System.Drawing.Point(162, 28);
+ this.btnPingColor3.Name = "btnPingColor3";
+ this.btnPingColor3.Size = new System.Drawing.Size(72, 28);
+ this.btnPingColor3.TabIndex = 9;
+ this.btnPingColor3.UseVisualStyleBackColor = false;
+ this.btnPingColor3.Click += new System.EventHandler(this.BtnPingColor3_Click);
+ //
+ // lblPingStat2
+ //
+ this.lblPingStat2.AutoSize = true;
+ this.lblPingStat2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.lblPingStat2.Location = new System.Drawing.Point(84, 3);
+ this.lblPingStat2.Name = "lblPingStat2";
+ this.lblPingStat2.Size = new System.Drawing.Size(72, 22);
+ this.lblPingStat2.TabIndex = 5;
+ this.lblPingStat2.Text = "331";
+ this.lblPingStat2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // lblPingStat4
+ //
+ this.lblPingStat4.AutoSize = true;
+ this.lblPingStat4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.lblPingStat4.Location = new System.Drawing.Point(240, 3);
+ this.lblPingStat4.Name = "lblPingStat4";
+ this.lblPingStat4.Size = new System.Drawing.Size(72, 22);
+ this.lblPingStat4.TabIndex = 3;
+ this.lblPingStat4.Text = "333";
+ this.lblPingStat4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // btnPingColor1
+ //
+ this.btnPingColor1.BackColor = System.Drawing.Color.RoyalBlue;
+ this.btnPingColor1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.btnPingColor1.Location = new System.Drawing.Point(6, 28);
+ this.btnPingColor1.Name = "btnPingColor1";
+ this.btnPingColor1.Size = new System.Drawing.Size(72, 28);
+ this.btnPingColor1.TabIndex = 7;
+ this.btnPingColor1.UseVisualStyleBackColor = false;
+ this.btnPingColor1.Click += new System.EventHandler(this.BtnPingColor1_Click);
+ //
+ // lblPingStat3
+ //
+ this.lblPingStat3.AutoSize = true;
+ this.lblPingStat3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.lblPingStat3.Location = new System.Drawing.Point(162, 3);
+ this.lblPingStat3.Name = "lblPingStat3";
+ this.lblPingStat3.Size = new System.Drawing.Size(72, 22);
+ this.lblPingStat3.TabIndex = 4;
+ this.lblPingStat3.Text = "332";
+ this.lblPingStat3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // lblPingColors
+ //
+ this.lblPingColors.AutoSize = true;
+ this.lblPingColors.Location = new System.Drawing.Point(23, 35);
+ this.lblPingColors.Name = "lblPingColors";
+ this.lblPingColors.Size = new System.Drawing.Size(25, 13);
+ this.lblPingColors.TabIndex = 2;
+ this.lblPingColors.Text = "329";
+ //
+ // chkUsePing
+ //
+ this.chkUsePing.AutoSize = true;
+ this.chkUsePing.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.chkUsePing.Location = new System.Drawing.Point(3, 3);
+ this.chkUsePing.Name = "chkUsePing";
+ this.chkUsePing.Size = new System.Drawing.Size(58, 24);
+ this.chkUsePing.TabIndex = 0;
+ this.chkUsePing.Text = "328";
+ this.chkUsePing.UseVisualStyleBackColor = true;
+ this.chkUsePing.CheckedChanged += new System.EventHandler(this.ChkUsePing_CheckedChanged);
+ //
+ // PingForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Controls.Add(this.panel6);
+ this.Name = "PingForm";
+ this.Text = "Ping";
+ this.panel6.ResumeLayout(false);
+ this.panel6.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).EndInit();
+ this.tlpnPingColors.ResumeLayout(false);
+ this.tlpnPingColors.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel6;
+ private System.Windows.Forms.ComboBox cboPingDefAddr;
+ private System.Windows.Forms.Label lblPingDefAddr;
+ private System.Windows.Forms.PictureBox pbxPingGraph;
+ private System.Windows.Forms.CheckBox chkPingGraph;
+ private System.Windows.Forms.TableLayoutPanel tlpnPingColors;
+ private System.Windows.Forms.Label lblPingStat1;
+ private System.Windows.Forms.Button btnPingColor4;
+ private System.Windows.Forms.Button btnPingColor2;
+ private System.Windows.Forms.Button btnPingColor3;
+ private System.Windows.Forms.Label lblPingStat2;
+ private System.Windows.Forms.Label lblPingStat4;
+ private System.Windows.Forms.Button btnPingColor1;
+ private System.Windows.Forms.Label lblPingStat3;
+ private System.Windows.Forms.Label lblPingColors;
+ private System.Windows.Forms.CheckBox chkUsePing;
+ }
+}
\ No newline at end of file
diff --git a/Tab/PingForm.cs b/Tab/PingForm.cs
new file mode 100644
index 0000000..33c732a
--- /dev/null
+++ b/Tab/PingForm.cs
@@ -0,0 +1,324 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.IO;
+using System.Threading;
+using System.Net.NetworkInformation;
+using DutyContent.Interface;
+using System.Net;
+
+namespace DutyContent.Tab
+{
+ public partial class PingForm : Form, Interface.ISuppLocale, Interface.ISuppActPlugin
+ {
+ private static PingForm _self;
+ public static PingForm Self => _self;
+
+ //
+ private System.Timers.Timer _timer;
+ private long _last_ping;
+ private Color _color = Color.Transparent;
+ private Libre.PingGrapher _grpr;
+ private List _kepts = new List { 0, 0 };
+
+ public PingForm()
+ {
+ _self = this;
+
+ InitializeComponent();
+
+ _grpr = new Libre.PingGrapher(pbxPingGraph);
+ }
+
+ public void PluginInitialize()
+ {
+ chkUsePing.Checked = DcConfig.Duty.UsePing;
+ btnPingColor1.BackColor = DcConfig.Duty.PingColors[0];
+ btnPingColor2.BackColor = DcConfig.Duty.PingColors[1];
+ btnPingColor3.BackColor = DcConfig.Duty.PingColors[2];
+ btnPingColor4.BackColor = DcConfig.Duty.PingColors[3];
+ chkPingGraph.Checked = DcConfig.Duty.PingGraph;
+
+ //
+ try
+ {
+ var svl = File.ReadAllLines(Path.Combine(DcConfig.DataPath, "ServerList.txt"));
+ int ssv = -1;
+
+ for (var i = 0; i < svl.Length; i++)
+ {
+ cboPingDefAddr.Items.Add(svl[i]);
+
+ if (svl[i].StartsWith(DcConfig.Duty.PingDefAddr))
+ ssv = i;
+ }
+
+ if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
+ ssv = -1;
+
+ cboPingDefAddr.SelectedIndex = ssv > 0 ? ssv : 0;
+ }
+ catch
+ {
+ cboPingDefAddr.Items.Clear();
+ cboPingDefAddr.Items.Add(MesgLog.Text(27));
+ cboPingDefAddr.SelectedIndex = 0;
+ }
+
+ //
+ _timer = new System.Timers.Timer() { Interval = 5000 };
+ _timer.Elapsed += (sender, e) => PingOnce();
+
+ if (DcConfig.Duty.UsePing)
+ {
+ PingOnce(false);
+ _timer.Start();
+ }
+
+ }
+
+ public void PluginDeinitialize()
+ {
+ _timer?.Stop();
+ }
+
+ public void RefreshLocale()
+ {
+
+ }
+
+ public void UpdateUiLocale()
+ {
+ chkUsePing.Text = MesgLog.Text(328);
+ lblPingColors.Text = MesgLog.Text(329);
+ lblPingStat1.Text = MesgLog.Text(330);
+ lblPingStat2.Text = MesgLog.Text(331);
+ lblPingStat3.Text = MesgLog.Text(332);
+ lblPingStat4.Text = MesgLog.Text(333);
+ chkPingGraph.Text = MesgLog.Text(334);
+ lblPingDefAddr.Text = MesgLog.Text(335);
+ }
+
+ private void SaveConfig(int interval = 5000)
+ {
+ DcControl.Self.RefreshSaveConfig(interval);
+ }
+
+ private void ChkUsePing_CheckedChanged(object sender, EventArgs e)
+ {
+ if (!DcConfig.PluginEnable)
+ return;
+
+ DcConfig.Duty.UsePing = chkUsePing.Checked;
+
+ SaveConfig();
+
+ if (chkUsePing.Checked)
+ {
+ PingOnce();
+ _timer.Start();
+ }
+ else
+ {
+ _timer.Stop();
+ Overlay.DutyOvForm.Self?.ResetStat();
+ }
+ }
+
+ private void PingColorWorker(int index, Button button)
+ {
+ Color color = (Color)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
+ {
+ var dg = new ColorDialog()
+ {
+ AnyColor = true,
+ Color = DcConfig.Duty.PingColors[index],
+ };
+
+ return dg.ShowDialog() == DialogResult.OK ? dg.Color : DcConfig.Duty.PingColors[index];
+ }));
+
+ if (DcConfig.Duty.PingColors[index] != color)
+ {
+ button.BackColor = color;
+ DcConfig.Duty.PingColors[index] = color;
+ SaveConfig();
+ }
+ }
+
+ private void BtnPingColor1_Click(object sender, EventArgs e)
+ {
+ PingColorWorker(0, btnPingColor1);
+ }
+
+ private void BtnPingColor2_Click(object sender, EventArgs e)
+ {
+ PingColorWorker(1, btnPingColor2);
+ }
+
+ private void BtnPingColor3_Click(object sender, EventArgs e)
+ {
+ PingColorWorker(2, btnPingColor3);
+ }
+
+ private void BtnPingColor4_Click(object sender, EventArgs e)
+ {
+ PingColorWorker(3, btnPingColor4);
+ }
+
+ private void ChkPingGraph_CheckedChanged(object sender, EventArgs e)
+ {
+ if (!DcConfig.PluginEnable)
+ return;
+
+ DcConfig.Duty.PingGraph = chkPingGraph.Checked;
+
+ SaveConfig();
+ }
+
+ private void CboPingDefAddr_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (!DcConfig.PluginEnable)
+ return;
+
+ var val = cboPingDefAddr.SelectedItem as string;
+
+ if (!string.IsNullOrEmpty(val))
+ {
+ var ss = val.Split(' ');
+ if (ss.Length > 0)
+ {
+ DcConfig.Duty.PingDefAddr = ss[0].Trim();
+
+ SaveConfig();
+
+ return;
+ }
+ }
+
+ DcConfig.Duty.PingDefAddr = string.Empty;
+
+ SaveConfig();
+ }
+
+ //
+ private void PingOnce(bool check_plugin_enable = true)
+ {
+ if (!DcConfig.Duty.UsePing)
+ return;
+
+ if (check_plugin_enable && !DcConfig.PluginEnable)
+ return;
+
+ var conns = DcConfig.Connections.CopyConnection();
+ long rtt = 0;
+ double loss = 0;
+
+ if (conns.Length > 0)
+ {
+ foreach (var row in conns)
+ {
+ var (r, l) = CalcPing(row.RemoteAddress);
+
+ if (rtt < r)
+ rtt = r;
+
+ if (loss < l)
+ loss = l;
+ }
+ }
+ else
+ {
+ if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
+ {
+ Overlay.DutyOvForm.Self?.ResetStat();
+ return;
+ }
+
+ var defip = ThirdParty.Converter.ToIPAddressFromIPV4(DcConfig.Duty.PingDefAddr);
+
+ if (defip == IPAddress.None || defip == IPAddress.IPv6None)
+ {
+ Overlay.DutyOvForm.Self?.ResetStat();
+ return;
+ }
+
+ var (r, l) = CalcPing(defip);
+
+ if (rtt < r)
+ rtt = r;
+
+ if (loss < l)
+ loss = l;
+ }
+
+ //MesgLog.L("Ping: {0}, {1}%", rtt, loss);
+
+ Color color;
+ if (loss > 0.0 || rtt > 150)
+ color = DcConfig.Duty.PingColors[3];
+ else if (rtt > 100)
+ color = DcConfig.Duty.PingColors[2];
+ else if (rtt > 50)
+ color = DcConfig.Duty.PingColors[1];
+ else
+ color = DcConfig.Duty.PingColors[0];
+
+ if (_last_ping != rtt || loss > 0.0 || _color != color)
+ {
+ _last_ping = rtt;
+ _color = color;
+
+ Overlay.DutyOvForm.Self?.SetStatPing(color, rtt, loss);
+ }
+
+ //
+ if (DcConfig.Duty.PingGraph)
+ {
+ _kepts.Add((int)rtt);
+ if (_kepts.Count > 120)
+ _kepts.RemoveAt(0);
+
+ _grpr.Enter();
+ _grpr.DrawValues(_kepts);
+ WorkerAct.Invoker(() => _grpr.Leave());
+ }
+ }
+
+ // http://forum.codecall.net/topic/37643-c-packet-lossping-program/
+
+ private static readonly PingOptions _ping_options = new PingOptions { DontFragment = true };
+ private static readonly byte[] _ping_buffers = Encoding.ASCII.GetBytes("01234567890123456789012345678901");
+ private static readonly int _ping_timerout = 120;
+
+ //
+ private (long Rtt, double Loss) CalcPing(IPAddress host, int amount = 6)
+ {
+ var ps = new Ping();
+
+ int failed = 0;
+ long rtt = 0;
+
+ for (var i = 0; i < amount; i++)
+ {
+ PingReply pr = ps.Send(host, _ping_timerout, _ping_buffers, _ping_options);
+
+ if (pr.Status != IPStatus.Success)
+ failed++;
+
+ if (rtt < pr.RoundtripTime)
+ rtt = pr.RoundtripTime;
+ }
+
+ double loss = (failed / amount) * 100;
+
+ return (rtt, loss);
+ }
+ }
+}
diff --git a/Tab/PingForm.resx b/Tab/PingForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Tab/PingForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file