master
exsersewo 3 years ago
parent 035f70a596
commit c247eb2c48
  1. 25
      LastRPC.sln
  2. BIN
      assets/lastrpc.ico
  3. 14
      src/LastRPC.csproj
  4. 407
      src/Main.Designer.cs
  5. 236
      src/Main.cs
  6. 695
      src/Main.resx
  7. 20
      src/Program.cs

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30615.102
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LastRPC", "src/LastRPC.csproj", "{E471CD5A-4F92-4BA0-847E-8F35ED23F308}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E471CD5A-4F92-4BA0-847E-8F35ED23F308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E471CD5A-4F92-4BA0-847E-8F35ED23F308}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E471CD5A-4F92-4BA0-847E-8F35ED23F308}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E471CD5A-4F92-4BA0-847E-8F35ED23F308}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A61F4F77-60A7-426F-A2C8-A84235D767B4}
EndGlobalSection
EndGlobal

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DiscordRichPresence" Version="1.0.166" />
<PackageReference Include="Inflatable.Lastfm" Version="1.2.0" />
</ItemGroup>
</Project>

407
src/Main.Designer.cs generated

@ -0,0 +1,407 @@

namespace LastRPC
{
partial class Main
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.notifier = new System.Windows.Forms.NotifyIcon(this.components);
this.notifyMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.panel1 = new System.Windows.Forms.Panel();
this.logTextBox = new System.Windows.Forms.RichTextBox();
this.panel2 = new System.Windows.Forms.Panel();
this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
this.label7 = new System.Windows.Forms.Label();
this.lastFMUsername = new System.Windows.Forms.TextBox();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.label6 = new System.Windows.Forms.Label();
this.discordAppId = new System.Windows.Forms.TextBox();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.label5 = new System.Windows.Forms.Label();
this.lastFMSecret = new System.Windows.Forms.TextBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.label4 = new System.Windows.Forms.Label();
this.lastFMKey = new System.Windows.Forms.TextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.start = new System.Windows.Forms.Button();
this.stop = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox1 = new System.Windows.Forms.TextBox();
this.statusStrip1.SuspendLayout();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.tableLayoutPanel5.SuspendLayout();
this.tableLayoutPanel4.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// statusStrip1
//
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.statusLabel});
this.statusStrip1.Location = new System.Drawing.Point(0, 424);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(800, 26);
this.statusStrip1.TabIndex = 2;
this.statusStrip1.Text = "statusStrip1";
//
// statusLabel
//
this.statusLabel.Name = "statusLabel";
this.statusLabel.Size = new System.Drawing.Size(50, 20);
this.statusLabel.Text = "Ready";
//
// notifier
//
this.notifier.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
this.notifier.BalloonTipText = "Sample";
this.notifier.BalloonTipTitle = "LastRPC";
this.notifier.ContextMenuStrip = this.notifyMenuStrip;
this.notifier.Icon = ((System.Drawing.Icon)(resources.GetObject("notifier.Icon")));
this.notifier.Text = "LastRPC";
this.notifier.Visible = true;
this.notifier.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifier_MouseDoubleClick);
//
// notifyMenuStrip
//
this.notifyMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.notifyMenuStrip.Name = "notifyMenuStrip";
this.notifyMenuStrip.Size = new System.Drawing.Size(61, 4);
//
// panel1
//
this.panel1.Controls.Add(this.logTextBox);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(800, 424);
this.panel1.TabIndex = 3;
//
// logTextBox
//
this.logTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.logTextBox.Location = new System.Drawing.Point(0, 0);
this.logTextBox.Name = "logTextBox";
this.logTextBox.ReadOnly = true;
this.logTextBox.Size = new System.Drawing.Size(528, 424);
this.logTextBox.TabIndex = 3;
this.logTextBox.Text = "";
//
// panel2
//
this.panel2.Controls.Add(this.tableLayoutPanel5);
this.panel2.Controls.Add(this.tableLayoutPanel4);
this.panel2.Controls.Add(this.tableLayoutPanel3);
this.panel2.Controls.Add(this.tableLayoutPanel2);
this.panel2.Controls.Add(this.tableLayoutPanel1);
this.panel2.Controls.Add(this.label3);
this.panel2.Controls.Add(this.label2);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.textBox2);
this.panel2.Controls.Add(this.textBox1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Right;
this.panel2.Location = new System.Drawing.Point(528, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(272, 424);
this.panel2.TabIndex = 2;
//
// tableLayoutPanel5
//
this.tableLayoutPanel5.ColumnCount = 2;
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.Controls.Add(this.label7, 0, 0);
this.tableLayoutPanel5.Controls.Add(this.lastFMUsername, 1, 0);
this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Top;
this.tableLayoutPanel5.Location = new System.Drawing.Point(0, 105);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
this.tableLayoutPanel5.RowCount = 1;
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 48.8F));
this.tableLayoutPanel5.Size = new System.Drawing.Size(272, 35);
this.tableLayoutPanel5.TabIndex = 18;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Dock = System.Windows.Forms.DockStyle.Fill;
this.label7.Location = new System.Drawing.Point(3, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(130, 35);
this.label7.TabIndex = 0;
this.label7.Text = "LastFM Username";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// lastFMUsername
//
this.lastFMUsername.Location = new System.Drawing.Point(139, 3);
this.lastFMUsername.Name = "lastFMUsername";
this.lastFMUsername.Size = new System.Drawing.Size(125, 27);
this.lastFMUsername.TabIndex = 1;
//
// tableLayoutPanel4
//
this.tableLayoutPanel4.ColumnCount = 2;
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel4.Controls.Add(this.label6, 0, 0);
this.tableLayoutPanel4.Controls.Add(this.discordAppId, 1, 0);
this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Top;
this.tableLayoutPanel4.Location = new System.Drawing.Point(0, 70);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
this.tableLayoutPanel4.RowCount = 1;
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 48.8F));
this.tableLayoutPanel4.Size = new System.Drawing.Size(272, 35);
this.tableLayoutPanel4.TabIndex = 17;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Dock = System.Windows.Forms.DockStyle.Fill;
this.label6.Location = new System.Drawing.Point(3, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(130, 35);
this.label6.TabIndex = 0;
this.label6.Text = "Discord App Id";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// discordAppId
//
this.discordAppId.Location = new System.Drawing.Point(139, 3);
this.discordAppId.Name = "discordAppId";
this.discordAppId.Size = new System.Drawing.Size(125, 27);
this.discordAppId.TabIndex = 1;
this.discordAppId.Text = "775484756380352542";
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 2;
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel3.Controls.Add(this.label5, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.lastFMSecret, 1, 0);
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Top;
this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 35);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 1;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 48.8F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(272, 35);
this.tableLayoutPanel3.TabIndex = 16;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Dock = System.Windows.Forms.DockStyle.Fill;
this.label5.Location = new System.Drawing.Point(3, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(130, 35);
this.label5.TabIndex = 0;
this.label5.Text = "LastFM Secret";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// lastFMSecret
//
this.lastFMSecret.Location = new System.Drawing.Point(139, 3);
this.lastFMSecret.Name = "lastFMSecret";
this.lastFMSecret.Size = new System.Drawing.Size(125, 27);
this.lastFMSecret.TabIndex = 1;
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 2;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.Controls.Add(this.label4, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.lastFMKey, 1, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top;
this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 48.8F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(272, 35);
this.tableLayoutPanel2.TabIndex = 15;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
this.label4.Location = new System.Drawing.Point(3, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(130, 35);
this.label4.TabIndex = 0;
this.label4.Text = "LastFM Key";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// lastFMKey
//
this.lastFMKey.Location = new System.Drawing.Point(139, 3);
this.lastFMKey.Name = "lastFMKey";
this.lastFMKey.Size = new System.Drawing.Size(125, 27);
this.lastFMKey.TabIndex = 1;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.start, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.stop, 0, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 389);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 48.8F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(272, 35);
this.tableLayoutPanel1.TabIndex = 8;
//
// start
//
this.start.Dock = System.Windows.Forms.DockStyle.Bottom;
this.start.Location = new System.Drawing.Point(139, 3);
this.start.Name = "start";
this.start.Size = new System.Drawing.Size(130, 29);
this.start.TabIndex = 2;
this.start.Text = "Start";
this.start.UseVisualStyleBackColor = true;
this.start.Click += new System.EventHandler(this.start_Click);
//
// stop
//
this.stop.Dock = System.Windows.Forms.DockStyle.Bottom;
this.stop.Location = new System.Drawing.Point(3, 3);
this.stop.Name = "stop";
this.stop.Size = new System.Drawing.Size(130, 29);
this.stop.TabIndex = 1;
this.stop.Text = "Stop";
this.stop.UseVisualStyleBackColor = true;
this.stop.Click += new System.EventHandler(this.stop_Click);
//
// label3
//
this.label3.Location = new System.Drawing.Point(0, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(100, 23);
this.label3.TabIndex = 10;
//
// label2
//
this.label2.Location = new System.Drawing.Point(0, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 23);
this.label2.TabIndex = 11;
//
// label1
//
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 23);
this.label1.TabIndex = 12;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(0, 0);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(100, 27);
this.textBox2.TabIndex = 13;
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(0, 0);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 27);
this.textBox1.TabIndex = 14;
//
// Main
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.panel1);
this.Controls.Add(this.statusStrip1);
this.Name = "Main";
this.Text = "Main";
this.Resize += new System.EventHandler(this.Main_Resize);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.tableLayoutPanel5.ResumeLayout(false);
this.tableLayoutPanel5.PerformLayout();
this.tableLayoutPanel4.ResumeLayout(false);
this.tableLayoutPanel4.PerformLayout();
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.NotifyIcon notifier;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.ContextMenuStrip notifyMenuStrip;
private System.Windows.Forms.ToolStripStatusLabel statusLabel;
private System.Windows.Forms.RichTextBox logTextBox;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Button start;
private System.Windows.Forms.Button stop;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox discordAppId;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox lastFMSecret;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox lastFMKey;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox lastFMUsername;
}
}

@ -0,0 +1,236 @@
using DiscordRPC;
using IF.Lastfm.Core.Api;
using IF.Lastfm.Core.Objects;
using Newtonsoft.Json;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LastRPC
{
public partial class Main : Form
{
string configLocation = Path.Combine(AppContext.BaseDirectory, "config.json");
Config config;
LastfmClient lastfmClient;
DiscordRpcClient rpcClient;
Thread lastFMThread;
LastTrack currentTrack;
bool isRunning = false;
public Main()
{
if (File.Exists(configLocation))
{
config = JsonConvert.DeserializeObject<Config>(File.ReadAllText(configLocation));
}
InitializeComponent();
if (config != null)
{
lastFMKey.Text = config.LastFMKey;
lastFMSecret.Text = config.LastFMSecret;
discordAppId.Text = config.DiscordId;
lastFMUsername.Text = config.Username;
}
else
{
config = new Config();
}
stop.Enabled = false;
statusLabel.Text = "Ready";
}
private void notifier_MouseDoubleClick(object sender, MouseEventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}
private void Main_Resize(object sender, System.EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
Hide();
}
}
private void Configure()
{
lastfmClient = new LastfmClient(lastFMKey.Text, lastFMSecret.Text);
rpcClient = new DiscordRpcClient(discordAppId.Text ?? "775484756380352542");
config.Set(lastFMKey.Text, lastFMSecret.Text, discordAppId.Text, lastFMUsername.Text);
File.WriteAllText(configLocation, JsonConvert.SerializeObject(config));
}
private string GetLogMessage(string status, string key, string message)
=> $"[{DateTime.Now:yyyy/MM/dd HH:mm:ss}] [{status}] [{key}] {message}";
private void WriteLog(string message)
{
if (InvokeRequired)
{
this.Invoke(new Action<string>(WriteLog), new object[] { message });
return;
}
logTextBox.AppendText(message);
logTextBox.AppendText(Environment.NewLine);
}
private void StartLastFMScrobbler()
{
string username = lastFMUsername.Text;
statusLabel.Text = "Running";
isRunning = true;
lastFMThread = new Thread(async () =>
{
Thread.CurrentThread.IsBackground = true;
while (isRunning)
{
WriteLog(GetLogMessage("I", "LastFM Request", "Getting User Scrobbles"));
var scrobbles = await lastfmClient.User.GetRecentScrobbles(username, extendedResponse: true, count: 1);
if (scrobbles.Success)
{
if (scrobbles.Content.Count > 0)
{
var mostRecent = scrobbles.Content[0];
if (mostRecent.IsNowPlaying.HasValue && mostRecent.IsNowPlaying.Value)
{
WriteLog(GetLogMessage("I", "LastFM Request", "Found Currently playing"));
if (currentTrack == null || mostRecent.Mbid != currentTrack.Mbid)
{
WriteLog(GetLogMessage("I", "LastFM Request", "Different song, setting Status"));
SetDiscordStatus(mostRecent, true);
}
}
currentTrack = mostRecent;
}
else
{
WriteLog(GetLogMessage("E", "LastFM Request", "Got Nothing Waiting 30s"));
}
}
else
{
WriteLog(GetLogMessage("E", "LastFM Request", "Wasn't successful, waiting 30s"));
}
await Task.Delay(TimeSpan.FromSeconds(30)).ConfigureAwait(false);
}
WriteLog(GetLogMessage("I", "LastFM Request", "Got outside, stopping"));
});
lastFMThread.Start();
}
private void StopLastFMScrobbler()
{
isRunning = false;
statusLabel.Text = "Ready";
}
private void SetDiscordStatus(LastTrack track, bool isPlaying)
{
bool didInit = false;
if (!rpcClient.IsInitialized)
{
WriteLog(GetLogMessage("I", "Discord RPC", "Not Initialised"));
if (rpcClient.Initialize())
{
WriteLog(GetLogMessage("I", "Discord RPC", "Successfully Initialised"));
didInit = true;
}
else
{
WriteLog(GetLogMessage("E", "Discord RPC", "Failure initialising, is Discord running?"));
}
}
else
{
didInit = true;
}
if (didInit)
{
Timestamps stamps = null;
if (track.TimePlayed.HasValue && track.Duration.HasValue)
{
var end = track.TimePlayed.Value.Add(track.Duration.Value);
stamps = new Timestamps
{
EndUnixMilliseconds = Convert.ToUInt64(end.ToUnixTimeMilliseconds())
};
}
rpcClient.SetPresence(new RichPresence
{
Assets = new Assets
{
LargeImageKey = "lastfm",
SmallImageKey = isPlaying ? "playing" : "paused"
},
Details = $"{track.ArtistName} - {track.Name}",
Timestamps = stamps
});
WriteLog(GetLogMessage("I", "Discord RPC", "Set Status"));
}
}
private void start_Click(object sender, System.EventArgs e)
{
discordAppId.ReadOnly = true;
lastFMKey.ReadOnly = true;
lastFMSecret.ReadOnly = true;
lastFMUsername.ReadOnly = true;
Configure();
StartLastFMScrobbler();
start.Enabled = false;
stop.Enabled = true;
}
private void stop_Click(object sender, System.EventArgs e)
{
discordAppId.ReadOnly = false;
lastFMKey.ReadOnly = false;
lastFMSecret.ReadOnly = false;
lastFMUsername.ReadOnly = false;
StopLastFMScrobbler();
start.Enabled = true;
stop.Enabled = false;
}
public class Config
{
public string LastFMKey;
public string LastFMSecret;
public string DiscordId;
public string Username;
public void Set(string key, string secret, string id, string username)
{
LastFMKey = key;
LastFMSecret = secret;
DiscordId = id;
Username = username;
}
}
}
}

@ -0,0 +1,695 @@
<root>
<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">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<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">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<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" 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">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing.Common" name="System.Drawing.Common, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
<data name="notifier.Icon" type="System.Drawing.Icon, System.Drawing.Common" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
IACoJQAA7h4AAAAAAAABACAA6E4AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAADDDgAAww4AAAAA
AAAAAAAAAAAAAAAAAADqkoIA6pKCCOqSgk3qkoKt6pKC6OqSgv3qkoL96pKC6OqSgq3qkoJN6ZKCCOqS
ggAAAAAAAAAAAOeQgADqkoIA6JGBG+qSgpfqkoLw6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC8OqS
gpfqkoIb6pKCAOmRgQD/nowA/5+NG/SYh7XrkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKCteqSghvqkoIA/56LB/+ejJf+noz/9ZiH/+yTgf/skoD/65KB/+qSgv/qkoL/65KB/+yS
gP/skoH/65KC/+qSgv/qkoKX6pKCB/+ejE7/nozv/56M//udjP/flZf/ypeo/9qTk//qlIX/65WF/9uT
kv/Nman/z4uV/+GNhv/rk4L/6pKC7+qSgk7/noyt/56M//mcj/+jerf/aGrb/1ll5f9RUtX/w7DN/56N
zP9JStT/TFni/0xR2v9bTcX/yYKR/+yTgf/qkoKt/56M5/+fi//JiaX/WWLg/7e99P/l5Pj/tKTY/6Gi
4f8zQeD/hXvQ/9PR5f/CxOj/O0vk/4lirv/tlIH/6pKC5/+ejP3/n4v/pnq1/2x46P/z9f7///Ht//+u
m/+Db8j/TknN/8mJmv+Xktf/YW3l/zM92/+ocqD/7ZOB/+qSgv3/noz9/5+L/6l8s/9rd+j/8vP9///9
+v/u0df/aGrb/4yN4P9eWtL/QU3h/3uD5P+0iK7/5o+D/+qSgv/qkoL9/56M5/+fi//RjKH/W2Le/7K5
9P/n6fz/oKny/2Bs5v/L0Pf/UmDn/4GK5f/LyuX/fGnE/7p6l//sk4H/6pKC6P+ejK3/noz/+52O/7F/
sP9wadP/bnPg/3Jz3f+9t+b//fLx/7Kq4v9aXtz/SU3Y/1dLxv/KgpH/7JOB/+qSgq3/noxO/56M7/+e
jP/+noz/75eT/+Oaov/xqqf//6ub//+rm//9s6b/6qCi/9aIlP/gjYf/65KB/+qSgu/qkoJO/56MB/+e
jJf/noz//56M//+ejP//nov//56L//+di///nYv//52L//+ei///n4v/9ZiH/+uSgv/qkoKX6pKCB/+e
jAD/nowb/56Mtv+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//6ejP/0mIe26JGBG+qS
ggD/nYsA/56MAP+ejBv/noyX/56M8f+ejP//noz//56M//+ejP//noz//56M//+ejPH/noyX/5+MG/+e
jAD+n4wAAAAAAAAAAAD/nowA/56MCP+ejE7/noyu/56M6P+ejP3/noz9/56M6P+ejK7/noxO/56MCP+e
jAAAAAAAAAAAAOAHAADAAwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACAAQAAwAMAAOAHAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAADDDgAAww4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAOaOfwDqkoIA6ZGBCeqSgkHqkoKT6pKC0eqSgvPqkoL+6pKC/uqSgvPqkoLR6pKCk+qS
gkHpkYEJ6pKCAOaOfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6ZGBAOiRgQLqkoI36pKCpuqS
gu3qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgu3qkoKm6pKCN+iQgQLpkYEAAAAAAAAA
AAAAAAAAAAAAAAAAAADokYEA55CAB+qSgmzqkoLm6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC5uqSgmzqkYIH6pKCAAAAAAAAAAAAAAAAAP+ejAD/o5AH9JiHgOuS
gvbqkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gvbqkoKA6ZGCB+qSggAAAAAA/52LAP+ahwD/noxs/p6M9vSYh//qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL26pKCbOaOfgDpkYEA/56MAP+e
jDj/nozl/56M//6ejP/0mIf/6pKC/+qSgf/qkYH/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pGB/+qS
gf/qkoL/6pKC/+qSgv/qkoL/6pKC5eqSgjjqkoIA/52LCP+ejKb/noz//56M//+ejP//nov/95qH/+ua
i//rpJb/7ZuJ/+ySgP/qkYD/6pGA/+ySgP/tmoj/7KWW/+yci//tlIL/7ZOA/+uSgv/qkoL/6pKC/+qS
gqbpkYEI/56MQv+ejOz/noz//56M//+ei//kk5n/r4W4/4Z90v90eN7/kni//8yKmP/qqJz/6qic/8aG
mf+UeL3/fYDe/3pz0v+EZbf/p3Gh/92MiP/rk4L/6pKC/+qSguzqkoJC/56Mkv+ejP//noz//5+L/9SO
oP9oY9P/Slji/1Zj5P9EUuT/IDHh/1Ze3v/g3eb/n6Li/zQ/3f8fMOH/MUDh/zpH4f8uPeH/IjHf/2hS
vv/fjYf/65KC/+qSgv/qkoKT/56M0f+ejP//noz/9ZqQ/3pqyv9IV+P/k5rs/+Lj+f/l5/v/pKXr/42S
4v+7v+j/MUDh/yg13v+KjeD/zdDp/9fX5//Fx+f/SFXj/yUx3P+6e5j/7ZOB/+qSgv/qkoLR/56M8/+e
jP//n4v/2pCd/1Vb2/9jb+b/6Or7////////9vP//ryu/++1r/9wdt//Givh/3lcuP/sq57/7uLc/+Tl
6//Aw+j/Q1Di/yMw3f+1eJr/7ZOB/+qSgv/qkoLz/56M/v+ejP//n4v/zIqk/0xX3/98hun/+vr+////
////6eX//6KP/+uYlv9QUdj/LDjc/8CAmP/HgZL/f3jS/1Bd4/8tPOH/HS3g/1lMxf/aion/65KC/+qS
gv/qkoL+/56M/v+ejP//n4v/zouj/01X3v97hOn/+fr+////////+vn//9TJ/8elyP9LV+D/Z3Dj/7mi
yP88PdL/HS7g/zVD4f9YZOT/j3rE/9aIi//rk4H/6pKC/+qSgv/qkoL+/56M8/+ejP//n4v/4pOZ/1td
2f9gbOX/5eb7////////////+vr+/4qT7P9HVeH/q7Hw/52l7/8bLOD/Ymzj/9HT6f/m5Oj/3Kis/9uJ
iP/nkYP/6pKC/+qSgv/qkoLz/56M0f+ejP//noz/+pyO/4lww/9HV+P/jJXs/9/h+v/m5/v/qa/x/09c
4v9ibeX/5ef7/7i99P8xQOD/ZG/j/9TW6f/FwuH/VFHR/0xFyv/PhY7/7JOB/+qSgv/qkoLR/56Mk/+e
jP//noz//5+L/+GTmv95asv/TVng/1dk5f9aZ+X/TFnh/2Ft5f/CyPb//////+vs+/93fuX/NkXh/zdH
4/8wQOL/IDDf/2pUvf/ijob/65KC/+qSgv/qkoKT/56MQv+ejOz/noz//56M//+fi//wmZP/wIap/514
uv+YhtH/spvQ/+Ozv//+0cj//9HI///Ow//sxMv/tJzQ/4Jkvv95Wrb/o2+j/92MiP/rkoL/6pKC/+qS
guzqkoJC/52LCP+ejKb/noz//56M//+ejP//noz//5+L//+fi///pJL//66d//+ij///nYr//52K//+g
jv//rZ3//6aT//+fi//2mYb/7pSB/+uSgv/qkoL/6pKC/+qSgqbqkoII/56MAP+ejDj/nozl/56M//+e
jP//noz//56M//+ejP//noz//52L//+ejP//noz//56M//+ejP//nYv//56M//+ejP/+noz/9JiH/+qS
gv/qkoL/6pKC5eqSgjjqkoIA/52LAP+aiAH/noxt/56M9v+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//p6M//SYh//rkoL26pKCbeqPfwHqkoEAAAAAAP+e
jAD/nYsH/56MgP+ejPb/noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//6ejPb0mIeA4Y1+B+qSggAAAAAAAAAAAAAAAAD/nowA/56LCP+ejGz/nozm/56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M5v+ejGz/n40I/5+MAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/52LAP+diwL/now4/56Mp/+ejO3/noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejO3/noyn/56MOP+diwL/nYsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+b
iQD/nowA/56MCf+ejEL/noyU/56M0v+ejPT/noz//56M//+ejPT/nozS/56MlP+ejEL/nowJ/56MAP+b
iQAAAAAAAAAAAAAAAAAAAAAA/AA/APAADwDgAAcAwAADAMAAAwCAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAIAAAQDAAAMA4AAHAPAADwD8AD8AKAAAACAA
AABAAAAAAQAgAAAAAAAAEAAAww4AAMMOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADej3YA6ZGCAOmRgQbqkoIx6pKCd+qSgrfqkoLi6pKC+eqSgv/qkoL/6pKC+eqSguLqkoK36pKCd+qS
gjHpkYEG6ZGCAN6PdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA6ZKBAOmRgQXqkoI/6pKCoOqSguTqkoL96pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL96pKC5OqSgqDqkoI/6ZGBBemSgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA6JGBAOqSggDpkoEg6pKCk+qSgu7qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgu7qkoKT6ZGCIOqSggDokYEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAOeQgQD/qJIA6pKCPuqSgsrqkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoLK6pKCPvKaiADpkYEAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/nYsAmWdfAPSYh0rrkoLf6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoLf6pKCSu6V
hQDpkYEAAAAAAAAAAAAAAAAA/5yKAP+ejAD/now+/p2M3vSYh//qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoLf6pKCPuqSggDpkIEAAAAAAAAAAAD/nowA/56LIP+ejMn/noz//p6M//SYh//qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoLJ6pKCIOqSggAAAAAA/52LAP+diwT/noyT/56M//+ejP//noz//p6M//SY
h//qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoKT6ZGBBemSgQD/nowA/56MQP+ejO3/noz//56M//+e
jP//noz//p6M//WYhv/sk4H/7ZWD/+yZiP/rlYT/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/65SD/+yZ
iP/slYT/7JOB/+uTgf/rkoL/6pKC/+qSgv/qkoL/6pKC/+qSgu3qkoJA6pKCAP+diwX/noyg/56M//+e
jP//noz//56M//+ejP//nov/8pyV/9Wfrf+/pMT/xLXT/9anr//pkYP/7JOB/+qSgv/qkoL/7JOB/+iQ
g//Ypav/zb3T/8qvxv/Lmav/1IqQ/+KOhf/sk4H/65KC/+qSgv/qkoL/6pKC/+qSgqDpkYEF/56MMv+e
jOP/noz//56M//+ejP//nov/9JqR/6x+s/9vadP/WGTi/z1N4/8tPuL/Pkbb/3Javf/KpLj/68jA/+rH
wP+7l7n/alW//0BI2v8zQuP/Lz/j/zA+4P86PdX/U0jI/5lrqP/jj4X/65KC/+qSgv/qkoL/6pKC5OqS
gjL/nox3/56M/f+ejP//noz//56M//ebj/+Udb7/S1jh/0dW4v9SXuL/Xmrk/0RS4/8gMOH/GSvh/4iR
5//t7uz/pavo/zNC4/8aLOH/HS7g/zA+4f89SuH/PEff/ys64f8bLeL/IzHe/49lrP/qkoL/6pKC/+qS
gv/qkoL96pKCd/+ejLf/noz//56M//+ejP//n4v/voWr/05Z3/9JVuH/cHrn/8vN9P/p6vv/4uT7/6Ws
8f9KWOT/ur7o/8bI6P83ReH/Gyzg/y094v+Hj+b/yMvp/9fY6f/X1OT/vL/n/0lW4v8aLOH/RkLO/9uL
if/rkoL/6pKC/+qSgv/qkoK3/56M4v+ejP//noz//56M//ucjv+Dbsf/R1bi/1Zj4//Q1Pf/////////
/////v3//t3V/96vuv/h1t3/cHrl/xws4P8jMN7/lHW6/+vIwf/t6uf/7e3q/+7u6v/r6+r/Z3Lk/xor
4f84O9X/0oaN/+yTgf/qkoL/6pKC/+qSguL/noz5/56M//+ejP//noz/75iU/2hj0/9HVeH/doDo//b3
/v/////////////q5v//pZT//56J/9qmsv85R+H/Gyzh/1BGyf/ejIf/7piF/+jQzv/W2er/uLzo/32F
5f8rOuH/Gy3i/0pEzP/djIj/65KC/+qSgv/qkoL/6pKC+f+ejP//noz//56M//+fi//plZb/YWDX/0dV
4f+Lk+z//v7//////////////+Xg//+gj///non/v4es/zZE4P8fMOH/jmqz/+uSgf+zd5v/aWPQ/z5M
4v8nN+D/HCzg/xss4f8tNtn/oW6k/+uTgf/qkoL/6pKC/+qSgv/qkoL//56M//+ejP//noz//5+L/+qW
lv9iYdb/RlXh/4mS6//+/v//////////////+vn//8m+//63qv+QgtH/RlTh/0JQ4v/CstL/oXy0/yw1
2f8bLOH/Gyzg/yY24P88SuL/aGXU/7R5nP/pkYP/6pKC/+qSgv/qkoL/6pKC/+qSgv//noz5/56M//+e
jP//noz/9JqR/3Bmz/9GVeL/cnzo//T1/f////////////////////3/5uX3/2Nu5f9HVOD/doDo/9/h
8/9MWeP/Gyvg/y084f9/h+X/trrn/9TX6v/qwbn/8JV//+yTgf/qkoL/6pKC/+qSgv/qkoL/6pKC+f+e
jOL/noz//56M//+ejP//noz/lHW+/0dW4v9TYOL/yc32//////////////////39//+iqfD/S1jh/0pX
4f+utPL/7e/8/05b5f8bK+D/Ym3j/+rq6v/u7uv/7enm/7qTtf+pcZ//xH+U/+iRg//qkoL/6pKC/+qS
gv/qkoLi/56Mt/+ejP//noz//56M//+fi//RjKH/Vlzc/0hW4f9pdOb/xMj1/+fp+//i5Pr/qK/x/1Vh
4/9HVeD/anXm/+nr+//4+f7/doDo/y8+4P9BTuL/u7/o/9vc6v+9ud//Q0bW/x0u4P9dTcP/5I+F/+qS
gv/qkoL/6pKC/+qSgrf/nox3/56M/f+ejP//noz//56M//ydjf+sfrP/VFzd/0dW4v9PXOP/Xmrl/1pm
5P9KWOL/R1bi/2Bt5v/Jzvf///////////+9w/X/Ul/k/zBA4P8vPuH/QE7i/y494f8bLeH/IzHe/5lq
qP/sk4H/6pKC/+qSgv/qkoL96pKCeP+ejDL/nozk/56M//+ejP//noz//56M//ydjf/KiqX/hW/F/2Jh
1v9WXdz/WGTk/2hq2v+ThtT/29Dp//729P//9vT///Pw//vn5f+/ptH/dnng/0RN3v8qNNr/MDfY/05G
yv+Za6f/5I+F/+uSgv/qkoL/6pKC/+qSguTqkoIy/52LBf+ejKH/noz//56M//+ejP//noz//56M//+f
i//7nY7/6paW/92UoP/frr3/7sfL//24rP//qpn//62d//+tnf//qZn//7ep///Qxv/2w8D/4pmi/8yE
mf/KgpH/34yH/+yTgf/rkoL/6pKC/+qSgv/qkoL/6pKCoeqSggX/nowA/56MQP+ejO7/noz//56M//+e
jP//noz//56M//+ejP//n4v//5+L//+fi///o5H//6KR//+di///nYv//52L//+di///opD//6OS//+e
i///nov//5+L//aZhv/rk4L/6pKC/+qSgv/qkoL/6pKC/+qSgu7qkoJB6pKCAP+diwD/nYsF/56MlP+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//p6M//SYh//qkoL/6pKC/+qSgv/qkoL/6pKClOqRggXqkoIAAAAAAP+e
jAD/nowh/56Myv+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//p6M//SYh//qkoL/6pKC/+qSgsrqkoIh6pKCAAAA
AAAAAAAA/52KAP+ejAD/now//56M3/+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//p6M//SYh//rkoLf6pKCP+qS
ggDqkYEAAAAAAAAAAAAAAAAA/52LAP+hjwD/noxL/56M3/+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//p2M3/SY
h0v/278A6pGBAAAAAAAAAAAAAAAAAAAAAAAAAAAA/52LAP+qnAD/now+/56My/+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jMv/now//5GIAP+ejAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/52LAP+ejAD/nowg/56MlP+e
jO7/noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jO//noyU/56MIP+ejAD/nYsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+e
iwD/nYsF/56MQP+ejKL/nozl/56M/f+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M/f+e
jOX/noyi/56MQP+diwX/nowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP+WhwD/nowA/52LBv+ejDL/nox4/56MuP+ejOP/noz6/56M//+ejP//noz6/56M4/+e
jLj/nox4/56MMv+diwb/nowA/5aHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAH//gAAf/wA
AD/4AAAf8AAAD+AAAAfAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//4AB/ygA
AAAwAAAAYAAAAAEAIAAAAAAAACQAAMMOAADDDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOiQgADnjoAB6ZGBFOmRgUTqkoJ+6pKCsuqS
gtnqkoLy6pKC/eqSgv7qkoL+6pKC/eqSgvLqkoLZ6pKCsuqSgn7pkYFE6ZGBFOeOgAHokIAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpkYEA6ZGBBumSgTPqkoKB6pKCx+qS
gu/qkoL96pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv3qkoLv6pKCx+qS
goHpkoEz6ZGBBumRgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6ZGBAOiRgQTpkYE56pKCnuqS
gunqkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoLp6pKCnumRgTnokYEE6ZGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOiPgADrlIMA6ZGBHuqS
govqkoLp6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgunqkoKL6ZGBHuuUgwDoj4AAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6ZGBAOiR
gQLpkoJI6pKCyuqSgv7qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL+6pKCyumR
gkjpkYEC6ZGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADpkYEA6ZGBB+qSgm3qkoLp6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgunqkoJt6ZGBB+mRgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAPKWhgD1mIcK6pKCgOqSgvXqkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL16pKCgOmRgQrpkYEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/52LAP+eiwf+nYuA9JiH+OuSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC+OqSgoHpkYEH6ZGBAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/nYsA/5uJAv+ejGz/noz1/p6M//SYh//rkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gvXqkoJt6I+AAumRgQAAAAAAAAAAAAAAAAAAAAAAAAAAAP+cigD/no0A/52MSP+ejOn/noz//56M//6e
jP/0mIf/65KC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoLp6pKCSeqSgwDokIAAAAAAAAAAAAAAAAAAAAAAAP+eiwD/nosf/56Myf+e
jP//noz//56M//+ejP/+noz/9JiH/+uSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKCyuqRgR/qkoIAAAAAAAAAAAAAAAAA/52LAP+c
igP/noyL/56M//+ejP//noz//56M//+ejP//noz//p6M//SYh//rkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgovokYAD6ZGBAAAA
AAAAAAAA/56MAP+ejDr/nozp/56M//+ejP//noz//56M//+ejP//noz//56M//6ejP/0mIf/65KC/+qS
gv/qkYH/6pGB/+qRgP/qkYH/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qR
gf/qkYD/6pGB/+qRgf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gunpkoI66pKCAAAAAAD/nYsA/5yKBf+ejJ7/noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//nov/9piG/+2VhP/tno3/7aqc/+20p//ro5T/6pKB/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKB/+ufkP/ss6f/7Kud/+yfj//sloT/7JOB/+uSgf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoKf6JCBBemRgQD/nowA/56MM/+ejOj/noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+fi//5npD/56Wp/8ytxv+zqtf/tLTi/8DD6P/Tv9D/5ZeM/+2TgP/rkYD/6pGA/+qR
gP/qkYD/6pGA/+uSgP/tk4D/5ZOJ/9i+yf/Mz+n/xsXk/8a92v/GqsT/y5Kj/9iKi//kj4X/7JOB/+yT
gf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoLp6pKCNOqSggD/oY8A/56Mgf+ejP//noz//56M//+e
jP//noz//56M//+ejP//n4v/9puQ/7yEq/+Bb8r/YWjg/1Rh5P86SeL/Jjbh/ys64f87SOD/X1LH/6Ry
pv/hpaP/67as/+q5sP/qubD/7Lis/9edpP+Waqr/XE/H/0BM4P80QuH/Lz7h/y8+4v8vP+L/Mj7e/0BA
0v9ZS8X/i2Su/9GGjf/sk4H/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKCge2VhQD/nYsV/56Mx/+e
jP//noz//56M//+ejP//noz//56M//+fi//vmJP/jnLB/05Z3/9IV+L/Slfh/0pX4f9IVeH/MkHg/x4u
4P8dLeD/HC3h/yMy3/9xeeL/4+Pq/+vr6//r7Ov/t7vo/0xX4f8gMOD/HC3h/x0t4P8dLeD/HCzg/xws
4P8cLOD/HC3g/x0u4f8cLeH/Hi7h/0dDzf+/fZb/7JOB/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKCx+mR
ghX/noxE/56M7/+ejP//noz//56M//+ejP//noz//56M//abkP+NcsL/Slji/0pY4f9LWOH/SVbg/1Je
4v9ga+T/X2vl/0FO4/8gMOD/HS3g/xss4P9daOP/5OXq/+zs6v+zt+f/N0Xh/xws4P8fL+D/Hi7g/x0t
4P8qOeH/PUri/0NQ4f9DS9z/OEXg/yU04P8eLuD/Hy/g/xst4v9PR8r/2oqK/+uTgv/qkoL/6pKC/+qS
gv/qkoL/6pKC7+qSgkX/nox//56M/v+ejP//noz//56M//+ejP//noz//5+L/7eCrv9OWeD/Sljh/0tY
4f9MWeH/g4ro/83O8//n6fv/6ev7/9vd+f+dpO//RFHj/x8w4P+do+b/7+7q/8/R6f9EUeL/HCzg/x8v
4P8dLuD/LT3h/3qD5f+7vuj/1dfp/9vc6f/a09//0c/k/6et5/9ATeL/HS7g/x8v4P8jMd7/qnOg/+2U
gf/qkoL/6pKC/+qSgv/qkoL/6pKC/uqSgn//noyz/56M//+ejP//noz//56M//+ejP//noz/85mR/3No
zv9JV+L/S1jh/0lX4f+Gj+v/8vP9/////////////////////////v7/19Tt/3l/4f/O0en/6urq/3mC
5P8dLeD/Hy/g/x4u4P8zQN//qqrh/+rp6v/t7er/6+vq/+vr6v/r6+r/7Ovq/+/v6v+Plub/Hi7g/x8v
4P8dLuH/imOu/+2Tgf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgrP/nozZ/56M//+ejP//noz//56M//+e
jP//n4v/1o6f/1Vc3P9KWOH/Slfh/1ll4//Y2/j////////////////////////9/f//2dL//7Wm//Cv
pv/r2NT/yMvp/zVD4f8dLuD/Hy/g/yIw3v+TbbD/7KaY/+rDu//q5+f/6urq/+rq6v/q6ur/7Ozq/+zs
6v+BieX/HS3g/x8v4P8cLuH/hGCx/+2Tgf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgtr/nozz/56M//+e
jP//noz//56M//+ejP//n4v/uYOt/0tY4f9LWOH/SFbh/3yF6f/4+f7////////////////////////p
5f//pZT//5yK//6cif/3saL/kJLf/x4u4P8fL+D/HS7h/05Gyv/ci4j/65GA/+qVhv/r0Mr/7e7s/+zs
6v/m5ur/0dPp/5GY5v8wP+H/Hi7g/x8v4P8fL+D/m2un/+2Ugf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gvP/noz9/56M//+ejP//noz//56M//+ejP//n4v/p3y1/0lX4v9LWOH/SFXh/5mg7v//////////////
///////////////Wzv//nYv//56M//+ei//5oZT/amXV/x0u4f8fL+D/Hy/g/5Fmq//tk4H/65OB/+uS
gP/YrrX/srfo/4aO5f9fauP/Okjh/yEx4P8eLuD/Hy/g/xwu4f87PdP/zIOQ/+yTgf/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv3/noz+/56M//+ejP//noz//56M//+ejP//n4v/pXu3/0lX4v9LWOH/SVbh/6qw
8f/////////////////////////////e2f//n47//56M//+ei//ik5r/XF7Z/zJC4f8fL+D/MTzd/8WH
nP/uk3//2oqK/4tkrv9ERdT/Jjbh/x0t4P8cLOD/HS3g/x8v4P8eLuD/HC3h/zI41/+mcaL/65KC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv7/noz+/56M//+ejP//noz//56M//+ejP//n4v/pXu2/0lX
4v9LWOH/SVbh/6et8P/////////////////////////////49v//vrL//6CP//+nlP+4k8H/TFnh/0lX
4f8xQOD/WGTj/+TDw//WkJT/XE3D/x8v4P8dLuH/Hy/g/x4u4P8cLeD/HCzg/x8v4P8wPuD/YlPF/7l6
mf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv7/noz9/56M//+ejP//noz//56M//+e
jP//n4v/sYCx/0pY4f9LWOH/SFXh/5Sc7f//////////////////////////////////+Pf//+Tf//vm
5f+Gjej/SFbh/0tY4f9IVeH/m6Hp/+3s6f+Dgdn/HS3g/x8v4P8fL+D/Hi7g/yw74f9JVuL/bXfk/5if
5//Evt7/5ZuT/+ySgP/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv3/nozz/56M//+e
jP//noz//56M//+ejP//n4v/yoql/1Ba3/9LWOH/SVbh/3V/6P/19f3/////////////////////////
/////////////9ve+f9bZ+T/Slfh/0pX4f9WY+P/19r4/+vs9P9LWOP/HCzg/x8v4P8fL+D/YGvj/7zA
6P/d3un/6enq/+3u7P/t08z/7JaF/+uSgf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qS
gvP/noza/56M//+ejP//noz//56M//+ejP//n4v/6JWX/2Jh1v9JV+L/Slfh/1Rg4//N0ff/////////
////////////////////////+/z+/5Wd7f9JVuH/S1jh/0hW4f99hun/+Pn+/+zt/P9PW+X/Hi7g/x0u
4P81Q+H/y83o/+7u6v/r6+r/6urq/+vq6v/csrb/0ISN/9uLif/kj4X/6ZGD/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgtr/noyz/56M//+ejP//noz//56M//+ejP//noz//Z2N/49zwf9IV+L/S1jh/0lW
4f96hOn/6+z8///////////////////////+/v//vMH0/1Rg4/9KV+H/S1jh/05b4v++wvT///////P0
/f9td+f/MUDg/x4u4P80Q+H/ys3o/+7t6v/r6+r/6+zr/+3j3v+IccH/NTnV/0VCzv9ZS8X/wH2W/+yT
gf/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgrT/nox//56M/v+ejP//noz//56M//+ejP//noz//5+L/9SO
oP9aXtr/Slfi/0tY4f9LWOH/eYLp/8TI9f/l5vv/6er7/9nc+f+hqO//WGTj/0pX4f9LWOH/SFXh/32H
6f/09P3///////39//+Pl+z/RlTg/zRC4P8gMOD/ZnDk/8vN6P/e3+n/2dvq/6ii2f84Pdb/HC3h/xwt
4v8qNNv/wH6V/+yTgf/qkoL/6pKC/+qSgv/qkoL/6pKC/uqSgoD/noxF/56M7/+ejP//noz//56M//+e
jP//noz//56M//2ejP+vf7L/UVve/0lX4v9LWOH/SVbh/09c4v9daeT/YWzl/1dj4/9KV+H/Slfh/0tY
4f9IVeH/aHPm/9rd+f/////////////////P0/f/WGTj/0hV4f8zQuD/IDDg/zVE4f9IVeL/QU7i/yc3
4P8eLuD/Hy/g/xst4v9fTsL/4o6G/+uSgv/qkoL/6pKC/+qSgv/qkoL/6pKC7+qSgkX/nYsV/56Mx/+e
jP//noz//56M//+ejP//noz//56M//+ejP/6nY7/uYOt/2Ri1f9JV+L/SFfi/0lX4v9JV+H/SVbh/0pX
4f9JV+H/SFfi/05c4/98hur/2dz5///////////////////////9/v//t730/1pl4/9HVOD/MkHg/x4u
4P8cLOD/HC3g/x0u4f8cLuH/Hi7h/0lEzf/Df5T/7JOB/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKCyOqS
ghX/oY8A/56Mgv+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56L/+OTmf+nfLX/eGnM/15g
2P9UXN3/Ul/i/1dk5f9laNv/h3LI/76o1f/y5Ov///bz///39f//9/X///Xz///w7v//5+L//dXO/9Oj
u/+Qidv/ZnHm/z9I3f8oNNz/KDPc/zI41/9NRsv/iWOv/9KGjf/rk4H/6pKC/+qSgv/qkoL/6pKC/+qS
gv/qkoL/6pKCguqThAD/nowA/56MNP+ejOn/noz//56M//+ejP//noz//56M//+ejP//noz//56M//+f
i///n4v/9puQ/+WUmP/Xj6D/06C3/9vF2//s2OL/+8zG//+xoP//p5b//6yd//+voP//r6D//6yd//+n
l///rJ3//8vB///g2f/84t//7bu//9mSof/EgJ3/u3uY/8mCkf/fjIf/7JOB/+yTgf/qkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoLp6pKCNOqSggD/nYsA/52KBf+ejJ//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+fi///n4v//5+L//+lkv//sqL//76y//+qmv//nYv//52L//+d
i///nYv//52L//+di///p5f//7+z//+0pv//pZT//56L//+fi///n4r/95mG/+2Tgf/rkoL/6pKC/+qS
gv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoKf6pGBBeqSgQAAAAAA/56MAP+djDv/nozp/56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//nYv//5yK//+d
i///noz//56M//+ejP//noz//56M//+ejP//noz//5yK//+di///noz//56M//+ejP//noz//p6M//SY
h//rkoL/6pKC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgunqkoI76pKCAAAAAAAAAAAA/52LAP+c
igP/noyM/56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//6ejP/0mIf/65KC/+qSgv/qkoL/6pKC/+qSgv/qkoL/6pKC/+qSgozqkYED6pGCAAAA
AAAAAAAAAAAAAP+ejAD/nowf/56Myv+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP/+noz/9JiH/+uSgv/qkoL/6pKC/+qSgv/qkoL/6pKCy+qS
gh/qkoIAAAAAAAAAAAAAAAAAAAAAAP+cigD/n4wA/52LSv+ejOr/noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//p6M//SYh//rkoL/6pKC/+qS
gv/qkoLq6pKCSuqSggDqkYEAAAAAAAAAAAAAAAAAAAAAAAAAAAD/nYsA/5yKAv+ejG7/noz1/56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//6e
jP/0mIf/65KC/+qSgvXqkoJu6pCCAuqRggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/52LAP+d
iwf/noyC/56M+P+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP/+noz/9JiH+OuSgoLpkYEI6pKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP+djAD/nYsK/56Mgv+ejPX/noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz1/p2LgvOXhQr2mYcAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/nYsA/52LCP+ejG7/nozq/56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejOr/noxu/52LCP+diwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/52LAP+digL/noxJ/56My/+e
jP7/noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz+/56MzP+ejEn/nYoD/52LAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+c
igD/n40A/52LH/+ejI3/nozq/56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejOr/noyN/52LH/+f
jgD/nIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/52LAP+diwT/now7/56MoP+ejOr/noz//56M//+ejP//noz//56M//+e
jP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//nozq/56MoP+e
jDv/nYsE/52LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/nYsA/52LBv+ejDT/noyD/56MyP+e
jPD/noz+/56M//+ejP//noz//56M//+ejP//noz//56M//+ejP//noz//56M//+ejP7/nozw/56MyP+e
jIP/now0/52LBv+djAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+c
igD/mokB/52LFf+ejEb/noyA/56MtP+ejNv/noz0/56M/v+ejP//noz//56M/v+ejPT/nozb/56MtP+e
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
Pa094pFhAAAAAElFTkSuQmCC
</value>
</data>
</root>

@ -0,0 +1,20 @@
using System;
using System.Windows.Forms;
namespace LastRPC
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main());
}
}
}
Loading…
Cancel
Save