Windows Installer initial version

This commit is contained in:
Jiiks 2015-12-05 03:15:00 +02:00
parent 074288fc8d
commit 8b8a4de8fe
32 changed files with 53264 additions and 173 deletions

View File

@ -33,6 +33,13 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="asardotnet">
<HintPath>..\..\..\..\VSProjects\asardotnet\asardotnet\bin\Release\asardotnet.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
@ -106,6 +113,7 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@ -119,6 +127,18 @@
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\bd_logo2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\bd_logo_64x64.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\bd_logo_64x64_nobg.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\bd_logo_large_nobg.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -28,11 +28,13 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
this.btnCancel = new System.Windows.Forms.Button();
this.panelContainer = new System.Windows.Forms.Panel();
this.btnNext = new System.Windows.Forms.Button();
this.btnBack = new System.Windows.Forms.Button();
this.lblPanelTitle = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
// btnCancel
@ -77,25 +79,39 @@
this.lblPanelTitle.AutoSize = true;
this.lblPanelTitle.BackColor = System.Drawing.SystemColors.Window;
this.lblPanelTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblPanelTitle.Location = new System.Drawing.Point(13, 13);
this.lblPanelTitle.Location = new System.Drawing.Point(61, 16);
this.lblPanelTitle.Name = "lblPanelTitle";
this.lblPanelTitle.Size = new System.Drawing.Size(103, 16);
this.lblPanelTitle.TabIndex = 6;
this.lblPanelTitle.Text = "BetterDiscord";
//
// panel1
//
this.panel1.BackColor = System.Drawing.SystemColors.Window;
this.panel1.BackgroundImage = global::BetterDiscordWI.Properties.Resources.bd_logo_large_nobg;
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(64, 46);
this.panel1.TabIndex = 0;
//
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(524, 361);
this.Controls.Add(this.panel1);
this.Controls.Add(this.lblPanelTitle);
this.Controls.Add(this.btnBack);
this.Controls.Add(this.panelContainer);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnNext);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormMain";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Setup - BetterDiscord ";
this.TransparencyKey = System.Drawing.Color.LimeGreen;
this.ResumeLayout(false);
this.PerformLayout();
@ -103,11 +119,12 @@
#endregion
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Panel panelContainer;
public System.Windows.Forms.Button btnNext;
public System.Windows.Forms.Button btnBack;
public System.Windows.Forms.Label lblPanelTitle;
private System.Windows.Forms.Panel panel1;
public System.Windows.Forms.Button btnCancel;

View File

@ -1,12 +1,7 @@
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using BetterDiscordWI.panels;
namespace BetterDiscordWI
@ -19,6 +14,7 @@ namespace BetterDiscordWI
public String DiscordPath;
public String Sha;
public Boolean finished = false;
public XmlNodeList ResourceList;
@ -34,21 +30,6 @@ namespace BetterDiscordWI
Environment.Exit(0);
}
/* ZipArchive archive = ZipFile.OpenRead(@"C:\Users\Jiiks\AppData\Roaming\BetterDiscord\temp\asar.zip");
archive.ExtractToDirectory("C:/Users/Jiiks/AppData/Roaming/BetterDiscord/temp/");*/
//Load installer config
XmlDocument doc = new XmlDocument();
doc.Load(@"G:\Git\BetterDiscordApp\BetterDiscordApp\WindowsInstaller\config.xml");
String latestVersion = doc.GetElementsByTagName("latestversion")[0].InnerText;
ResourceList = doc.GetElementsByTagName("resource");
foreach (IPanel ipanel in _panels)
{
panelContainer.Controls.Add((UserControl)ipanel);
@ -75,11 +56,17 @@ namespace BetterDiscordWI
protected override void OnFormClosing(FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show("Setup is not complete. If you exit now, BetterDiscord will not be installed.\n\nExit Setup?", "Exit Setup?", MessageBoxButtons.YesNo);
if (dr == DialogResult.No)
if (!finished)
{
e.Cancel = true;
DialogResult dr =
MessageBox.Show(
"Setup is not complete. If you exit now, BetterDiscord will not be installed.\n\nExit Setup?",
"Exit Setup?", MessageBoxButtons.YesNo);
if (dr == DialogResult.No)
{
e.Cancel = true;
}
}
}

View File

@ -117,4 +117,543 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA
IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD5AAAA+wAA
APsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD5AAAA+wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+wAA
APsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
APsAAAD7AAAA/wEBCf8NClr/FBCI/wMCGP8AAAD/AAAA/wAAAP8AAAD/AwIW/xQQif8NClv/AQEK/wAA
AP8AAAD7AAAA+wQDH/8cFr7/HhjN/xkTqf8QDW7/EQ1z/xURkf8VEZH/EQ10/xANbf8YE6j/HhjN/xwW
v/8EAyH/AAAA+wAAAPsPDGn/HhjL/x0Xxv8aFbT/HxnV/x4Y0P8eGMz/HhjM/x4Y0P8fGdT/GhW1/x0X
xf8eGMv/EAxs/wAAAPsAAAD7DQpb/x4YzP8eGMz/HRfK/wcFMP8JB0D/HhjP/x4Yz/8JB0P/BgUu/x0X
yf8eGMz/HhjM/w0LXf8AAAD7AAAA+wgGN/8eGM//HhjM/xoVtf8AAAD/AAAC/x0XyP8dF8r/AAAD/wAA
AP8aFbL/HhjM/x4Yz/8IBzv/AAAA+wAAAPsBAQn/HhjP/x4YzP8eGM7/FBCK/xYRlv8eGM3/HhjN/xYR
l/8UEIn/HhjO/x4YzP8eGND/AQEL/wAAAPsAAAD7AAAA/xcSnP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/FxKf/wAAAP8AAAD7AAAA+wAAAP8LCU3/HhjP/x4Yy/8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMv/HhjP/wsJUP8AAAD/AAAA+wAAAPsAAAD/AAAD/xYRlP8XEp3/GhSw/x4Y
0f8fGdX/HxnV/x4Y0f8aFLH/FxKd/xYRlv8AAAT/AAAA/wAAAPsAAAD7AAAA/wAAAP8AAAD/CQc8/wwK
Uf8EAxn/AwMa/wMDGv8EAxj/DApR/wkHPf8AAAD/AAAA/wAAAP8AAAD7AAAA+wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+wAAAPsAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAAD5AAAA+wAA
APsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD5AAD//wAA
//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA
AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1AAAA+QAAAPkAAAD5AAAA+QAA
APkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAA
APkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA9QAAAPkAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD5AAAA+QAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
APkAAAD5AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA+QAAAPkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD5AAAA+QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAAD5AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQAG/wYE
J/8IBjj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CAY3/wYE
KP8BAAb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAPkAAAD/AAAA/wAAAP8AAAD/BgQn/xYR
lf8eGM3/IBnc/yIb5v8OC2L/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w0L
W/8iG+j/IBnc/x4Yzv8WEpn/BgQq/wAAAP8AAAD/AAAA/wAAAP8AAAD5AAAA+QAAAP8AAAD/AAAA/xEN
df8gGt//HhjO/x4Yy/8eGMv/IBna/xwWwf8BAQr/AAAE/wUEI/8JBz//CwlO/wsJTv8JB0D/BQQk/wAA
Bf8BAQj/HBa8/yAa2/8eGMv/HhjL/x4Yzv8hGt//Eg56/wAAAP8AAAD/AAAA/wAAAPkAAAD5AAAA/wAA
AP8SDn7/IBra/x4Yy/8eGMz/HhjP/x0Xxf8IBzv/CghK/xgTov8dGMv/IBnb/yAa3v8gGdr/IBna/yAa
3v8gGdz/HhjM/xgTpf8LCUz/CAY5/xwWwv8eGM//HhjM/x4Yy/8fGdn/Ew+E/wAAAP8AAAD/AAAA+QAA
APkAAAD/AQAF/x8Z1P8eGMv/HhjM/x4Yzf8bFbj/Dgxk/x4Yzv8gGtv/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/yAZ2v8eGM//Dwxm/xoVtP8eGM3/HhjM/x4Yy/8fGdb/AQEK/wAA
AP8AAAD5AAAA+QAAAP8AAAD/HRjK/x4YzP8eGMz/HhjM/x0XyP8fGdX/HhjL/x4Y0P8gGdz/IBnc/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/yAZ3P8gGdz/HhjQ/x4Yy/8fGdX/HRfI/x4YzP8eGMz/HhjM/x4Y
zf8AAAP/AAAA/wAAAPkAAAD5AAAA/wAAAP8cFsH/HhjM/x4YzP8eGMz/HhjM/x4YzP8fGNP/FhGW/wYF
Kv8HBjX/GxW4/x4Yzv8eGMz/HhjM/x4Yzf8bFrz/CAY3/wYFKf8VEZH/HxnU/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HBfF/wAAAP8AAAD/AAAA+QAAAPkAAAD/AAAA/xkUrf8eGMz/HhjM/x4YzP8eGMz/HhjM/xwW
v/8AAAD/AAAA/wAAAP8DAhX/HxnW/x4YzP8eGMz/HxnX/wMDGf8AAAD/AAAA/wAAAP8bFrr/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8aFLL/AAAA/wAAAP8AAAD5AAAA+QAAAP8AAAD/FBCK/x4Yzv8eGMz/HhjM/x4Y
zP8eGM3/FBCJ/wAAAP8AAAD/AAAA/wAAAP8aFbj/HhjM/x4YzP8cFr3/AAAA/wAAAP8AAAD/AAAA/xIP
gP8eGM//HhjM/x4YzP8eGMz/HhjN/xURkv8AAAD/AAAA/wAAAPkAAAD5AAAA/wAAAP8MCVT/IBnZ/x4Y
zP8eGMz/HhjM/x4YzP8aFbP/AAAA/wAAAP8AAAD/AQEK/x4Y0P8eGMz/HhjM/x8Z0/8CAQ3/AAAA/wAA
AP8AAAD/GRSt/x4YzP8eGMz/HhjM/x4YzP8fGdf/DQpb/wAAAP8AAAD/AAAA+QAAAPkAAAD/AAAA/wUE
Jf8gGtz/HhjM/x4YzP8eGMz/HhjM/x8Z1v8RDnb/AgEN/wMCFv8XEp3/HhjR/x4YzP8eGMz/HhjQ/xgT
ov8DAhj/AQEM/xANcf8gGdf/HhjM/x4YzP8eGMz/HhjM/yAa3v8GBSv/AAAA/wAAAP8AAAD5AAAA+QAA
AP8AAAD/AAAC/x0Xyf8eGMv/HhjM/x4YzP8eGMz/HhjL/x8Z1f8fGNL/HxnV/x4Y0P8eGMv/HhjM/x4Y
zP8eGMz/HhjP/x8Z1v8eGNH/HxnV/x4Yy/8eGMz/HhjM/x4YzP8eGMv/HhjM/wAAA/8AAAD/AAAA/wAA
APkAAAD5AAAA/wAAAP8AAAD/FBCJ/x4Yz/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Yzv8VEZL/AAAA/wAA
AP8AAAD/AAAA+QAAAPkAAAD/AAAA/wAAAP8IBzv/IBre/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/IRrd/wkH
Qf8AAAD/AAAA/wAAAP8AAAD5AAAA+QAAAP8AAAD/AAAA/wAAAf8dF8f/HhjL/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
y/8dGMr/AAAD/wAAAP8AAAD/AAAA/wAAAPkAAAD5AAAA/wAAAP8AAAD/AAAA/w8Ma/8fGNT/HxjT/x4Y
y/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
y/8fGNP/HxjT/xENc/8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAPkAAAD/AAAA/wAAAP8AAAD/AQEM/yAa
2f8WEZT/GRSu/yAa3P8eGNH/HhjL/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjL/x4Y
0P8gGtz/GhSw/xURkv8hGt3/AgIQ/wAAAP8AAAD/AAAA/wAAAP8AAAD5AAAA+QAAAP8AAAD/AAAA/wAA
AP8AAAD/BQQk/xwWvf8ZFKb/CghG/xANcP8bFbb/HhjR/yAZ2v8gGt7/IBre/yAa3v8gGt7/IBnb/x4Y
0f8bFrj/EA1y/woIRv8ZE6L/HBfA/wYEJ/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAAD5AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkHQf8aFa7/GRSn/w0LXP8EBBz/BAQg/wcFL/8IBjn/CAY5/wcF
MP8EBCH/BAMb/w0LWv8ZFKX/GxWw/woIRP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAA
APkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQj/CQg6/wcGKP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8HBiX/Cgg8/wICCf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD5AAAA+QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAPkAAAD5AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAPkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD5AAAA+QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAAD5AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAPUAAAD5AAAA+QAA
APkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAA
APkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD5AAAA+QAAAPkAAAD1AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAAAAA7wAAAPcAAAD3AAAA9wAA
APcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAA
APcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAA
APcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAAD3AAAA9wAAAPcAAADvAAAA+wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD7AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAT/AgIR/wQDG/8EAxr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMZ/wQDHP8CAhL/AAAF/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AwIY/woIRP8PDGv/FhKY/xoUsf8bFbP/BQQj/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EAx7/GhWx/xoU
s/8WEpn/EAxt/woIRv8EAxr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBCP8LCU//GhSz/x8Z1v8fGdb/HxjU/x8Z1f8hGt//GBOk/wMC
Ff8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIC
Ef8XEpz/IRrh/x8Z1f8fGNT/HxnW/x8Z1/8aFbb/CwlT/wEBC/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/CAY4/xkUrf8iG+j/HxjS/x4Yyv8eGMv/HhjL/x4Y
zv8fGNL/IRrk/xEOev8BAAf/AAAB/wEBCf8CAhT/BAMe/wUEJP8FBCf/BQQn/wUEJP8EAx7/AgIU/wEB
Cf8AAAH/AAAG/xENcv8iG+H/HxnS/x4Yzv8eGMv/HhjL/x0Xyv8fGNH/Ihvp/xoUsv8IBzz/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8HBjP/HhjK/yAa3f8eGMz/HhfM/x4Y
zP8dF8r/HxjU/x8Z1v8XEp7/CwhL/wUEJf8HBjT/DApX/xIPfP8XEp7/GhW1/xwWvv8cF8P/HBbD/xwW
vv8bFbb/FxKf/xIOfv8NCln/BwY1/wUEJf8LCEn/FhKa/x8Z1f8fGdX/HRfK/x4XzP8dF8z/HhjM/yAa
3f8eGM7/CAY4/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wUEKf8cFr7/HxnX/x4Y
y/8eGMv/HhjM/x0Yyv8fGdb/HRfM/w0KV/8EAxv/Dgth/xcTpP8eGM7/HxnW/x8Z1f8fGNT/HxnV/x8Z
1P8fGNP/HxjT/x8Z1P8fGdX/HxjV/x8Z1f8fGdb/HhjP/xgTpv8OC2T/BAMc/wwJUv8dF8j/HxnX/x0X
yv8eGMz/HhjL/x4Yy/8fGdb/HBfC/wYFLv8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAC/xAM
bP8gGdr/HhjK/x4YzP8eGMz/HhjM/x8Y0/8bFrv/CQc//xIOev8fGNL/IRvm/x8Z1f8eGMv/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x0XzP8eGMz/HhjM/x0XzP8eGMz/HhjL/x8Y1P8hG+b/HxjU/xIO
f/8JBz3/GhW3/x8Y0/8eGMz/HhjM/x0XzP8eGMv/IBnZ/xEOdv8AAAX/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAB/w4LYv8fGdX/HhfM/x4YzP8dF8z/HhfN/x4XzP8XE6D/GhW3/yAa3P8eGNL/HhfL/x4Y
zP8eF83/HhfM/x4YzP8eF8z/HhfM/x4YzP8eF8z/HhfM/x4XzP8dF8z/HhfM/x4XzP8dF8z/HhfN/x4X
zP8dF8v/HxjS/yAa3P8bFbr/FxKe/x0Xyv8eGM3/HhfM/x4XzP8dF8z/HxnU/xAMbP8AAAT/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/w0KWP8fGdX/HhjM/x0YzP8eGMz/HhjM/x4Xy/8eGM7/HxjS/x4Y
zP8eGMv/HhjO/yAa4P8hGuH/IRrj/yAZ2/8dGMv/HhjM/x0Xy/8eGMz/HhjM/x4YzP8eGMz/HhjL/yAZ
2v8hGuL/IRrh/yEa4f8eGM7/HhjL/x4YzP8fGNL/HhjO/x4Yy/8eGMv/HhjM/x4YzP8eGMz/HxnV/w4L
YP8AAAH/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wsJTf8fGdb/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x0Xy/8eGNH/HRfI/xAMb/8IBjf/CQhD/xURkf8fGdb/HRfL/x4Yy/8eGMz/HhjM/x0X
y/8dF8v/HxnW/xURlf8KCEX/BwY2/w8Ma/8dF8X/HhjS/x0Xy/8eGMz/HhjM/x0XzP8eGMz/HhjM/x0X
zP8eGMz/HxnW/wwJU/8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wkHQP8fGNT/HhfM/x4Y
zP8dF8z/HhfM/x4YzP8dF8z/HhfM/x4Y0P8fGdn/CQc+/wAAAv8AAAD/AAAA/wICEP8SDnv/IRrf/x4Y
y/8eF8z/HhfM/x4Xy/8gGt//Ew+D/wICEv8AAAD/AAAA/wAAAP8IBjr/HxnW/x4Y0f8dF8z/HhfM/x4X
zP8dF8z/HhfM/x4XzP8dF8z/HxnV/woIRv8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wcF
Mf8dF83/HhjM/x0YzP8eGMz/HhjM/x0YzP8eGMz/HhjM/yAa3f8WEpj/AAAA/wAAAP8AAAD/AAAA/wAA
AP8CAQ//HhjM/x8Y0/8eGMz/HhjM/x4Y0f8eGNH/AgIT/wAAAP8AAAD/AAAA/wAAAP8AAAD/FRGP/yAZ
3f8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjQ/wgGNv8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wQDHf8bFrr/HhjO/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x8Z2f8NC17/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/FhKd/yAa3v8eGMz/HhjM/yAZ3P8YE6b/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/DApU/x8Z1/8eGM3/HhjM/x0XzP8eGMz/HhjM/x0XzP8eGM3/HBbA/wUEIv8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wEBCf8XEpv/HxnV/x4YzP8dF8z/HhfM/x4YzP8dF8z/HhfM/yAZ
2/8ODGj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/GBOm/yAZ3P8eF8z/HhfM/yAZ2v8aFK7/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/Dgtf/yAZ2f8eGM3/HhfM/x4XzP8dF8z/HhfM/x4XzP8fGdP/GBOk/wIB
Dv8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8RDXb/IRri/x0YzP8eGMz/HhjM/x0Y
zP8eGMz/HhjM/yAZ2/8YE6X/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAhb/HxjW/x4Y0f8eGMz/HhjM/x4Y
0P8gGdr/BAMd/wAAAP8AAAD/AAAA/wAAAP8AAAD/FxKc/yAa3P8eGMv/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8hGt//Eg9//wAAAf8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8JB0H/Ihvn/x4Y
zP8eGMv/HhjL/x4YzP8eGMv/HhjM/x4Yy/8hGuH/EA1v/wMCFf8AAAT/AQAH/wUEJP8YE6X/IBnb/x4Y
y/8eGMz/HhjM/x4Yy/8gGdn/GRSr/wUEKP8BAAj/AAAE/wICFP8PDGf/IRrh/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4Yy/8iG+j/CwlK/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8DAhX/HxnV/x4Y0f8eGMz/HhjM/x4YzP8eGMz/HhjM/x0Xy/8eGM7/HxnV/xcSnP8QDGz/EQ12/xoU
s/8fGdj/HRfK/x0Xy/8eGMz/HRfL/x4YzP8dF8r/HxnX/xoVtv8RDnn/Dwxr/xYRmf8fGdT/HhjO/x4Y
y/8eGMz/HRfL/x4YzP8eGMz/HRfL/x4Yz/8fGdn/BAMc/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wAAAP8AAAH/GhWz/yAZ2/8eGMv/HhjM/x4YzP8eGMz/HRfM/x4YzP8eGMv/HhjO/x8Z
1P8fGdX/HxnV/x4Y0/8eGMz/HRfL/x4YzP8eGMz/HhjM/x4XzP8eGMz/HhfM/x4Y0v8fGdT/HxnV/x8Y
1P8eGM7/HhjL/x4XzP8eGMz/HhjM/x4XzP8eGMz/HhjL/yAZ2f8bFrr/AAAC/wAAAP8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/EAxs/yAZ3P8eGMz/HhjL/x4YzP8eGMv/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/yAa3v8RDXb/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/BwYz/x4Yzf8eGNH/HhjM/x4Y
zP8eGMz/HhjM/x0Xy/8eGMz/HhjM/x0Xy/8eGMz/HhjM/x0Xy/8eGMz/HhjM/x0Xy/8eGMz/HRfL/x4Y
zP8eGMz/HRfL/x4YzP8eGMz/HRfL/x4YzP8eGMz/HRfL/x4YzP8eGMz/HRfL/x4YzP8eGMz/HhjQ/x4Y
z/8IBjn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AwMZ/xkU
rP8fGdX/HhjM/x4YzP8eGMz/HRfM/x4YzP8eGMz/HRfM/x4YzP8eGMz/HRfM/x4YzP8eGMz/HRfM/x4Y
zP8eGMz/HhjM/x4XzP8eGMz/HhjM/x4XzP8eGMz/HhjM/x4XzP8eGMz/HhjM/x4XzP8eGMz/HhjM/x4X
zP8eGMz/HxnU/xoUsv8EAxz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAB/w4LXf8gGdj/HhjL/x4YzP8eGMv/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMv/HxnX/w4LZf8AAAL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wYFKv8dF8n/HhjN/x4YzP8eGMz/HhjM/x0Xy/8eGMz/HhjM/x0X
y/8eGMz/HhjM/x0Xy/8eGMz/HhjM/x0Xy/8eGMz/HRfL/x4YzP8eGMz/HRfL/x4YzP8eGMz/HRfL/x4Y
zP8eGMz/HRfL/x4YzP8eGMz/HRfL/x4YzP8eGMz/HhjN/wcGMP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAABf8TD4X/IBrg/x4Yzf8fGdf/HRfL/x4Y
y/8eGMz/HRfM/x4YzP8eGMz/HRfM/x4YzP8eGMz/HRfM/x4YzP8eGMz/HhjM/x4XzP8eGMz/HhjM/x4X
zP8eGMz/HhjM/x4XzP8eGMz/HhjM/x4Xy/8eGMr/HxnX/x4Xzv8gGt3/FRCP/wAABv8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAxz/IBrg/xwW
vf8VEZP/HRfI/x8Y0/8fGdT/HhjP/x4YzP8eGMv/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjL/x4YzP8eGM7/HxnU/x8Y0/8dF8r/FRGU/xsWuv8hG+T/BQQj/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/EA1u/x8Z0f8cFrz/Dgtj/xANcf8YFKf/HhjS/yAZ3P8gGtz/HxjT/x4Yz/8eGM3/HhjM/x0X
y/8eGMz/HRfL/x4YzP8eGMz/HhfN/x4Yz/8fGNP/IBrc/yAa3P8eGNL/GRSp/xENdP8OC2H/Gxa5/yAZ
0v8RDnb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AQEJ/woISf8aFbL/IRvX/xURkv8HBjT/CAY3/w8Maf8YE6T/HRjK/x8Z
2f8gGuH/IRvm/yIb6P8hG+f/IRvn/yIb6P8hG+b/IBri/x8Z2v8dGMr/GBOm/w8MbP8IBjj/BwUz/xQQ
jf8hGtX/GxW3/wsJTf8BAQv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CwlQ/xkUqf8hGtv/FhKb/wsJ
TP8GBSr/AwIV/wQDH/8HBjT/CghE/wsJT/8MClb/DApW/wsJT/8KCEX/BwY1/wQDIP8DAhT/BgUp/wsJ
Sf8WEZb/IRrc/xoVrP8MClT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIB
Df8IBjn/Eg9z/xcTk/8XEpX/Dw1X/wEBBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEB
BP8ODFH/FxKV/xcTlP8SD3T/CAc7/wIBDv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAC/wICEP8FBCD/BQQb/wAAAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAv8EBBn/BQQh/wMCEP8AAAL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA9QAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAA+wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD7AAAA7wAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAA
APUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAA
APUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAAAPUAAAD1AAAA9QAA
APUAAAD1AAAA9QAAAPUAAADvAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA
AAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAOUAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAOUAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAA
APMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
APMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EAxj/CghA/w4L
Xf8TD4D/Dwxj/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w4LXP8TEIP/Dgtf/woI
Qv8EAxv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BAMc/xAN
bf8YE6X/HhjP/yIb6P8jHPD/JR35/yce//8OC1//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwK
Uv8mHv//JR37/yMc8f8iG+j/HxnR/xkUqP8RDXH/BQQh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8EAxj/FBCF/yAZ1/8kHff/Ihzr/yAZ2P8eGM7/HhjM/x4Yyf8gGtn/JBzx/wkHOf8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wcGLv8jHOz/IRrd/x4Yyf8eGMz/HhjO/yAZ1/8iG+n/JB33/yAa2/8UEIv/BAMe/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8NClf/IBrZ/yUd+v8gGdn/HhjK/x4Yy/8eGMz/HhjM/x4YzP8eGMr/HhjJ/yYe
//8lHvz/BgUq/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUEIv8kHfL/Jx///x4Yyv8eGMr/HhjM/x4YzP8eGMz/HhjL/x4Y
yv8gGdf/JR35/yEa3v8OC2D/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UEIT/JR36/yEb4f8dGMj/HhjM/x4YzP8eGMz/HhjM/x4Y
y/8eGMn/Ihvp/yMc7/8ZFKr/Dgth/wAAAP8AAAD/AAAA/wMCEv8IBzb/DQtZ/xEOdf8UEIn/FxKY/xgT
oP8YE6D/FxKY/xQQiv8SDnf/DQtb/wgHOP8DAhT/AAAA/wAAAP8AAAD/Dgtc/xkUpv8jHO3/Ihzr/x4Y
yv8eGMv/HhjM/x4YzP8eGMz/HhjM/x0YyP8hGt7/JR78/xURj/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UEIr/Jh7+/x8Z0v8eGMr/HhjM/x4Y
zP8eGMz/HhjM/x0YyP8fGdX/JR35/xoVsP8HBi//AAAA/wAAAP8IBjX/Eg55/xgTov8dGMj/IRvj/yMc
8P8kHPL/Ixzu/yMc6/8iG+j/Ihvo/yMc6/8jHO7/JBzy/yMc8P8iG+T/HhjK/xgTpf8SD3v/CQc6/wAA
AP8AAAD/BgUo/xkUqf8lHfn/IBnX/x0YyP8eGMz/HhjM/x4YzP8eGMz/HhjK/x4Y0P8lHv7/FhKX/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8QDW//Jh7//x4Z
z/8eGMr/HhjM/x4YzP8eGMz/HhjM/x0YyP8hG+H/Ihvr/w4LW/8AAAD/AgEO/xANbv8bFrz/Ihzp/yQd
9P8iG+n/IBra/x8Y0P8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjQ/yAa
2f8iG+j/JB30/yMc6/8cF7//EQ1z/wMCE/8AAAD/DApR/yIb5/8iG+T/HRfH/x4YzP8eGMz/HhjM/x4Y
zP8eGMv/HhjN/yYe//8SD3v/AAAB/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAA
AP8CAQr/HxnT/yEa4P8eGMr/HhjM/x4YzP8eGMz/HhjM/x4Yy/8hGt7/HhjL/wcFLf8DAxf/FhGS/yIb
5P8kHfX/IRvi/x4Yzv8eGMv/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Yy/8eGM7/IRrg/yQd9f8iG+b/FxKZ/wQDHP8GBST/HRfE/yEa
4P8eGMr/HhjM/x4YzP8eGMz/HhjM/x4Yy/8gGtv/IRrc/wMDFP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAA
APMAAAD/AAAA/wAAAP8AAAD/AgEK/xwXw/8gGtv/HhjM/x4YzP8eGMz/HhjM/x4YzP8fGNH/HxnT/w8M
Zf8PDWj/Ihvn/yMc8P8fGdL/HhjK/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMr/HxjR/yMc
7/8iHOr/EQ1x/w4MYP8eGM//HxnS/x4YzP8eGMz/HhjM/x4YzP8eGMz/IBrY/x4Yy/8DAxb/AAAA/wAA
AP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAA/8bFrn/IRrf/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HxjQ/xwWvf8cF8H/Ixzu/x8Z0f8eGMr/HhjM/x4YzP8eGMz/HhjN/x4Yz/8eGM7/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGM7/HhjP/x4Y
zf8eGMz/HhjM/x4YzP8eGMr/HxjP/yMc7v8dF8P/Gxa6/x8Z0P8eGMz/HhjM/x4YzP8eGMz/HhjM/yAa
2/8dF8P/AgEM/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/GhWu/yEb
4/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Yy/8fGND/HxnU/x4Yy/8eGMz/HhjM/x4Yy/8eGMn/IRrg/yMc
7/8iG+b/Ihvp/yMc7v8fGdP/HRjI/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjJ/x8Z
0f8jHO3/Ihvp/yIb5v8jHO7/IRvi/x4Yyf8eGMv/HhjM/x4YzP8eGMv/HxnU/x8Z0P8eGMr/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8hGt//Gxa5/wAAA/8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAA
AP8AAAD/AAAA/xgToP8iG+n/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
y/8eGMr/Ixzt/xwWv/8PDGn/CghA/wsJSf8UEIv/Ihvj/yEa4P8dF8f/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HRfI/yAa3f8iG+b/FRGQ/wsJTP8JCED/Dwxk/xsWuf8jHO7/HhjM/x4Yy/8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/IRvl/xkUq/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
APMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8VEY3/Ixzu/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8dF8j/Ixzw/xgUpf8BAQj/AAAA/wAAAP8AAAD/AAAA/woIQP8hGuD/IBrb/x4Y
yv8eGMz/HhjM/x4YzP8eGMz/HhjL/yAZ2P8iG+T/CwlJ/wAAAP8AAAD/AAAA/wAAAP8AAAP/FxKa/yMc
8P8dGMn/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/yMc6/8WEpn/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/EQ51/yMc8v8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/IRrg/x0Xxv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/DApV/yQd8/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Yy/8kHfT/Dwxj/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8cFrz/IRvk/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8jHPD/Ew+B/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/w4L
XP8jHPH/HhjN/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/yQd9P8PDGL/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8cFrn/IRrg/x4YzP8eGMz/HhjM/x4YzP8gGtz/HRfE/wAA
Af8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DQtW/yQc8/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/Ixzy/w8MZv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAA
AP8AAAD/AAAA/wAAAP8KCET/Ihzp/x4Yzv8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
z/8hG+X/CAY0/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ExCD/yMc8P8eGMz/HhjM/x4Y
zP8eGMz/Ixzt/xURkP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wYFKf8gGt7/HxnS/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjN/yMc7P8MCU3/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/BQQj/yAZ2P8fGdP/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8fGND/IRvg/wYFLv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xIP
ff8jHPH/HhjM/x4YzP8eGMz/HhjM/yQc7/8UEIn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8FBCP/IBrY/x8Z0/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x8Z0f8hGuD/BwYv/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAv8cFrv/IRrf/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjN/yQc8f8LCk//AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8YE6L/Ihvn/x4YzP8eGMz/HhjM/x4YzP8iG+P/GhWu/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/CghD/yMc7v8eGM7/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8gGtv/HRfF/wEBCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/FhGU/yMc7v8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8jG+r/GBSj/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBSj/Ihvo/x8Y0f8eGMz/HhjM/x4YzP8eGMz/HhjP/yMc
7f8IBzX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xcSl/8jHO3/HhjL/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/Ixzq/xgToP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8MZP8kHfT/HhjL/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/yQc7/8QDWn/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQr/HBe//yIb6f8eGMr/HhjM/x4Y
zP8eGMz/HhjM/x4Yyv8iG+b/HhjH/wICEf8AAAD/AAAA/wAAAP8AAAD/AAAA/w4LXP8jHO3/HxjO/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjL/yQd9f8RDnH/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HBjL/Ihvk/x8Y0P8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Yyv8fGdX/Ixzu/xQQhP8GBSn/AgEL/wMCEf8LCEf/HBa+/yMc
7f8dF8j/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HRfH/yMc6/8dF8X/CwlM/wMCFP8CAQv/BQQm/xIO
fP8jHOz/IBnY/x4Yyf8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Yzv8iHOr/CQc9/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEI/x0X
xv8gGtz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjJ/x8Y0P8jHO7/IBnX/x0X
wv8dF8b/Ihvn/yEb5P8dF8j/HhjL/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8dF8f/IRrh/yIb
6f8dGMj/HBfB/x8Z1f8jHO//HxnS/x4Yyf8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8gGdj/HhjO/wICD/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8WEpT/Ixzw/x4Yy/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjL/x8Z1P8gGtz/IBra/x4Yz/8eGMv/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4Yy/8eGM7/IBrZ/yAa3P8fGdX/HhjL/x4Yy/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMv/Ixzs/xgToP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAA
APMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DApT/yQc8/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjL/yQd9v8OC2D/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMCEP8fGdH/IBnY/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x8Z1f8gGtn/BAMa/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/FxKc/yMc7/8eGMv/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
y/8jHOv/GRSm/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwKUv8kHfX/HhjL/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMr/JR33/w4LYP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
APMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQf/HhjI/yEa3f8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/IBrY/x8Y0v8CAg//AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xMP
gf8lHfj/HhjK/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjK/yQd9f8UEYz/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8GBSn/Ihzp/x8Y0f8eGMz/HhjN/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zv8jHO//CAc1/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xcSnP8jHPH/HRfF/yAZ1/8gGt3/HhjL/x4Y
y/8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjL/x4Y
yv8gGtz/IBnZ/x0Xxf8jHO3/GRSp/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HBjP/JB35/x8Z
0v8WEZT/FxOe/yMc7f8iG+f/HhjO/x4Yyv8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMr/HhjN/yIb5f8jHO//GBOj/xURkf8eGM7/JR79/woIQP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/xcTnf8oIP//HBa+/w8MY/8LCU3/FhKX/yIb5v8kHfP/IBrd/x4Yz/8eGMv/HhjM/x4Y
zP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zP8eGMz/HhjL/x4Yzv8gGtv/JB3y/yIb6f8XEp3/DAlP/w4LX/8bFrf/KCD//xkUqv8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQX/FRGM/yYf//8mHv//Eg9+/wUEJf8GBCb/EQ5y/x0X
wv8iG+b/JB3z/yMc7P8hGt7/HxnV/x8Y0P8eGM7/HhjN/x4YzP8eGMz/HhjM/x4YzP8eGMz/HhjM/x4Y
zf8eGM7/HxjQ/x8Z1P8hGt3/Ixzr/yQd8/8iG+f/HRfF/xIOeP8GBSn/BQQj/xEOdv8lHv7/Jx///xYR
lf8CAQr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCEH/Gxa3/ykh
//8lHfj/EQ51/wIBDf8AAAD/BAMZ/w4LYv8XEpr/HBe//x8Z1f8hG+P/Ihvq/yMc7v8kHPL/JBzy/yMc
8P8jHPD/Ixzy/yQd8v8jHO7/Ihzq/yEb5P8fGdb/HBfA/xcTnf8PDGb/BAMd/wAAAP8BAQr/EA1t/yQc
8v8qIf//HBa+/wsJSP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8MClP/GhW0/ygg//8mHv//FxOh/wcFMf8AAAD/AAAA/wAAAP8EAxz/CAc4/wsJ
S/8NC1n/Dwxl/xANb/8RDnX/EQ51/xANb/8PDGb/DQta/wsJTP8IBzn/BAMf/wAAAP8AAAD/AAAA/wYF
K/8WEZr/Jh7//ykg//8bFrr/DQtY/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8IBzb/FBCG/yEc1f8mH/f/IBrX/xcS
mf8ODFb/AAEA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8OC1D/FhKW/yAa1P8mH/f/IhzY/xURi/8JBzr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAQD/BwYj/xAOXf8XE47/GRWL/wUFFf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8EBBD/GBSF/xcTkf8RDmH/CAcm/wEBAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAA
APMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
APMAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAADzAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPMAAADzAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAOUAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAAAPMAAADzAAAA8wAA
APMAAADzAAAA8wAAAPMAAADzAAAA8wAAAOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

View File

@ -59,5 +59,45 @@ namespace BetterDiscordWI.Properties {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap bd_logo_64x64 {
get {
object obj = ResourceManager.GetObject("bd_logo_64x64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap bd_logo_64x64_nobg {
get {
object obj = ResourceManager.GetObject("bd_logo_64x64_nobg", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap bd_logo_large_nobg {
get {
object obj = ResourceManager.GetObject("bd_logo_large_nobg", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap bd_logo2 {
get {
object obj = ResourceManager.GetObject("bd_logo2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@ -60,6 +60,7 @@
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
@ -68,9 +69,10 @@
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
@ -85,9 +87,10 @@
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
@ -109,9 +112,22 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="bd_logo2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bd_logo2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="bd_logo_64x64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bd_logo_64x64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="bd_logo_64x64_nobg" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bd_logo_64x64_nobg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="bd_logo_large_nobg" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bd_logo_large_nobg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

View File

@ -18,9 +18,10 @@ namespace BetterDiscordWI
public void StartDownload(ProgressBar pb, String url, String name)
{
Thread t = new Thread(() =>
{
Debug.Print("Starting thread?");
WebClient webClient = new WebClient();
webClient.Headers["User-Agent"] = "Mozilla/5.0";
webClient.DownloadProgressChanged += delegate(object sender, DownloadProgressChangedEventArgs args)
@ -34,16 +35,8 @@ namespace BetterDiscordWI
};
if (name.Contains(".exe"))
{
webClient.DownloadFile(new Uri(url),
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord\\" +
name);
}
else
{
webClient.DownloadFile(new Uri(url), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord\\temp\\" + name);
}
webClient.DownloadFile(new Uri(url), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord\\temp\\" + name);
});

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
</packages>

View File

@ -32,6 +32,7 @@
this.btnBrowser = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.tbPath = new BetterDiscordWI.components.CTextBox();
this.label3 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
@ -74,10 +75,20 @@
this.tbPath.TabIndex = 4;
this.tbPath.Text = "feawfewafewa";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(20, 91);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(161, 13);
this.label3.TabIndex = 5;
this.label3.Text = "*Installer will kill Discord process.";
//
// Panel1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label3);
this.Controls.Add(this.tbPath);
this.Controls.Add(this.label2);
this.Controls.Add(this.btnBrowser);
@ -95,5 +106,6 @@
private System.Windows.Forms.Button btnBrowser;
private System.Windows.Forms.Label label2;
private components.CTextBox tbPath;
private System.Windows.Forms.Label label3;
}
}

View File

@ -34,7 +34,7 @@
//
// pbMain
//
this.pbMain.Location = new System.Drawing.Point(3, 238);
this.pbMain.Location = new System.Drawing.Point(3, 267);
this.pbMain.Name = "pbMain";
this.pbMain.Size = new System.Drawing.Size(518, 16);
this.pbMain.TabIndex = 0;
@ -43,7 +43,7 @@
//
this.rtLog.Location = new System.Drawing.Point(3, 3);
this.rtLog.Name = "rtLog";
this.rtLog.Size = new System.Drawing.Size(518, 229);
this.rtLog.Size = new System.Drawing.Size(518, 252);
this.rtLog.TabIndex = 1;
this.rtLog.Text = "";
//

View File

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Security.AccessControl;
using System.IO.Compression;
using System.Net;
using System.Threading;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
using System.Xml;
using asardotnet;
namespace BetterDiscordWI.panels
{
@ -23,131 +25,190 @@ namespace BetterDiscordWI.panels
{
GetParent().btnBack.Enabled = false;
GetParent().btnNext.Enabled = false;
GetParent().btnBack.Visible = false;
GetParent().btnNext.Visible = false;
GetParent().btnCancel.Enabled = false;
_utils = new Utils();
AppendLog("Killing Discord");
foreach (var process in Process.GetProcessesByName("Discord"))
{
process.Kill();
}
CreateDirectories();
}
private void CreateDirectories()
{
_dataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord";
_tempPath = _dataPath + "\\temp";
if (!Directory.Exists(_dataPath))
Thread t = new Thread(() =>
{
AppendLog("Creating Directory: " + _dataPath);
Directory.CreateDirectory(_dataPath);
}
if (!Directory.Exists(_dataPath))
{
AppendLog("ERROR: Directory does not exist: " + _dataPath);
return;
}
if (!Directory.Exists(_tempPath))
{
AppendLog("Creating Directory: " + _tempPath);
Directory.CreateDirectory(_tempPath);
}
else
{
AppendLog("Directory already exists: " + _tempPath);
AppendLog("Deleting Directory: " + _tempPath);
Directory.Delete(_tempPath, true);
}
if (!Directory.Exists(_tempPath))
{
AppendLog("Creating Directory: " + _tempPath);
Directory.CreateDirectory(_tempPath);
}
if (!Directory.Exists(_tempPath))
{
AppendLog("ERROR: Directory does not exists: " + _tempPath);
return;
}
CheckNode();
}
private void CheckNode()
{
AppendLog("Checking if node exists");
bool nodeExists = false;
String nodePath = "";
_dataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord";
_tempPath = _dataPath + "\\temp";
Process p = new Process
{
StartInfo = { UseShellExecute = false, RedirectStandardOutput = true, FileName = "cmd.exe", Arguments = "/C where node" }
};
p.Start();
String output = p.StandardOutput.ReadToEnd();
if (File.Exists(output))
{
nodeExists = true;
nodePath = output;
}
if (!nodeExists)
{
if (File.Exists(_dataPath + "\\node.exe")) ;
nodePath = _dataPath + "\\node.exe";
nodeExists = true;
}
if (nodeExists)
{
AppendLog("Node located at: " + nodePath);
}
DownloadResources(nodeExists);
}
private void DownloadResources(bool node)
{
_utils = new Utils();
foreach (XmlNode resource in GetParent().ResourceList)
{
String name = resource["name"].InnerText;
String url = resource["url"].InnerText;
if (name.ToLower().Equals("node"))
if (Directory.Exists(_tempPath))
{
if (!node)
{
DownloadResource(".exe", name, url);
}
AppendLog("Deleting temp path");
Directory.Delete(_tempPath, true);
}
else
{
DownloadResource(".zip", name, url);
}
}
while (Directory.Exists(_tempPath))
{
Debug.Print("Waiting for dirdel");
Thread.Sleep(100);
}
Directory.CreateDirectory(_tempPath);
DownloadResource("BetterDiscord.zip", "https://github.com/Jiiks/BetterDiscordApp/archive/stable.zip");
while (!File.Exists(_tempPath + "\\BetterDiscord.zip"))
{
Debug.Print("Waiting for download");
Thread.Sleep(100);
}
AppendLog("Extracting BetterDiscord");
ZipArchive zar =
ZipFile.OpenRead(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
"\\BetterDiscord\\temp\\BetterDiscord.zip");
zar.ExtractToDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
"\\BetterDiscord\\temp\\");
DeleteDirs();
});
t.Start();
}
private void DownloadResource(String extension, String resource, String url)
private void DeleteDirs()
{
Thread t = new Thread(() =>
{
String dir = GetParent().DiscordPath + "\\resources\\app";
if (Directory.Exists(dir))
{
AppendLog("Deleting " + dir);
Directory.Delete(dir, true);
}
while (Directory.Exists(dir))
{
Debug.Print("Waiting for direl");
Thread.Sleep(100);
}
dir = GetParent().DiscordPath + "\\resources\\node_modules\\BetterDiscord";
if (Directory.Exists(dir))
{
AppendLog("Deleting " + dir);
Directory.Delete(dir, true);
}
while (Directory.Exists(dir))
{
Debug.Print("Waiting for direl");
Thread.Sleep(100);
}
AppendLog("Moving BetterDiscord to resources\\node_modules\\");
Directory.Move(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord\\temp\\BetterDiscordApp-stable", GetParent().DiscordPath + "\\resources\\node_modules\\BetterDiscord");
AppendLog("Extracting app.asar");
AsarArchive archive = new AsarArchive(GetParent().DiscordPath + "\\resources\\app.asar");
AsarExtractor extractor = new AsarExtractor();
extractor.ExtractAll(archive, GetParent().DiscordPath + "\\resources\\app\\");
Splice();
});
t.Start();
}
private void DownloadResource(String resource, String url)
{
AppendLog("Downloading Resource: " + resource);
_utils.StartDownload(pbMain, url, resource + extension);
WebClient webClient = new WebClient();
webClient.Headers["User-Agent"] = "Mozilla/5.0";
webClient.DownloadFile(new Uri(url), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\BetterDiscord\\temp\\" + resource);
}
private void Splice()
{
String indexloc = GetParent().DiscordPath + "\\resources\\app\\app\\index.js";
Thread t = new Thread(() =>
{
List<String> lines = new List<string>();
AppendLog("Spicing index");
using (FileStream fs = new FileStream(indexloc, FileMode.Open))
{
using (StreamReader reader = new StreamReader(fs))
{
String line = "";
while((line = reader.ReadLine()) != null)
{
if (line.Contains("var _overlay2"))
{
AppendLog("Splicing require");
lines.Add(line);
lines.Add("var _betterDiscord = require('betterdiscord');");
}else if (line.Contains("mainWindow = new _BrowserWindow2"))
{
AppendLog("Splicing function call");
lines.Add(line);
lines.Add("betterDiscord(mainWindow);");
}
else if (line.Contains("main();"))
{
AppendLog("Splicing function");
lines.Add("function betterDiscord(mw) { _betterDiscord = new _betterDiscord.BetterDiscord(mw); _betterDiscord.init(); }");
lines.Add(line);
}
else
{
lines.Add(line);
}
}
}
}
AppendLog("Writing index");
File.WriteAllLines(indexloc, lines.ToArray());
Finalize();
});
t.Start();
}
private void Finalize()
{
AppendLog("Finished installing BetterDiscord");
Invoke((MethodInvoker) delegate
{
GetParent().finished = true;
GetParent().btnCancel.Text = "OK";
GetParent().btnCancel.Enabled = true;
});
}
public FormMain GetParent()
@ -167,9 +228,13 @@ namespace BetterDiscordWI.panels
private void AppendLog(String message)
{
rtLog.AppendText(message + "\n");
rtLog.SelectionStart = rtLog.Text.Length;
rtLog.ScrollToCaret();
Invoke((MethodInvoker) delegate
{
rtLog.AppendText(message + "\n");
rtLog.SelectionStart = rtLog.Text.Length;
rtLog.ScrollToCaret();
});
}
}
}

View File

@ -1,17 +0,0 @@
<config>
<latestversion>1.0</latestversion>
<resources>
<resource>
<name>Node</name>
<url>https://nodejs.org/dist/v4.2.2/win-x64/node.exe</url>
</resource>
<resource>
<name>asar</name>
<url>https://github.com/atom/asar/archive/master.zip</url>
</resource>
<resource>
<name>BetterDiscord</name>
<url>https://github.com/Jiiks/BetterDiscordApp/archive/stable.zip</url>
</resource>
</resources>
</config>

View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Newtonsoft.Json</id>
<version>7.0.1</version>
<title>Json.NET</title>
<authors>James Newton-King</authors>
<owners>James Newton-King</owners>
<licenseUrl>https://raw.github.com/JamesNK/Newtonsoft.Json/master/LICENSE.md</licenseUrl>
<projectUrl>http://www.newtonsoft.com/json</projectUrl>
<iconUrl>http://www.newtonsoft.com/content/images/nugeticon.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Json.NET is a popular high-performance JSON framework for .NET</description>
<releaseNotes />
<copyright />
<language>en-US</language>
<tags>json</tags>
</metadata>
</package>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,112 @@
param($installPath, $toolsPath, $package, $project)
# open json.net splash page on package install
# don't open if json.net is installed as a dependency
try
{
$url = "http://www.newtonsoft.com/json/install?version=" + $package.Version
$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])
if ($dte2.ActiveWindow.Caption -eq "Package Manager Console")
{
# user is installing from VS NuGet console
# get reference to the window, the console host and the input history
# show webpage if "install-package newtonsoft.json" was last input
$consoleWindow = $(Get-VSComponentModel).GetService([NuGetConsole.IPowerConsoleWindow])
$props = $consoleWindow.GetType().GetProperties([System.Reflection.BindingFlags]::Instance -bor `
[System.Reflection.BindingFlags]::NonPublic)
$prop = $props | ? { $_.Name -eq "ActiveHostInfo" } | select -first 1
if ($prop -eq $null) { return }
$hostInfo = $prop.GetValue($consoleWindow)
if ($hostInfo -eq $null) { return }
$history = $hostInfo.WpfConsole.InputHistory.History
$lastCommand = $history | select -last 1
if ($lastCommand)
{
$lastCommand = $lastCommand.Trim().ToLower()
if ($lastCommand.StartsWith("install-package") -and $lastCommand.Contains("newtonsoft.json"))
{
$dte2.ItemOperations.Navigate($url) | Out-Null
}
}
}
else
{
# user is installing from VS NuGet dialog
# get reference to the window, then smart output console provider
# show webpage if messages in buffered console contains "installing...newtonsoft.json" in last operation
$instanceField = [NuGet.Dialog.PackageManagerWindow].GetField("CurrentInstance", [System.Reflection.BindingFlags]::Static -bor `
[System.Reflection.BindingFlags]::NonPublic)
$consoleField = [NuGet.Dialog.PackageManagerWindow].GetField("_smartOutputConsoleProvider", [System.Reflection.BindingFlags]::Instance -bor `
[System.Reflection.BindingFlags]::NonPublic)
if ($instanceField -eq $null -or $consoleField -eq $null) { return }
$instance = $instanceField.GetValue($null)
if ($instance -eq $null) { return }
$consoleProvider = $consoleField.GetValue($instance)
if ($consoleProvider -eq $null) { return }
$console = $consoleProvider.CreateOutputConsole($false)
$messagesField = $console.GetType().GetField("_messages", [System.Reflection.BindingFlags]::Instance -bor `
[System.Reflection.BindingFlags]::NonPublic)
if ($messagesField -eq $null) { return }
$messages = $messagesField.GetValue($console)
if ($messages -eq $null) { return }
$operations = $messages -split "=============================="
$lastOperation = $operations | select -last 1
if ($lastOperation)
{
$lastOperation = $lastOperation.ToLower()
$lines = $lastOperation -split "`r`n"
$installMatch = $lines | ? { $_.StartsWith("------- installing...newtonsoft.json ") } | select -first 1
if ($installMatch)
{
$dte2.ItemOperations.Navigate($url) | Out-Null
}
}
}
}
catch
{
try
{
$pmPane = $dte2.ToolWindows.OutputWindow.OutputWindowPanes.Item("Package Manager")
$selection = $pmPane.TextDocument.Selection
$selection.StartOfDocument($false)
$selection.EndOfDocument($true)
if ($selection.Text.StartsWith("Attempting to gather dependencies information for package 'Newtonsoft.Json." + $package.Version + "'"))
{
$dte2.ItemOperations.Navigate($url) | Out-Null
}
}
catch
{
# stop potential errors from bubbling up
# worst case the splash page won't open
}
}
# still yolo

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<repositories>
<repository path="..\BetterDiscordWI\packages.config" />
</repositories>