Compare commits

..

No commits in common. "master" and "0.9.9.5" have entirely different histories.

18 changed files with 2725 additions and 7787 deletions

Binary file not shown.

Before

(image error) Size: 85 KiB

@ -1,178 +0,0 @@
namespace QobuzDownloaderX
{
partial class AboutForm
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
this.panel1 = new System.Windows.Forms.Panel();
this.verNumLabel2 = new System.Windows.Forms.Label();
this.exitLabel = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.devLabel = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame;
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.panel1.Controls.Add(this.exitLabel);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(365, 95);
this.panel1.TabIndex = 1;
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
//
// verNumLabel2
//
this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
this.verNumLabel2.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.verNumLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.verNumLabel2.Location = new System.Drawing.Point(12, 98);
this.verNumLabel2.Name = "verNumLabel2";
this.verNumLabel2.Size = new System.Drawing.Size(341, 18);
this.verNumLabel2.TabIndex = 32;
this.verNumLabel2.Text = "#.#.#.#";
this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove);
//
// exitLabel
//
this.exitLabel.AutoSize = true;
this.exitLabel.BackColor = System.Drawing.Color.Transparent;
this.exitLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.exitLabel.ForeColor = System.Drawing.Color.Black;
this.exitLabel.Location = new System.Drawing.Point(345, 0);
this.exitLabel.Name = "exitLabel";
this.exitLabel.Size = new System.Drawing.Size(20, 23);
this.exitLabel.TabIndex = 9;
this.exitLabel.Text = "X";
this.exitLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.exitLabel.Click += new System.EventHandler(this.exitLabel_Click);
//
// pictureBox1
//
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx_white;
this.pictureBox1.Location = new System.Drawing.Point(53, 12);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(258, 64);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 29;
this.pictureBox1.TabStop = false;
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
//
// devLabel
//
this.devLabel.AutoSize = true;
this.devLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.devLabel.Location = new System.Drawing.Point(140, 131);
this.devLabel.Name = "devLabel";
this.devLabel.Size = new System.Drawing.Size(84, 13);
this.devLabel.TabIndex = 34;
this.devLabel.Text = "Developer - AiiR";
//
// label1
//
this.label1.AutoSize = true;
this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label1.Location = new System.Drawing.Point(79, 154);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(207, 13);
this.label1.TabIndex = 35;
this.label1.Text = "Inspired By - Qo-DL by Sorrow and DashLt";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label2
//
this.label2.AutoSize = true;
this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label2.Location = new System.Drawing.Point(47, 177);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(271, 26);
this.label2.TabIndex = 36;
this.label2.Text = "Thanks to the users on Github and Telegram for offering\r\nbug reports and ideas!";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label3
//
this.label3.AutoSize = true;
this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label3.Location = new System.Drawing.Point(15, 237);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(334, 26);
this.label3.TabIndex = 37;
this.label3.Text = "IF YOU PAID FOR THIS PROGRAM, YOU HAVE BEEN SCAMMED!\r\nTHIS SOFTWARE IS COMPLETELY" +
" FREE AND OPEN-SOURCE.";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// AboutForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.ClientSize = new System.Drawing.Size(365, 289);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.devLabel);
this.Controls.Add(this.verNumLabel2);
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "AboutForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "QobuzDLX | About";
this.Load += new System.EventHandler(this.AboutForm_Load);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AboutForm_MouseMove);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label verNumLabel2;
private System.Windows.Forms.Label exitLabel;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label devLabel;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
}
}

@ -1,78 +0,0 @@
using QobuzDownloaderX.Properties;
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
namespace QobuzDownloaderX
{
public partial class AboutForm : Form
{
public AboutForm()
{
InitializeComponent();
}
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
private void AboutForm_Load(object sender, EventArgs e)
{
// Get and display version number.
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
private void exitLabel_Click(object sender, EventArgs e)
{
this.Close();
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
private void verNumLabel2_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
private void AboutForm_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
}
}

File diff suppressed because it is too large Load Diff

@ -100,31 +100,6 @@
<setting name="audioType" serializeAs="String"> <setting name="audioType" serializeAs="String">
<value>.flac</value> <value>.flac</value>
</setting> </setting>
<setting name="savedUserID" serializeAs="String">
<value />
</setting>
<setting name="savedUserAuthToken" serializeAs="String">
<value />
</setting>
<setting name="savedAltLoginValue" serializeAs="String">
<value>0</value>
</setting>
<setting name="savedArtSize" serializeAs="String">
<value>1</value>
</setting>
<setting name="typeTag" serializeAs="String">
<value>True</value>
</setting>
<setting name="savedMaxLength" serializeAs="String">
<value>36</value>
</setting>
<setting name="savedFilenameTemplate" serializeAs="String">
<value>1</value>
</setting>
<setting name="savedFilenameTemplateString" serializeAs="String">
<value>
</value>
</setting>
</QobuzDownloaderX.Properties.Settings> </QobuzDownloaderX.Properties.Settings>
</userSettings> </userSettings>
</configuration> </configuration>

@ -49,7 +49,7 @@
this.upcTextBox = new System.Windows.Forms.TextBox(); this.upcTextBox = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.albumArtPicBox = new System.Windows.Forms.PictureBox(); this.albumArtPicBox = new System.Windows.Forms.PictureBox();
this.logoBox = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label6 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label();
this.totalTracksTextbox = new System.Windows.Forms.TextBox(); this.totalTracksTextbox = new System.Windows.Forms.TextBox();
this.totalTracksLabel = new System.Windows.Forms.Label(); this.totalTracksLabel = new System.Windows.Forms.Label();
@ -94,34 +94,8 @@
this.panel6 = new System.Windows.Forms.Panel(); this.panel6 = new System.Windows.Forms.Panel();
this.panel7 = new System.Windows.Forms.Panel(); this.panel7 = new System.Windows.Forms.Panel();
this.panel8 = new System.Windows.Forms.Panel(); this.panel8 = new System.Windows.Forms.Panel();
this.streamableCheckbox = new System.Windows.Forms.CheckBox();
this.secretTextbox = new System.Windows.Forms.TextBox();
this.displaySecretButton = new System.Windows.Forms.Button();
this.profilePictureBox = new System.Windows.Forms.PictureBox();
this.logoutLabel = new System.Windows.Forms.Label();
this.downloadLabelBG = new System.ComponentModel.BackgroundWorker();
this.hiddenTextPanel = new System.Windows.Forms.Panel();
this.downloadFaveAlbumsBG = new System.ComponentModel.BackgroundWorker();
this.downloadFaveArtistsBG = new System.ComponentModel.BackgroundWorker();
this.artSizeSelect = new System.Windows.Forms.ComboBox();
this.artSizeLabel = new System.Windows.Forms.Label();
this.typeCheckbox = new System.Windows.Forms.CheckBox();
this.aboutLabel = new System.Windows.Forms.Label();
this.enableBtnsButton = new System.Windows.Forms.Button();
this.hideDebugButton = new System.Windows.Forms.Button();
this.maxLengthLabel = new System.Windows.Forms.Label();
this.panel9 = new System.Windows.Forms.Panel();
this.maxLengthTextbox = new System.Windows.Forms.TextBox();
this.maxLengthWarnLabel = new System.Windows.Forms.Label();
this.customFormatPanel = new System.Windows.Forms.Panel();
this.customFormatIDTextbox = new System.Windows.Forms.TextBox();
this.formatIDLabel = new System.Windows.Forms.Label();
this.filenameTempSelect = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.downloadPlaylistBG = new System.ComponentModel.BackgroundWorker();
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.logoBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.profilePictureBox)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// testURLBox // testURLBox
@ -339,17 +313,16 @@
this.albumArtPicBox.TabIndex = 39; this.albumArtPicBox.TabIndex = 39;
this.albumArtPicBox.TabStop = false; this.albumArtPicBox.TabStop = false;
// //
// logoBox // pictureBox1
// //
this.logoBox.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx_white; this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx_white;
this.logoBox.Location = new System.Drawing.Point(12, 12); this.pictureBox1.Location = new System.Drawing.Point(12, 12);
this.logoBox.Name = "logoBox"; this.pictureBox1.Name = "pictureBox1";
this.logoBox.Size = new System.Drawing.Size(207, 52); this.pictureBox1.Size = new System.Drawing.Size(207, 52);
this.logoBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.logoBox.TabIndex = 36; this.pictureBox1.TabIndex = 36;
this.logoBox.TabStop = false; this.pictureBox1.TabStop = false;
this.logoBox.Click += new System.EventHandler(this.logoBox_Click); this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
this.logoBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
// //
// label6 // label6
// //
@ -357,9 +330,9 @@
this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label6.Location = new System.Drawing.Point(12, 70); this.label6.Location = new System.Drawing.Point(12, 70);
this.label6.Name = "label6"; this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(61, 13); this.label6.Size = new System.Drawing.Size(132, 13);
this.label6.TabIndex = 49; this.label6.TabIndex = 49;
this.label6.Text = "Qobuz Link"; this.label6.Text = "Qobuz Album / Track Link";
// //
// totalTracksTextbox // totalTracksTextbox
// //
@ -455,7 +428,7 @@
this.albumArtistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.albumArtistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.albumArtistCheckbox.FlatAppearance.BorderSize = 0; this.albumArtistCheckbox.FlatAppearance.BorderSize = 0;
this.albumArtistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.albumArtistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.albumArtistCheckbox.Location = new System.Drawing.Point(12, 540); this.albumArtistCheckbox.Location = new System.Drawing.Point(325, 563);
this.albumArtistCheckbox.Name = "albumArtistCheckbox"; this.albumArtistCheckbox.Name = "albumArtistCheckbox";
this.albumArtistCheckbox.Size = new System.Drawing.Size(81, 17); this.albumArtistCheckbox.Size = new System.Drawing.Size(81, 17);
this.albumArtistCheckbox.TabIndex = 62; this.albumArtistCheckbox.TabIndex = 62;
@ -470,7 +443,7 @@
this.artistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.artistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.artistCheckbox.FlatAppearance.BorderSize = 0; this.artistCheckbox.FlatAppearance.BorderSize = 0;
this.artistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.artistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.artistCheckbox.Location = new System.Drawing.Point(183, 540); this.artistCheckbox.Location = new System.Drawing.Point(325, 609);
this.artistCheckbox.Name = "artistCheckbox"; this.artistCheckbox.Name = "artistCheckbox";
this.artistCheckbox.Size = new System.Drawing.Size(80, 17); this.artistCheckbox.Size = new System.Drawing.Size(80, 17);
this.artistCheckbox.TabIndex = 63; this.artistCheckbox.TabIndex = 63;
@ -485,7 +458,7 @@
this.trackTitleCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.trackTitleCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.trackTitleCheckbox.FlatAppearance.BorderSize = 0; this.trackTitleCheckbox.FlatAppearance.BorderSize = 0;
this.trackTitleCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.trackTitleCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.trackTitleCheckbox.Location = new System.Drawing.Point(269, 540); this.trackTitleCheckbox.Location = new System.Drawing.Point(325, 586);
this.trackTitleCheckbox.Name = "trackTitleCheckbox"; this.trackTitleCheckbox.Name = "trackTitleCheckbox";
this.trackTitleCheckbox.Size = new System.Drawing.Size(77, 17); this.trackTitleCheckbox.Size = new System.Drawing.Size(77, 17);
this.trackTitleCheckbox.TabIndex = 64; this.trackTitleCheckbox.TabIndex = 64;
@ -500,7 +473,7 @@
this.trackNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.trackNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.trackNumberCheckbox.FlatAppearance.BorderSize = 0; this.trackNumberCheckbox.FlatAppearance.BorderSize = 0;
this.trackNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.trackNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.trackNumberCheckbox.Location = new System.Drawing.Point(104, 568); this.trackNumberCheckbox.Location = new System.Drawing.Point(325, 632);
this.trackNumberCheckbox.Name = "trackNumberCheckbox"; this.trackNumberCheckbox.Name = "trackNumberCheckbox";
this.trackNumberCheckbox.Size = new System.Drawing.Size(94, 17); this.trackNumberCheckbox.Size = new System.Drawing.Size(94, 17);
this.trackNumberCheckbox.TabIndex = 65; this.trackNumberCheckbox.TabIndex = 65;
@ -515,7 +488,7 @@
this.trackTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.trackTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.trackTotalCheckbox.FlatAppearance.BorderSize = 0; this.trackTotalCheckbox.FlatAppearance.BorderSize = 0;
this.trackTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.trackTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.trackTotalCheckbox.Location = new System.Drawing.Point(12, 568); this.trackTotalCheckbox.Location = new System.Drawing.Point(325, 655);
this.trackTotalCheckbox.Name = "trackTotalCheckbox"; this.trackTotalCheckbox.Name = "trackTotalCheckbox";
this.trackTotalCheckbox.Size = new System.Drawing.Size(86, 17); this.trackTotalCheckbox.Size = new System.Drawing.Size(86, 17);
this.trackTotalCheckbox.TabIndex = 66; this.trackTotalCheckbox.TabIndex = 66;
@ -530,7 +503,7 @@
this.discNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.discNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.discNumberCheckbox.FlatAppearance.BorderSize = 0; this.discNumberCheckbox.FlatAppearance.BorderSize = 0;
this.discNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.discNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.discNumberCheckbox.Location = new System.Drawing.Point(289, 568); this.discNumberCheckbox.Location = new System.Drawing.Point(325, 676);
this.discNumberCheckbox.Name = "discNumberCheckbox"; this.discNumberCheckbox.Name = "discNumberCheckbox";
this.discNumberCheckbox.Size = new System.Drawing.Size(87, 17); this.discNumberCheckbox.Size = new System.Drawing.Size(87, 17);
this.discNumberCheckbox.TabIndex = 67; this.discNumberCheckbox.TabIndex = 67;
@ -545,7 +518,7 @@
this.discTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.discTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.discTotalCheckbox.FlatAppearance.BorderSize = 0; this.discTotalCheckbox.FlatAppearance.BorderSize = 0;
this.discTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.discTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.discTotalCheckbox.Location = new System.Drawing.Point(204, 568); this.discTotalCheckbox.Location = new System.Drawing.Point(325, 699);
this.discTotalCheckbox.Name = "discTotalCheckbox"; this.discTotalCheckbox.Name = "discTotalCheckbox";
this.discTotalCheckbox.Size = new System.Drawing.Size(79, 17); this.discTotalCheckbox.Size = new System.Drawing.Size(79, 17);
this.discTotalCheckbox.TabIndex = 68; this.discTotalCheckbox.TabIndex = 68;
@ -560,7 +533,7 @@
this.albumCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.albumCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.albumCheckbox.FlatAppearance.BorderSize = 0; this.albumCheckbox.FlatAppearance.BorderSize = 0;
this.albumCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.albumCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.albumCheckbox.Location = new System.Drawing.Point(99, 540); this.albumCheckbox.Location = new System.Drawing.Point(325, 540);
this.albumCheckbox.Name = "albumCheckbox"; this.albumCheckbox.Name = "albumCheckbox";
this.albumCheckbox.Size = new System.Drawing.Size(78, 17); this.albumCheckbox.Size = new System.Drawing.Size(78, 17);
this.albumCheckbox.TabIndex = 69; this.albumCheckbox.TabIndex = 69;
@ -575,7 +548,7 @@
this.explicitCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.explicitCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.explicitCheckbox.FlatAppearance.BorderSize = 0; this.explicitCheckbox.FlatAppearance.BorderSize = 0;
this.explicitCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.explicitCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.explicitCheckbox.Location = new System.Drawing.Point(458, 568); this.explicitCheckbox.Location = new System.Drawing.Point(425, 678);
this.explicitCheckbox.Name = "explicitCheckbox"; this.explicitCheckbox.Name = "explicitCheckbox";
this.explicitCheckbox.Size = new System.Drawing.Size(106, 17); this.explicitCheckbox.Size = new System.Drawing.Size(106, 17);
this.explicitCheckbox.TabIndex = 76; this.explicitCheckbox.TabIndex = 76;
@ -590,7 +563,7 @@
this.upcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.upcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.upcCheckbox.FlatAppearance.BorderSize = 0; this.upcCheckbox.FlatAppearance.BorderSize = 0;
this.upcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.upcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.upcCheckbox.Location = new System.Drawing.Point(763, 540); this.upcCheckbox.Location = new System.Drawing.Point(425, 655);
this.upcCheckbox.Name = "upcCheckbox"; this.upcCheckbox.Name = "upcCheckbox";
this.upcCheckbox.Size = new System.Drawing.Size(52, 17); this.upcCheckbox.Size = new System.Drawing.Size(52, 17);
this.upcCheckbox.TabIndex = 75; this.upcCheckbox.TabIndex = 75;
@ -605,7 +578,7 @@
this.isrcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.isrcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.isrcCheckbox.FlatAppearance.BorderSize = 0; this.isrcCheckbox.FlatAppearance.BorderSize = 0;
this.isrcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.isrcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.isrcCheckbox.Location = new System.Drawing.Point(821, 540); this.isrcCheckbox.Location = new System.Drawing.Point(425, 632);
this.isrcCheckbox.Name = "isrcCheckbox"; this.isrcCheckbox.Name = "isrcCheckbox";
this.isrcCheckbox.Size = new System.Drawing.Size(51, 17); this.isrcCheckbox.Size = new System.Drawing.Size(51, 17);
this.isrcCheckbox.TabIndex = 74; this.isrcCheckbox.TabIndex = 74;
@ -620,7 +593,7 @@
this.copyrightCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.copyrightCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.copyrightCheckbox.FlatAppearance.BorderSize = 0; this.copyrightCheckbox.FlatAppearance.BorderSize = 0;
this.copyrightCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.copyrightCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.copyrightCheckbox.Location = new System.Drawing.Point(687, 540); this.copyrightCheckbox.Location = new System.Drawing.Point(425, 609);
this.copyrightCheckbox.Name = "copyrightCheckbox"; this.copyrightCheckbox.Name = "copyrightCheckbox";
this.copyrightCheckbox.Size = new System.Drawing.Size(70, 17); this.copyrightCheckbox.Size = new System.Drawing.Size(70, 17);
this.copyrightCheckbox.TabIndex = 73; this.copyrightCheckbox.TabIndex = 73;
@ -635,7 +608,7 @@
this.composerCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.composerCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.composerCheckbox.FlatAppearance.BorderSize = 0; this.composerCheckbox.FlatAppearance.BorderSize = 0;
this.composerCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.composerCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.composerCheckbox.Location = new System.Drawing.Point(608, 540); this.composerCheckbox.Location = new System.Drawing.Point(425, 586);
this.composerCheckbox.Name = "composerCheckbox"; this.composerCheckbox.Name = "composerCheckbox";
this.composerCheckbox.Size = new System.Drawing.Size(73, 17); this.composerCheckbox.Size = new System.Drawing.Size(73, 17);
this.composerCheckbox.TabIndex = 72; this.composerCheckbox.TabIndex = 72;
@ -650,7 +623,7 @@
this.genreCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.genreCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.genreCheckbox.FlatAppearance.BorderSize = 0; this.genreCheckbox.FlatAppearance.BorderSize = 0;
this.genreCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.genreCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.genreCheckbox.Location = new System.Drawing.Point(547, 540); this.genreCheckbox.Location = new System.Drawing.Point(425, 563);
this.genreCheckbox.Name = "genreCheckbox"; this.genreCheckbox.Name = "genreCheckbox";
this.genreCheckbox.Size = new System.Drawing.Size(55, 17); this.genreCheckbox.Size = new System.Drawing.Size(55, 17);
this.genreCheckbox.TabIndex = 71; this.genreCheckbox.TabIndex = 71;
@ -665,7 +638,7 @@
this.releaseCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.releaseCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.releaseCheckbox.FlatAppearance.BorderSize = 0; this.releaseCheckbox.FlatAppearance.BorderSize = 0;
this.releaseCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.releaseCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.releaseCheckbox.Location = new System.Drawing.Point(450, 540); this.releaseCheckbox.Location = new System.Drawing.Point(425, 540);
this.releaseCheckbox.Name = "releaseCheckbox"; this.releaseCheckbox.Name = "releaseCheckbox";
this.releaseCheckbox.Size = new System.Drawing.Size(91, 17); this.releaseCheckbox.Size = new System.Drawing.Size(91, 17);
this.releaseCheckbox.TabIndex = 70; this.releaseCheckbox.TabIndex = 70;
@ -678,7 +651,7 @@
this.commentCheckbox.AutoSize = true; this.commentCheckbox.AutoSize = true;
this.commentCheckbox.FlatAppearance.BorderSize = 0; this.commentCheckbox.FlatAppearance.BorderSize = 0;
this.commentCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.commentCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.commentCheckbox.Location = new System.Drawing.Point(570, 568); this.commentCheckbox.Location = new System.Drawing.Point(533, 699);
this.commentCheckbox.Name = "commentCheckbox"; this.commentCheckbox.Name = "commentCheckbox";
this.commentCheckbox.Size = new System.Drawing.Size(70, 17); this.commentCheckbox.Size = new System.Drawing.Size(70, 17);
this.commentCheckbox.TabIndex = 78; this.commentCheckbox.TabIndex = 78;
@ -691,7 +664,7 @@
this.commentTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.commentTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.commentTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.commentTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.commentTextbox.ForeColor = System.Drawing.Color.White; this.commentTextbox.ForeColor = System.Drawing.Color.White;
this.commentTextbox.Location = new System.Drawing.Point(646, 566); this.commentTextbox.Location = new System.Drawing.Point(609, 697);
this.commentTextbox.Multiline = true; this.commentTextbox.Multiline = true;
this.commentTextbox.Name = "commentTextbox"; this.commentTextbox.Name = "commentTextbox";
this.commentTextbox.Size = new System.Drawing.Size(112, 17); this.commentTextbox.Size = new System.Drawing.Size(112, 17);
@ -705,7 +678,7 @@
this.imageCheckbox.CheckState = System.Windows.Forms.CheckState.Checked; this.imageCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.imageCheckbox.FlatAppearance.BorderSize = 0; this.imageCheckbox.FlatAppearance.BorderSize = 0;
this.imageCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.imageCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.imageCheckbox.Location = new System.Drawing.Point(382, 568); this.imageCheckbox.Location = new System.Drawing.Point(425, 699);
this.imageCheckbox.Name = "imageCheckbox"; this.imageCheckbox.Name = "imageCheckbox";
this.imageCheckbox.Size = new System.Drawing.Size(70, 17); this.imageCheckbox.Size = new System.Drawing.Size(70, 17);
this.imageCheckbox.TabIndex = 80; this.imageCheckbox.TabIndex = 80;
@ -767,7 +740,7 @@
// //
this.mp3WarnLabel.AutoSize = true; this.mp3WarnLabel.AutoSize = true;
this.mp3WarnLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.mp3WarnLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.mp3WarnLabel.Location = new System.Drawing.Point(744, 596); this.mp3WarnLabel.Location = new System.Drawing.Point(744, 711);
this.mp3WarnLabel.Name = "mp3WarnLabel"; this.mp3WarnLabel.Name = "mp3WarnLabel";
this.mp3WarnLabel.Size = new System.Drawing.Size(182, 13); this.mp3WarnLabel.Size = new System.Drawing.Size(182, 13);
this.mp3WarnLabel.TabIndex = 85; this.mp3WarnLabel.TabIndex = 85;
@ -864,312 +837,17 @@
// panel8 // panel8
// //
this.panel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.panel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.panel8.Location = new System.Drawing.Point(646, 585); this.panel8.Location = new System.Drawing.Point(609, 716);
this.panel8.Name = "panel8"; this.panel8.Name = "panel8";
this.panel8.Size = new System.Drawing.Size(112, 1); this.panel8.Size = new System.Drawing.Size(112, 1);
this.panel8.TabIndex = 90; this.panel8.TabIndex = 90;
// //
// streamableCheckbox
//
this.streamableCheckbox.AutoSize = true;
this.streamableCheckbox.Checked = true;
this.streamableCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.streamableCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.streamableCheckbox.Location = new System.Drawing.Point(243, 41);
this.streamableCheckbox.Name = "streamableCheckbox";
this.streamableCheckbox.Size = new System.Drawing.Size(113, 17);
this.streamableCheckbox.TabIndex = 91;
this.streamableCheckbox.Text = "Streamable Check";
this.streamableCheckbox.UseVisualStyleBackColor = true;
this.streamableCheckbox.Visible = false;
//
// secretTextbox
//
this.secretTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.secretTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.secretTextbox.ForeColor = System.Drawing.Color.White;
this.secretTextbox.Location = new System.Drawing.Point(412, 15);
this.secretTextbox.Multiline = true;
this.secretTextbox.Name = "secretTextbox";
this.secretTextbox.ReadOnly = true;
this.secretTextbox.Size = new System.Drawing.Size(179, 20);
this.secretTextbox.TabIndex = 92;
this.secretTextbox.Visible = false;
this.secretTextbox.WordWrap = false;
//
// displaySecretButton
//
this.displaySecretButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
this.displaySecretButton.FlatAppearance.BorderSize = 0;
this.displaySecretButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.displaySecretButton.ForeColor = System.Drawing.Color.White;
this.displaySecretButton.Location = new System.Drawing.Point(303, 12);
this.displaySecretButton.Name = "displaySecretButton";
this.displaySecretButton.Size = new System.Drawing.Size(103, 23);
this.displaySecretButton.TabIndex = 93;
this.displaySecretButton.Text = "Display appSecret";
this.displaySecretButton.UseVisualStyleBackColor = false;
this.displaySecretButton.Visible = false;
this.displaySecretButton.Click += new System.EventHandler(this.displaySecretButton_Click);
//
// profilePictureBox
//
this.profilePictureBox.Location = new System.Drawing.Point(15, 501);
this.profilePictureBox.Name = "profilePictureBox";
this.profilePictureBox.Size = new System.Drawing.Size(20, 20);
this.profilePictureBox.TabIndex = 94;
this.profilePictureBox.TabStop = false;
//
// logoutLabel
//
this.logoutLabel.AutoSize = true;
this.logoutLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.logoutLabel.Location = new System.Drawing.Point(41, 506);
this.logoutLabel.Name = "logoutLabel";
this.logoutLabel.Size = new System.Drawing.Size(161, 13);
this.logoutLabel.TabIndex = 95;
this.logoutLabel.Text = "Logged in as %name%, Log out?";
this.logoutLabel.Click += new System.EventHandler(this.logoutLabel_Click);
this.logoutLabel.MouseLeave += new System.EventHandler(this.logoutLabel_MouseLeave);
this.logoutLabel.MouseHover += new System.EventHandler(this.logoutLabel_MouseHover);
//
// downloadLabelBG
//
this.downloadLabelBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadLabelBG_DoWork);
//
// hiddenTextPanel
//
this.hiddenTextPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.hiddenTextPanel.Location = new System.Drawing.Point(412, 36);
this.hiddenTextPanel.Name = "hiddenTextPanel";
this.hiddenTextPanel.Size = new System.Drawing.Size(179, 1);
this.hiddenTextPanel.TabIndex = 87;
this.hiddenTextPanel.Visible = false;
//
// downloadFaveAlbumsBG
//
this.downloadFaveAlbumsBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadFaveAlbumsBG_DoWork);
//
// downloadFaveArtistsBG
//
this.downloadFaveArtistsBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadFaveArtistsBG_DoWork);
//
// artSizeSelect
//
this.artSizeSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.artSizeSelect.FormattingEnabled = true;
this.artSizeSelect.Items.AddRange(new object[] {
"max",
"600",
"300",
"150",
"100",
"50"});
this.artSizeSelect.Location = new System.Drawing.Point(113, 593);
this.artSizeSelect.Name = "artSizeSelect";
this.artSizeSelect.Size = new System.Drawing.Size(87, 21);
this.artSizeSelect.TabIndex = 96;
this.artSizeSelect.SelectedIndexChanged += new System.EventHandler(this.artSizeSelect_SelectedIndexChanged);
//
// artSizeLabel
//
this.artSizeLabel.AutoSize = true;
this.artSizeLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.artSizeLabel.Location = new System.Drawing.Point(12, 596);
this.artSizeLabel.Name = "artSizeLabel";
this.artSizeLabel.Size = new System.Drawing.Size(207, 13);
this.artSizeLabel.TabIndex = 97;
this.artSizeLabel.Text = "Embedded Art Size: px";
//
// typeCheckbox
//
this.typeCheckbox.AutoSize = true;
this.typeCheckbox.Checked = true;
this.typeCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
this.typeCheckbox.FlatAppearance.BorderSize = 0;
this.typeCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.typeCheckbox.Location = new System.Drawing.Point(352, 540);
this.typeCheckbox.Name = "typeCheckbox";
this.typeCheckbox.Size = new System.Drawing.Size(92, 17);
this.typeCheckbox.TabIndex = 98;
this.typeCheckbox.Text = "Release Type";
this.typeCheckbox.UseVisualStyleBackColor = true;
this.typeCheckbox.CheckedChanged += new System.EventHandler(this.typeCheckbox_CheckedChanged);
//
// aboutLabel
//
this.aboutLabel.AutoSize = true;
this.aboutLabel.BackColor = System.Drawing.Color.Transparent;
this.aboutLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.aboutLabel.ForeColor = System.Drawing.Color.White;
this.aboutLabel.Location = new System.Drawing.Point(866, 8);
this.aboutLabel.Name = "aboutLabel";
this.aboutLabel.Size = new System.Drawing.Size(15, 23);
this.aboutLabel.TabIndex = 99;
this.aboutLabel.Text = "i";
this.aboutLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.aboutLabel.Click += new System.EventHandler(this.aboutLabel_Click);
this.aboutLabel.MouseLeave += new System.EventHandler(this.aboutLabel_MouseLeave);
this.aboutLabel.MouseHover += new System.EventHandler(this.aboutLabel_MouseHover);
//
// enableBtnsButton
//
this.enableBtnsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
this.enableBtnsButton.FlatAppearance.BorderSize = 0;
this.enableBtnsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.enableBtnsButton.ForeColor = System.Drawing.Color.White;
this.enableBtnsButton.Location = new System.Drawing.Point(597, 28);
this.enableBtnsButton.Name = "enableBtnsButton";
this.enableBtnsButton.Size = new System.Drawing.Size(120, 23);
this.enableBtnsButton.TabIndex = 100;
this.enableBtnsButton.Text = "Re-Enable Buttons";
this.enableBtnsButton.UseVisualStyleBackColor = false;
this.enableBtnsButton.Visible = false;
this.enableBtnsButton.Click += new System.EventHandler(this.enableBtnsButton_Click);
//
// hideDebugButton
//
this.hideDebugButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
this.hideDebugButton.FlatAppearance.BorderSize = 0;
this.hideDebugButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.hideDebugButton.ForeColor = System.Drawing.Color.White;
this.hideDebugButton.Location = new System.Drawing.Point(243, 12);
this.hideDebugButton.Name = "hideDebugButton";
this.hideDebugButton.Size = new System.Drawing.Size(54, 23);
this.hideDebugButton.TabIndex = 101;
this.hideDebugButton.Text = "Hide";
this.hideDebugButton.UseVisualStyleBackColor = false;
this.hideDebugButton.Visible = false;
this.hideDebugButton.Click += new System.EventHandler(this.hideDebugButton_Click);
//
// maxLengthLabel
//
this.maxLengthLabel.AutoSize = true;
this.maxLengthLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.maxLengthLabel.Location = new System.Drawing.Point(444, 596);
this.maxLengthLabel.Name = "maxLengthLabel";
this.maxLengthLabel.Size = new System.Drawing.Size(121, 13);
this.maxLengthLabel.TabIndex = 102;
this.maxLengthLabel.Text = "Max File Name Length**";
//
// panel9
//
this.panel9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.panel9.Location = new System.Drawing.Point(567, 610);
this.panel9.Name = "panel9";
this.panel9.Size = new System.Drawing.Size(68, 1);
this.panel9.TabIndex = 92;
//
// maxLengthTextbox
//
this.maxLengthTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.maxLengthTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.maxLengthTextbox.ForeColor = System.Drawing.Color.White;
this.maxLengthTextbox.Location = new System.Drawing.Point(567, 596);
this.maxLengthTextbox.Multiline = true;
this.maxLengthTextbox.Name = "maxLengthTextbox";
this.maxLengthTextbox.Size = new System.Drawing.Size(68, 17);
this.maxLengthTextbox.TabIndex = 91;
this.maxLengthTextbox.TextChanged += new System.EventHandler(this.maxLengthTextbox_TextChanged);
//
// maxLengthWarnLabel
//
this.maxLengthWarnLabel.AutoSize = true;
this.maxLengthWarnLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.maxLengthWarnLabel.Location = new System.Drawing.Point(819, 610);
this.maxLengthWarnLabel.Name = "maxLengthWarnLabel";
this.maxLengthWarnLabel.Size = new System.Drawing.Size(107, 13);
this.maxLengthWarnLabel.TabIndex = 103;
this.maxLengthWarnLabel.Text = "** = Max value is 110";
//
// customFormatPanel
//
this.customFormatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.customFormatPanel.Location = new System.Drawing.Point(572, 60);
this.customFormatPanel.Name = "customFormatPanel";
this.customFormatPanel.Size = new System.Drawing.Size(19, 1);
this.customFormatPanel.TabIndex = 104;
this.customFormatPanel.Visible = false;
//
// customFormatIDTextbox
//
this.customFormatIDTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.customFormatIDTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.customFormatIDTextbox.ForeColor = System.Drawing.Color.White;
this.customFormatIDTextbox.Location = new System.Drawing.Point(572, 42);
this.customFormatIDTextbox.Multiline = true;
this.customFormatIDTextbox.Name = "customFormatIDTextbox";
this.customFormatIDTextbox.Size = new System.Drawing.Size(19, 20);
this.customFormatIDTextbox.TabIndex = 105;
this.customFormatIDTextbox.Visible = false;
this.customFormatIDTextbox.WordWrap = false;
this.customFormatIDTextbox.TextChanged += new System.EventHandler(this.customFormatIDTextbox_TextChanged);
//
// formatIDLabel
//
this.formatIDLabel.AutoSize = true;
this.formatIDLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.formatIDLabel.Location = new System.Drawing.Point(513, 42);
this.formatIDLabel.Name = "formatIDLabel";
this.formatIDLabel.Size = new System.Drawing.Size(53, 13);
this.formatIDLabel.TabIndex = 106;
this.formatIDLabel.Text = "Format ID";
this.formatIDLabel.Visible = false;
//
// filenameTempSelect
//
this.filenameTempSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.filenameTempSelect.FormattingEnabled = true;
this.filenameTempSelect.Items.AddRange(new object[] {
"00 Trackname",
"00 - Trackname"});
this.filenameTempSelect.Location = new System.Drawing.Point(325, 593);
this.filenameTempSelect.Name = "filenameTempSelect";
this.filenameTempSelect.Size = new System.Drawing.Size(108, 21);
this.filenameTempSelect.TabIndex = 107;
this.filenameTempSelect.SelectedIndexChanged += new System.EventHandler(this.filenameTempSelect_SelectedIndexChanged);
//
// label7
//
this.label7.AutoSize = true;
this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label7.Location = new System.Drawing.Point(225, 596);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(99, 13);
this.label7.TabIndex = 108;
this.label7.Text = "Filename Template:";
//
// downloadPlaylistBG
//
this.downloadPlaylistBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadPlaylistBG_DoWork);
//
// QobuzDownloaderX // QobuzDownloaderX
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.ClientSize = new System.Drawing.Size(938, 632); this.ClientSize = new System.Drawing.Size(938, 533);
this.Controls.Add(this.filenameTempSelect);
this.Controls.Add(this.label7);
this.Controls.Add(this.formatIDLabel);
this.Controls.Add(this.customFormatPanel);
this.Controls.Add(this.customFormatIDTextbox);
this.Controls.Add(this.maxLengthWarnLabel);
this.Controls.Add(this.panel9);
this.Controls.Add(this.maxLengthTextbox);
this.Controls.Add(this.maxLengthLabel);
this.Controls.Add(this.hideDebugButton);
this.Controls.Add(this.enableBtnsButton);
this.Controls.Add(this.aboutLabel);
this.Controls.Add(this.typeCheckbox);
this.Controls.Add(this.artSizeSelect);
this.Controls.Add(this.artSizeLabel);
this.Controls.Add(this.hiddenTextPanel);
this.Controls.Add(this.logoutLabel);
this.Controls.Add(this.profilePictureBox);
this.Controls.Add(this.displaySecretButton);
this.Controls.Add(this.secretTextbox);
this.Controls.Add(this.streamableCheckbox);
this.Controls.Add(this.panel8); this.Controls.Add(this.panel8);
this.Controls.Add(this.panel7); this.Controls.Add(this.panel7);
this.Controls.Add(this.panel6); this.Controls.Add(this.panel6);
@ -1221,7 +899,7 @@
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.albumArtPicBox); this.Controls.Add(this.albumArtPicBox);
this.Controls.Add(this.verNumLabel); this.Controls.Add(this.verNumLabel);
this.Controls.Add(this.logoBox); this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.imageURLTextbox); this.Controls.Add(this.imageURLTextbox);
this.Controls.Add(this.downloadButton); this.Controls.Add(this.downloadButton);
this.Controls.Add(this.albumUrl); this.Controls.Add(this.albumUrl);
@ -1239,8 +917,7 @@
this.Load += new System.EventHandler(this.Form1_Load); this.Load += new System.EventHandler(this.Form1_Load);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.QobuzDownloaderX_MouseMove); this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.QobuzDownloaderX_MouseMove);
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.logoBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.profilePictureBox)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -1256,7 +933,7 @@
private System.Windows.Forms.Button downloadButton; private System.Windows.Forms.Button downloadButton;
private System.Windows.Forms.TextBox albumUrl; private System.Windows.Forms.TextBox albumUrl;
private System.Windows.Forms.TextBox imageURLTextbox; private System.Windows.Forms.TextBox imageURLTextbox;
private System.Windows.Forms.PictureBox logoBox; private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label verNumLabel; private System.Windows.Forms.Label verNumLabel;
private System.Windows.Forms.PictureBox albumArtPicBox; private System.Windows.Forms.PictureBox albumArtPicBox;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
@ -1312,31 +989,6 @@
private System.Windows.Forms.Panel panel6; private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.Panel panel7; private System.Windows.Forms.Panel panel7;
private System.Windows.Forms.Panel panel8; private System.Windows.Forms.Panel panel8;
private System.Windows.Forms.CheckBox streamableCheckbox;
private System.Windows.Forms.TextBox secretTextbox;
private System.Windows.Forms.Button displaySecretButton;
private System.Windows.Forms.PictureBox profilePictureBox;
private System.Windows.Forms.Label logoutLabel;
private System.ComponentModel.BackgroundWorker downloadLabelBG;
private System.Windows.Forms.Panel hiddenTextPanel;
private System.ComponentModel.BackgroundWorker downloadFaveAlbumsBG;
private System.ComponentModel.BackgroundWorker downloadFaveArtistsBG;
private System.Windows.Forms.ComboBox artSizeSelect;
private System.Windows.Forms.Label artSizeLabel;
private System.Windows.Forms.CheckBox typeCheckbox;
private System.Windows.Forms.Label aboutLabel;
private System.Windows.Forms.Button enableBtnsButton;
private System.Windows.Forms.Button hideDebugButton;
private System.Windows.Forms.Label maxLengthLabel;
private System.Windows.Forms.Panel panel9;
private System.Windows.Forms.TextBox maxLengthTextbox;
private System.Windows.Forms.Label maxLengthWarnLabel;
private System.Windows.Forms.Panel customFormatPanel;
private System.Windows.Forms.TextBox customFormatIDTextbox;
private System.Windows.Forms.Label formatIDLabel;
private System.Windows.Forms.ComboBox filenameTempSelect;
private System.Windows.Forms.Label label7;
private System.ComponentModel.BackgroundWorker downloadPlaylistBG;
} }
} }

File diff suppressed because it is too large Load Diff

@ -135,18 +135,6 @@
<metadata name="downloadDiscogBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="downloadDiscogBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>737, 13</value> <value>737, 13</value>
</metadata> </metadata>
<metadata name="downloadLabelBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>901, 13</value>
</metadata>
<metadata name="downloadFaveAlbumsBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1065, 13</value>
</metadata>
<metadata name="downloadFaveArtistsBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1229, 13</value>
</metadata>
<metadata name="downloadPlaylistBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 52</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>

@ -28,28 +28,21 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginFrm));
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.disableLogin = new System.Windows.Forms.CheckBox();
this.verNumLabel2 = new System.Windows.Forms.Label(); this.verNumLabel2 = new System.Windows.Forms.Label();
this.md5Button = new System.Windows.Forms.Button();
this.exitLabel = new System.Windows.Forms.Label(); this.exitLabel = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.userAuthTokenTextbox = new System.Windows.Forms.TextBox(); this.panel2 = new System.Windows.Forms.Panel();
this.loginButton = new System.Windows.Forms.Button(); this.loginButton = new System.Windows.Forms.Button();
this.panel3 = new System.Windows.Forms.Panel(); this.panel3 = new System.Windows.Forms.Panel();
this.panel4 = new System.Windows.Forms.Panel(); this.panel4 = new System.Windows.Forms.Panel();
this.appidTextbox = new System.Windows.Forms.TextBox();
this.emailTextbox = new System.Windows.Forms.TextBox(); this.emailTextbox = new System.Windows.Forms.TextBox();
this.passwordTextbox = new System.Windows.Forms.TextBox(); this.passwordTextbox = new System.Windows.Forms.TextBox();
this.md5Button = new System.Windows.Forms.Button();
this.loginText = new System.Windows.Forms.Label(); this.loginText = new System.Windows.Forms.Label();
this.getSecretBG = new System.ComponentModel.BackgroundWorker(); this.getSecretBG = new System.ComponentModel.BackgroundWorker();
this.loginBG = new System.ComponentModel.BackgroundWorker(); this.loginBG = new System.ComponentModel.BackgroundWorker();
this.visableCheckbox = new System.Windows.Forms.CheckBox();
this.altLoginLabel = new System.Windows.Forms.Label();
this.altLoginTutLabel = new System.Windows.Forms.Label();
this.userIdTextbox = new System.Windows.Forms.TextBox();
this.altLoginBG = new System.ComponentModel.BackgroundWorker();
this.aboutLabel = new System.Windows.Forms.Label();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
@ -57,10 +50,7 @@
// panel1 // panel1
// //
this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame; this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame;
this.panel1.Controls.Add(this.aboutLabel);
this.panel1.Controls.Add(this.disableLogin);
this.panel1.Controls.Add(this.verNumLabel2); this.panel1.Controls.Add(this.verNumLabel2);
this.panel1.Controls.Add(this.md5Button);
this.panel1.Controls.Add(this.exitLabel); this.panel1.Controls.Add(this.exitLabel);
this.panel1.Controls.Add(this.pictureBox1); this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top; this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
@ -70,18 +60,6 @@
this.panel1.TabIndex = 0; this.panel1.TabIndex = 0;
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove); this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
// //
// disableLogin
//
this.disableLogin.AutoSize = true;
this.disableLogin.ForeColor = System.Drawing.Color.Transparent;
this.disableLogin.Location = new System.Drawing.Point(12, 155);
this.disableLogin.Name = "disableLogin";
this.disableLogin.Size = new System.Drawing.Size(90, 17);
this.disableLogin.TabIndex = 34;
this.disableLogin.Text = "Disable Login";
this.disableLogin.UseVisualStyleBackColor = true;
this.disableLogin.Visible = false;
//
// verNumLabel2 // verNumLabel2
// //
this.verNumLabel2.BackColor = System.Drawing.Color.Transparent; this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
@ -95,23 +73,6 @@
this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove); this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove);
// //
// md5Button
//
this.md5Button.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
this.md5Button.Enabled = false;
this.md5Button.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.md5Button.FlatAppearance.BorderSize = 2;
this.md5Button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.md5Button.ForeColor = System.Drawing.Color.White;
this.md5Button.Location = new System.Drawing.Point(227, 122);
this.md5Button.Name = "md5Button";
this.md5Button.Size = new System.Drawing.Size(43, 27);
this.md5Button.TabIndex = 9;
this.md5Button.Text = "MD5";
this.md5Button.UseVisualStyleBackColor = false;
this.md5Button.Visible = false;
this.md5Button.Click += new System.EventHandler(this.md5Button_Click);
//
// exitLabel // exitLabel
// //
this.exitLabel.AutoSize = true; this.exitLabel.AutoSize = true;
@ -138,21 +99,14 @@
this.pictureBox1.TabStop = false; this.pictureBox1.TabStop = false;
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove); this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
// //
// userAuthTokenTextbox // panel2
// //
this.userAuthTokenTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.userAuthTokenTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.panel2.Location = new System.Drawing.Point(12, 226);
this.userAuthTokenTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.panel2.Name = "panel2";
this.userAuthTokenTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.panel2.Size = new System.Drawing.Size(258, 1);
this.userAuthTokenTextbox.Location = new System.Drawing.Point(12, 255); this.panel2.TabIndex = 1;
this.userAuthTokenTextbox.Multiline = true; this.panel2.Click += new System.EventHandler(this.panel2_Click);
this.userAuthTokenTextbox.Name = "userAuthTokenTextbox";
this.userAuthTokenTextbox.Size = new System.Drawing.Size(237, 23);
this.userAuthTokenTextbox.TabIndex = 35;
this.userAuthTokenTextbox.Text = "user_auth_token";
this.userAuthTokenTextbox.Visible = false;
this.userAuthTokenTextbox.Click += new System.EventHandler(this.userAuthTokenTextbox_Click);
this.userAuthTokenTextbox.Leave += new System.EventHandler(this.userAuthTokenTextbox_Leave);
// //
// loginButton // loginButton
// //
@ -161,7 +115,7 @@
this.loginButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.loginButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.loginButton.Font = new System.Drawing.Font("Trebuchet MS", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.loginButton.Font = new System.Drawing.Font("Trebuchet MS", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.loginButton.ForeColor = System.Drawing.Color.White; this.loginButton.ForeColor = System.Drawing.Color.White;
this.loginButton.Location = new System.Drawing.Point(12, 293); this.loginButton.Location = new System.Drawing.Point(12, 359);
this.loginButton.Name = "loginButton"; this.loginButton.Name = "loginButton";
this.loginButton.Size = new System.Drawing.Size(258, 30); this.loginButton.Size = new System.Drawing.Size(258, 30);
this.loginButton.TabIndex = 2; this.loginButton.TabIndex = 2;
@ -172,18 +126,35 @@
// panel3 // panel3
// //
this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.panel3.Location = new System.Drawing.Point(12, 221); this.panel3.Location = new System.Drawing.Point(12, 287);
this.panel3.Name = "panel3"; this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(258, 1); this.panel3.Size = new System.Drawing.Size(258, 1);
this.panel3.TabIndex = 2; this.panel3.TabIndex = 2;
this.panel3.Click += new System.EventHandler(this.panel3_Click);
// //
// panel4 // panel4
// //
this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.panel4.Location = new System.Drawing.Point(12, 277); this.panel4.Location = new System.Drawing.Point(12, 343);
this.panel4.Name = "panel4"; this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(258, 1); this.panel4.Size = new System.Drawing.Size(258, 1);
this.panel4.TabIndex = 2; this.panel4.TabIndex = 2;
this.panel4.Click += new System.EventHandler(this.panel4_Click);
//
// appidTextbox
//
this.appidTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.appidTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.appidTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.appidTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.appidTextbox.Location = new System.Drawing.Point(12, 200);
this.appidTextbox.Multiline = true;
this.appidTextbox.Name = "appidTextbox";
this.appidTextbox.Size = new System.Drawing.Size(258, 27);
this.appidTextbox.TabIndex = 6;
this.appidTextbox.Text = "app_id";
this.appidTextbox.Click += new System.EventHandler(this.appIdTextbox_Click);
this.appidTextbox.Leave += new System.EventHandler(this.appIdTextbox_Leave);
// //
// emailTextbox // emailTextbox
// //
@ -191,7 +162,7 @@
this.emailTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.emailTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.emailTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.emailTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.emailTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.emailTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.emailTextbox.Location = new System.Drawing.Point(12, 199); this.emailTextbox.Location = new System.Drawing.Point(12, 265);
this.emailTextbox.Multiline = true; this.emailTextbox.Multiline = true;
this.emailTextbox.Name = "emailTextbox"; this.emailTextbox.Name = "emailTextbox";
this.emailTextbox.Size = new System.Drawing.Size(258, 23); this.emailTextbox.Size = new System.Drawing.Size(258, 23);
@ -206,20 +177,35 @@
this.passwordTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.passwordTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.passwordTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.passwordTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.passwordTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.passwordTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.passwordTextbox.Location = new System.Drawing.Point(12, 255); this.passwordTextbox.Location = new System.Drawing.Point(12, 321);
this.passwordTextbox.Multiline = true; this.passwordTextbox.Multiline = true;
this.passwordTextbox.Name = "passwordTextbox"; this.passwordTextbox.Name = "passwordTextbox";
this.passwordTextbox.Size = new System.Drawing.Size(237, 23); this.passwordTextbox.Size = new System.Drawing.Size(209, 23);
this.passwordTextbox.TabIndex = 8; this.passwordTextbox.TabIndex = 8;
this.passwordTextbox.Text = "Password"; this.passwordTextbox.Text = "Password";
this.passwordTextbox.Click += new System.EventHandler(this.passwordTextbox_Click); this.passwordTextbox.Click += new System.EventHandler(this.passwordTextbox_Click);
this.passwordTextbox.Leave += new System.EventHandler(this.passwordTextbox_Leave); this.passwordTextbox.Leave += new System.EventHandler(this.passwordTextbox_Leave);
// //
// md5Button
//
this.md5Button.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
this.md5Button.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.md5Button.FlatAppearance.BorderSize = 2;
this.md5Button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.md5Button.ForeColor = System.Drawing.Color.White;
this.md5Button.Location = new System.Drawing.Point(227, 316);
this.md5Button.Name = "md5Button";
this.md5Button.Size = new System.Drawing.Size(43, 27);
this.md5Button.TabIndex = 9;
this.md5Button.Text = "MD5";
this.md5Button.UseVisualStyleBackColor = false;
this.md5Button.Click += new System.EventHandler(this.md5Button_Click);
//
// loginText // loginText
// //
this.loginText.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.loginText.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.loginText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102))))); this.loginText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.loginText.Location = new System.Drawing.Point(12, 349); this.loginText.Location = new System.Drawing.Point(12, 399);
this.loginText.Name = "loginText"; this.loginText.Name = "loginText";
this.loginText.Size = new System.Drawing.Size(258, 23); this.loginText.Size = new System.Drawing.Size(258, 23);
this.loginText.TabIndex = 30; this.loginText.TabIndex = 30;
@ -234,94 +220,23 @@
// //
this.loginBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.loginBG_DoWork); this.loginBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.loginBG_DoWork);
// //
// visableCheckbox
//
this.visableCheckbox.AutoSize = true;
this.visableCheckbox.Location = new System.Drawing.Point(255, 256);
this.visableCheckbox.Name = "visableCheckbox";
this.visableCheckbox.Size = new System.Drawing.Size(15, 14);
this.visableCheckbox.TabIndex = 31;
this.visableCheckbox.UseVisualStyleBackColor = true;
this.visableCheckbox.CheckedChanged += new System.EventHandler(this.visableCheckbox_CheckedChanged);
//
// altLoginLabel
//
this.altLoginLabel.Font = new System.Drawing.Font("Trebuchet MS", 8.25F);
this.altLoginLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.altLoginLabel.Location = new System.Drawing.Point(12, 326);
this.altLoginLabel.Name = "altLoginLabel";
this.altLoginLabel.Size = new System.Drawing.Size(258, 20);
this.altLoginLabel.TabIndex = 32;
this.altLoginLabel.Text = "Can\'t login? Click here";
this.altLoginLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.altLoginLabel.Click += new System.EventHandler(this.altLoginLabel_Click);
//
// altLoginTutLabel
//
this.altLoginTutLabel.AutoSize = true;
this.altLoginTutLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.altLoginTutLabel.Location = new System.Drawing.Point(77, 180);
this.altLoginTutLabel.Name = "altLoginTutLabel";
this.altLoginTutLabel.Size = new System.Drawing.Size(128, 13);
this.altLoginTutLabel.TabIndex = 33;
this.altLoginTutLabel.Text = "Click Here for Instructions";
this.altLoginTutLabel.Visible = false;
this.altLoginTutLabel.Click += new System.EventHandler(this.altLoginTutLabel_Click);
//
// userIdTextbox
//
this.userIdTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.userIdTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.userIdTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.userIdTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.userIdTextbox.Location = new System.Drawing.Point(12, 199);
this.userIdTextbox.Multiline = true;
this.userIdTextbox.Name = "userIdTextbox";
this.userIdTextbox.Size = new System.Drawing.Size(258, 23);
this.userIdTextbox.TabIndex = 9;
this.userIdTextbox.Text = "user_id";
this.userIdTextbox.Visible = false;
this.userIdTextbox.Click += new System.EventHandler(this.userIdTextbox_Click);
this.userIdTextbox.Leave += new System.EventHandler(this.userIdTextbox_Leave);
//
// altLoginBG
//
this.altLoginBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.altLoginBG_DoWork);
//
// aboutLabel
//
this.aboutLabel.AutoSize = true;
this.aboutLabel.BackColor = System.Drawing.Color.Transparent;
this.aboutLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.aboutLabel.ForeColor = System.Drawing.Color.Black;
this.aboutLabel.Location = new System.Drawing.Point(241, 0);
this.aboutLabel.Name = "aboutLabel";
this.aboutLabel.Size = new System.Drawing.Size(15, 23);
this.aboutLabel.TabIndex = 35;
this.aboutLabel.Text = "i";
this.aboutLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.aboutLabel.Click += new System.EventHandler(this.aboutLabel_Click);
//
// LoginFrm // LoginFrm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.ClientSize = new System.Drawing.Size(282, 392); this.ClientSize = new System.Drawing.Size(282, 431);
this.Controls.Add(this.altLoginTutLabel);
this.Controls.Add(this.altLoginLabel);
this.Controls.Add(this.visableCheckbox);
this.Controls.Add(this.loginText); this.Controls.Add(this.loginText);
this.Controls.Add(this.md5Button);
this.Controls.Add(this.panel4); this.Controls.Add(this.panel4);
this.Controls.Add(this.panel3); this.Controls.Add(this.panel3);
this.Controls.Add(this.panel2);
this.Controls.Add(this.passwordTextbox); this.Controls.Add(this.passwordTextbox);
this.Controls.Add(this.emailTextbox); this.Controls.Add(this.emailTextbox);
this.Controls.Add(this.appidTextbox);
this.Controls.Add(this.loginButton); this.Controls.Add(this.loginButton);
this.Controls.Add(this.panel1); this.Controls.Add(this.panel1);
this.Controls.Add(this.userIdTextbox);
this.Controls.Add(this.userAuthTokenTextbox);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "LoginFrm"; this.Name = "LoginFrm";
this.Text = "QobuzDLX | Login"; this.Text = "QobuzDLX | Login";
this.Load += new System.EventHandler(this.LoginFrm_Load); this.Load += new System.EventHandler(this.LoginFrm_Load);
@ -337,9 +252,11 @@
private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button loginButton; private System.Windows.Forms.Button loginButton;
private System.Windows.Forms.Panel panel3; private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Panel panel4; private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.TextBox appidTextbox;
private System.Windows.Forms.TextBox emailTextbox; private System.Windows.Forms.TextBox emailTextbox;
private System.Windows.Forms.TextBox passwordTextbox; private System.Windows.Forms.TextBox passwordTextbox;
private System.Windows.Forms.Label exitLabel; private System.Windows.Forms.Label exitLabel;
@ -348,13 +265,5 @@
private System.ComponentModel.BackgroundWorker getSecretBG; private System.ComponentModel.BackgroundWorker getSecretBG;
private System.ComponentModel.BackgroundWorker loginBG; private System.ComponentModel.BackgroundWorker loginBG;
private System.Windows.Forms.Label verNumLabel2; private System.Windows.Forms.Label verNumLabel2;
private System.Windows.Forms.CheckBox visableCheckbox;
private System.Windows.Forms.CheckBox disableLogin;
private System.Windows.Forms.TextBox userAuthTokenTextbox;
private System.Windows.Forms.Label altLoginLabel;
private System.Windows.Forms.Label altLoginTutLabel;
private System.Windows.Forms.TextBox userIdTextbox;
private System.ComponentModel.BackgroundWorker altLoginBG;
private System.Windows.Forms.Label aboutLabel;
} }
} }

@ -19,7 +19,6 @@ using System.Net.Http;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using TagLib.Flac; using TagLib.Flac;
using Newtonsoft.Json.Linq;
using QobuzDownloaderX; using QobuzDownloaderX;
namespace QobuzDownloaderX namespace QobuzDownloaderX
@ -45,16 +44,11 @@ namespace QobuzDownloaderX
} }
QobuzDownloaderX qbdlx = new QobuzDownloaderX(); QobuzDownloaderX qbdlx = new QobuzDownloaderX();
AboutForm about = new AboutForm();
public string appSecret { get; set; } public string appSecret { get; set; }
public string appID { get; set; }
public string userID { get; set; }
public string userAuthToken { get; set; }
public string altLoginValue { get; set; }
string errorLog = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Latest_Error.log"); string errorLog = Path.GetDirectoryName(Application.ExecutablePath) + "\\Latest_Error.log";
string dllCheck = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "taglib-sharp.dll"); string dllCheck = Path.GetDirectoryName(Application.ExecutablePath) + "\\taglib-sharp.dll";
static string GetMd5Hash(MD5 md5Hash, string input) static string GetMd5Hash(MD5 md5Hash, string input)
{ {
@ -94,8 +88,56 @@ namespace QobuzDownloaderX
} }
} }
private async void LoginFrm_Load(object sender, EventArgs e) private void LoginFrm_Load(object sender, EventArgs e)
{ {
try
{
WebClient versionURLClient = new WebClient();
// Run through TLS to allow secure connection.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
string versionHTML = versionURLClient.DownloadString("https://github.com/ImAiiR/QobuzDownloaderX/releases");
// Grab link to bundle.js
var versionLog = Regex.Match(versionHTML, "<span class=\"css-truncate-target\" style=\"max-width: 125px\">(?<latestVersion>.*?)<\\/span>").Groups;
var version = versionLog[1].Value;
string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string newVersion = version;
if (currentVersion.Contains(newVersion))
{
// Do nothing. All is good.
}
else
{
DialogResult dialogResult = MessageBox.Show("New version of QBDLX is available!\r\n\r\nInstalled version - " + currentVersion + "\r\nLatest version - "+ newVersion + "\r\n\r\nWould you like to update?", "QBDLX | Update Available", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
// If "Yes" is clicked, open GitHub page and close QBDLX.
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
Application.Exit();
}
else if (dialogResult == DialogResult.No)
{
// Ignore the update until next open.
}
}
}
catch (Exception ex)
{
DialogResult dialogResult = MessageBox.Show("Connection to GitHub to check for an update has failed.\r\nWould you like to check for an update manually?\r\n\r\nYour current version is " + Assembly.GetExecutingAssembly().GetName().Version.ToString(), "QBDLX | GitHub Connection Failed", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
// If "Yes" is clicked, open GitHub page and close QBDLX.
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
Application.Exit();
}
else if (dialogResult == DialogResult.No)
{
// Ignore the update until next open.
}
}
// Get and display version number. // Get and display version number.
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString(); verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
@ -118,543 +160,112 @@ namespace QobuzDownloaderX
} }
// Set saved settings to correct places. // Set saved settings to correct places.
appidTextbox.Text = Settings.Default.savedAppID.ToString();
emailTextbox.Text = Settings.Default.savedEmail.ToString(); emailTextbox.Text = Settings.Default.savedEmail.ToString();
passwordTextbox.Text = Settings.Default.savedPassword.ToString(); passwordTextbox.Text = Settings.Default.savedPassword.ToString();
userIdTextbox.Text = Settings.Default.savedUserID.ToString();
userAuthTokenTextbox.Text = Settings.Default.savedUserAuthToken.ToString();
altLoginValue = Settings.Default.savedAltLoginValue.ToString();
// Set alt login mode & label text based on saved value if (appidTextbox.Text != "app_id")
if (altLoginValue == "0")
{ {
// Change alt login label text appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
altLoginLabel.Text = "Can't login? Click here"; }
// Hide alt login methods if (appidTextbox.Text == null | appidTextbox.Text == "")
altLoginTutLabel.Visible = false; {
userIdTextbox.Visible = false; appidTextbox.ForeColor = Color.FromArgb(88, 92, 102);
userAuthTokenTextbox.Visible = false; appidTextbox.Text = "app_id";
// Unhide standard login methods
emailTextbox.Visible = true;
passwordTextbox.Visible = true;
}
else if (altLoginValue == "1")
{
// Change alt login label text
altLoginLabel.Text = "Login normally? Click here";
// Hide standard login methods
emailTextbox.Visible = false;
passwordTextbox.Visible = false;
// Unhide alt login methods
altLoginTutLabel.Visible = true;
userIdTextbox.Visible = true;
userAuthTokenTextbox.Visible = true;
} }
// Set values for email textbox.
if (emailTextbox.Text != "Email") if (emailTextbox.Text != "Email")
{ {
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186); emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
} }
if (emailTextbox.Text == null | emailTextbox.Text == "") if (emailTextbox.Text == null | emailTextbox.Text == "")
{ {
emailTextbox.ForeColor = Color.FromArgb(88, 92, 102); emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
emailTextbox.Text = "Email"; emailTextbox.Text = "Email";
} }
// Set values for user_id textbox.
if (userIdTextbox.Text != "user_id")
{
userIdTextbox.ForeColor = Color.FromArgb(186, 186, 186);
}
if (userIdTextbox.Text == null | userIdTextbox.Text == "")
{
userIdTextbox.ForeColor = Color.FromArgb(88, 92, 102);
userIdTextbox.Text = "user_id";
}
// Set values for password textbox.
if (passwordTextbox.Text != "Password") if (passwordTextbox.Text != "Password")
{ {
passwordTextbox.PasswordChar = '*'; passwordTextbox.PasswordChar = '*';
passwordTextbox.UseSystemPasswordChar = false; passwordTextbox.UseSystemPasswordChar = false;
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186); passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
} }
if (passwordTextbox.Text == null | passwordTextbox.Text == "") if (passwordTextbox.Text == null | passwordTextbox.Text == "")
{ {
passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102); passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
passwordTextbox.UseSystemPasswordChar = true; passwordTextbox.UseSystemPasswordChar = true;
passwordTextbox.Text = "Password"; passwordTextbox.Text = "Password";
} }
// Set values for user_auth_token textbox.
if (userAuthTokenTextbox.Text != "user_auth_token")
{
userAuthTokenTextbox.PasswordChar = '*';
userAuthTokenTextbox.UseSystemPasswordChar = false;
userAuthTokenTextbox.ForeColor = Color.FromArgb(186, 186, 186);
}
if (userAuthTokenTextbox.Text == null | userAuthTokenTextbox.Text == "")
{
userAuthTokenTextbox.ForeColor = Color.FromArgb(88, 92, 102);
userAuthTokenTextbox.UseSystemPasswordChar = true;
userAuthTokenTextbox.Text = "user_auth_token";
}
try
{
// Create HttpClient to grab version number from Github
var versionURLClient = new HttpClient();
// Run through TLS to allow secure connection.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
// Set user-agent to Firefox.
versionURLClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
// Grab response from Github to get Track IDs from Album response.
var versionURL = "https://api.github.com/repos/ImAiiR/QobuzDownloaderX/releases/latest";
var versionURLResponse = await versionURLClient.GetAsync(versionURL);
string versionURLResponseString = versionURLResponse.Content.ReadAsStringAsync().Result;
// Grab metadata from API JSON response
JObject joVersionResponse = JObject.Parse(versionURLResponseString);
// Grab latest version number
string version = (string)joVersionResponse["tag_name"];
// Grab changelog
string changes = (string)joVersionResponse["body"];
string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string newVersion = version;
if (currentVersion.Contains(newVersion))
{
// Do nothing. All is good.
}
else
{
DialogResult dialogResult = MessageBox.Show("New version of QBDLX is available!\r\n\r\nInstalled version - " + currentVersion + "\r\nLatest version - " + newVersion + "\r\n\r\nChangelog Below\r\n==============\r\n" + changes.Replace("\\r\\n", "\r\n") + "\r\n==============\r\n\r\nWould you like to update?", "QBDLX | Update Available", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
// If "Yes" is clicked, open GitHub page and close QBDLX.
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
Application.Exit();
}
else if (dialogResult == DialogResult.No)
{
// Ignore the update until next open.
}
}
}
catch
{
DialogResult dialogResult = MessageBox.Show("Connection to GitHub to check for an update has failed.\r\nWould you like to check for an update manually?\r\n\r\nYour current version is " + Assembly.GetExecutingAssembly().GetName().Version.ToString(), "QBDLX | GitHub Connection Failed", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
// If "Yes" is clicked, open GitHub page and close QBDLX.
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
Application.Exit();
}
else if (dialogResult == DialogResult.No)
{
// Ignore the update until next open.
}
}
} }
private void loginButton_Click(object sender, EventArgs e) private void loginButton_Click(object sender, EventArgs e)
{ {
// Hide alt login label until job is finished or failed if (appidTextbox.Text == "app_id" | appidTextbox.Text == null | appidTextbox.Text == "")
altLoginLabel.Visible = false;
switch (altLoginValue)
{ {
// If logging in normally (email & password) // If there's no app_id typed in.
case "0": loginText.Invoke(new Action(() => loginText.Text = "No app_id, please input app_id first."));
#region Normal Login return;
}
#region Check if textboxes are valid else if (emailTextbox.Text == "Email" | emailTextbox.Text == null | emailTextbox.Text == "")
if (emailTextbox.Text == "Email" | emailTextbox.Text == null | emailTextbox.Text == "")
{ {
// If there's no email typed in. // If there's no email typed in.
loginText.Invoke(new Action(() => loginText.Text = "No email, please input email first.")); loginText.Invoke(new Action(() => loginText.Text = "No email, please input email first."));
return; return;
} }
if (passwordTextbox.Text == "Password") var passMD5CheckLog = Regex.Match(passwordTextbox.Text, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
{
// If there's no password typed in.
loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first."));
return;
}
#endregion
string plainTextPW = passwordTextbox.Text;
var passMD5CheckLog = Regex.Match(plainTextPW, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
var passMD5Check = passMD5CheckLog[1].Value; var passMD5Check = passMD5CheckLog[1].Value;
if (passMD5Check == null | passMD5Check == "") if (passMD5Check == null | passMD5Check == "")
{ {
// Generate the MD5 hash using the string created above. loginText.Text = "Password not MD5! Hit \"MD5\" before logging in!";
using (MD5 md5PassHash = MD5.Create())
{
string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
{
// If the MD5 hash is verified, proceed to get the streaming URL.
passwordTextbox.Text = hashedPW;
}
else
{
// If the hash can't be verified.
loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
return; return;
} }
}
}
// Save info locally to be used on next launch. // Save info locally to be used on next launch.
Settings.Default.savedEmail = emailTextbox.Text; Settings.Default.savedEmail = emailTextbox.Text;
Settings.Default.savedAppID = appidTextbox.Text;
Settings.Default.savedPassword = passwordTextbox.Text; Settings.Default.savedPassword = passwordTextbox.Text;
Settings.Default.savedAltLoginValue = altLoginValue;
Settings.Default.Save(); Settings.Default.Save();
loginText.Text = "Getting App ID and Secret..."; loginText.Text = "Logging in + obtaining app_secret...";
loginButton.Enabled = false;
getSecretBG.RunWorkerAsync();
#endregion
break;
default:
#region Alt Login
#region Check if textboxes are valid
if (userIdTextbox.Text == "user_id" | userIdTextbox.Text == null | userIdTextbox.Text == "")
{
// If there's no email typed in.
loginText.Invoke(new Action(() => loginText.Text = "No user_id, please input user_id first."));
return;
}
if (userAuthTokenTextbox.Text == "user_auth_token")
{
// If there's no password typed in.
loginText.Invoke(new Action(() => loginText.Text = "No user_auth_token typed, please input user_auth_token first."));
return;
}
#endregion
// Set user_id & user_auth_token to login.
userID = userIdTextbox.Text;
userAuthToken = userAuthTokenTextbox.Text;
// Save info locally to be used on next launch.
Settings.Default.savedUserID = userIdTextbox.Text;
Settings.Default.savedUserAuthToken = userAuthTokenTextbox.Text;
Settings.Default.savedAltLoginValue = altLoginValue;
Settings.Default.Save();
loginText.Text = "Getting App ID and Secret...";
loginButton.Enabled = false;
getSecretBG.RunWorkerAsync();
#endregion
break;
}
}
private void getSecretBG_DoWork(object sender, DoWorkEventArgs e)
{
getSecretBG.WorkerSupportsCancellation = true;
WebClient bundleURLClient = new WebClient();
bundleURLClient.Proxy = null;
string bundleHTML = bundleURLClient.DownloadString("https://play.qobuz.com/login");
// Grab link to bundle.js
var bundleLog = Regex.Match(bundleHTML, "<script src=\"(?<bundleJS>\\/resources\\/\\d+\\.\\d+\\.\\d+-[a-z]\\d{3}\\/bundle\\.js)").Groups;
var bundleSuffix = bundleLog[1].Value;
var bundleURL = "https://play.qobuz.com" + bundleSuffix;
WebRequest bundleWR = WebRequest.Create(bundleURL);
try
{
WebResponse bundleWS = bundleWR.GetResponse();
StreamReader bundleSR = new StreamReader(bundleWS.GetResponseStream());
string getBundleRequest = bundleSR.ReadToEnd();
string text = getBundleRequest;
// Grab app_id from bundle.js
var bundleLog0 = Regex.Match(getBundleRequest, "\\):\\(n.qobuzapi={app_id:\"(?<appID>.*?)\",app_secret:").Groups;
appID = bundleLog0[1].Value;
// Grab "info" and "extras"
var bundleLog1 = Regex.Match(getBundleRequest, "{offset:\"(?<notUsed>.*?)\",name:\"Europe\\/Berlin\",info:\"(?<info>.*?)\",extras:\"(?<extras>.*?)\"}").Groups;
var bundleInfo = bundleLog1[2].Value;
var bundleExtras = bundleLog1[3].Value;
// Grab "seed"
var bundleLog2 = Regex.Match(getBundleRequest, "window.utimezone.algier\\):f.initialSeed\\(\"(?<seed>.*?)\",window.utimezone.berlin\\)").Groups;
var bundleSeed = bundleLog2[1].Value;
// Step 1 of getting the app_secret
string B64step1 = bundleSeed + bundleInfo + bundleExtras;
B64step1 = B64step1.Remove(B64step1.Length - 44, 44);
byte[] step1Bytes = Encoding.UTF8.GetBytes(B64step1);
B64step1 = Convert.ToBase64String(step1Bytes);
// Step 2 of getting the app_secret
byte[] step2Data = Convert.FromBase64String(B64step1);
string B64step2 = Encoding.UTF8.GetString(step2Data);
// Step 3 of getting the app_secret
byte[] step3Data = Convert.FromBase64String(B64step2);
// Set app_secret
appSecret = Encoding.UTF8.GetString(step3Data);
loginText.Invoke(new Action(() => loginText.Text = "ID and Secret Obtained! Logging in.."));
System.Threading.Thread.Sleep(1000);
}
catch (Exception bundleEx)
{
// If obtaining bundle.js info fails, show error info.
string bundleError = bundleEx.ToString();
loginText.Invoke(new Action(() => loginText.Text = "Couldn't obtain app info. Error Log saved"));
System.IO.File.WriteAllText(errorLog, bundleError);
bundleWR.Abort();
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
return;
}
bundleWR.Abort();
if (altLoginValue == "0")
{
loginBG.RunWorkerAsync(); loginBG.RunWorkerAsync();
} }
else if (altLoginValue == "1")
{
altLoginBG.RunWorkerAsync();
}
getSecretBG.CancelAsync();
}
private async void loginBG_DoWork(object sender, DoWorkEventArgs e)
{
loginBG.WorkerSupportsCancellation = true;
// Create HttpClient for logging in using Napster / Rhapsody API.
var loginClient = new HttpClient();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; //Make connection secure
loginClient.DefaultRequestHeaders.Add("Authorization", "Basic WlRKbE9XTmhaR1V0TnpsbVpTMDBaR1UyTFRrd1lqTXRaRGsxT0RSbE1Ea3dPRE01Ok1UUmpaVFZqTTJFdE9HVmxaaTAwT1RVM0xXRm1Oamt0TlRsbE9ERmhObVl5TnpJNQ=="); //This value is from logging in to the Napster Android app.
// Create HttpClient to grab Track ID
var loginClient2 = new HttpClient();
// Run through TLS to allow secure connection.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
// Set user-agent to Firefox.
loginClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
var loginURL = "https://www.qobuz.com/api.json/0.2/user/login"; //Set base URL
var parameters = new Dictionary<string, string> { { "username", emailTextbox.Text }, { "email", emailTextbox.Text }, { "password", passwordTextbox.Text }, { "extra", "partner" }, { "app_id", appID } }; //Set email & password parameters
var encodedContent = new FormUrlEncodedContent(parameters); //Add parameters as encoded content to login
// Grab response from Rhapsody to get Track IDs from Album response.
var loginUrl = "https://www.qobuz.com/api.json/0.2/user/login?email=" + emailTextbox.Text + "&password=" + passwordTextbox.Text + "&app_id=" + appID;
var loginResponse = await loginClient.PostAsync(loginURL, encodedContent);
string loginResponseString = loginResponse.Content.ReadAsStringAsync().Result;
// Grab metadata from API JSON response
JObject joLoginResponse = JObject.Parse(loginResponseString);
try
{
// Grab user_id
string userID = (string)joLoginResponse["user"]["id"];
qbdlx.userID = userID;
// Grab display name
string displayName = (string)joLoginResponse["user"]["display_name"];
qbdlx.displayName = displayName;
// Grab account type
try
{
string accountType = (string)joLoginResponse["user"]["credential"]["parameters"]["short_label"];
// Check if accountType returns null or not
switch (accountType)
{
case null:
qbdlx.accountType = null;
break;
default:
qbdlx.accountType = accountType;
break;
}
}
catch
{
// Free account, still able to login but won't be able to download anything.
qbdlx.accountType = null;
}
// Grab authentication token
string userAuthToken = (string)joLoginResponse["user_auth_token"];
qbdlx.userAuth = userAuthToken;
// Grab profile image
string profilePic = (string)joLoginResponse["user"]["avatar"];
string profilePicURL = profilePic.Replace(@"\", null).Replace("s=50", "s=20");
qbdlx.profilePic = profilePicURL;
// Set user_auth_token
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Launching QBDLX..."));
}
catch (Exception ex)
{
// If connection to API fails, show error info.
string error = ex.ToString();
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
System.IO.File.WriteAllText(errorLog, error);
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
return;
}
finishLogin(sender, e);
loginBG.CancelAsync();
}
private async void altLoginBG_DoWork(object sender, DoWorkEventArgs e)
{
altLoginBG.WorkerSupportsCancellation = true;
// Create HttpClient to grab Track ID
var altLoginClient = new HttpClient();
// Run through TLS to allow secure connection.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
// Set user-agent to Firefox.
altLoginClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
// Grab response from Rhapsody to get Track IDs from Album response.
var altLoginUrl = "http://www.qobuz.com/api.json/0.2/user/get?user_id=" + userID + "&user_auth_token=" + userAuthToken + "&app_id=" + appID;
var altLoginResponse = await altLoginClient.GetAsync(altLoginUrl);
string altLoginResponseString = altLoginResponse.Content.ReadAsStringAsync().Result;
// Grab metadata from API JSON response
JObject joAltLoginResponse = JObject.Parse(altLoginResponseString);
try
{
// Use user_id that was used by the user
qbdlx.userID = userID;
// Use user_auth_token that was used by the user
qbdlx.userAuth = userAuthToken;
// Grab display name
string displayName = (string)joAltLoginResponse["display_name"];
qbdlx.displayName = displayName;
// Grab account type
try
{
string accountType = (string)joAltLoginResponse["subscription"]["offer"];
// Check if accountType returns null or not
switch (accountType)
{
case null:
qbdlx.accountType = null;
break;
default:
qbdlx.accountType = accountType;
break;
}
}
catch
{
// Free account, still able to login but won't be able to download anything.
qbdlx.accountType = null;
}
// Grab profile image
string profilePic = (string)joAltLoginResponse["avatar"];
var profilePicURL = profilePic.Replace(@"\", null).Replace("s=50", "s=20");
qbdlx.profilePic = profilePicURL;
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Launching QBDLX..."));
}
catch (Exception ex)
{
// If connection to API fails, show error info.
string error = ex.ToString();
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
System.IO.File.WriteAllText(errorLog, error);
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
return;
}
finishLogin(sender, e);
altLoginBG.CancelAsync();
}
private void finishLogin(object sender, EventArgs e)
{
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
// If info is legit, go to the main form.
qbdlx.appid = appID;
qbdlx.eMail = emailTextbox.Text;
qbdlx.password = passwordTextbox.Text;
qbdlx.appSecret = appSecret;
if (disableLogin.Checked != true)
{
this.Invoke(new Action(() => this.Hide()));
Application.Run(qbdlx);
}
}
#region Textbox Focous & Text Change #region Textbox Focous & Text Change
#region app_id Textbox (Removed) #region app_id Textbox
//private void appIdTextbox_Click(object sender, EventArgs e) private void appIdTextbox_Click(object sender, EventArgs e)
//{ {
// if (appidTextbox.Text == "app_id") if (appidTextbox.Text == "app_id")
// { {
// appidTextbox.Text = null; appidTextbox.Text = null;
// appidTextbox.ForeColor = Color.FromArgb(186, 186, 186); appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
// } }
//} }
//private void panel2_Click(object sender, EventArgs e) private void panel2_Click(object sender, EventArgs e)
//{ {
// appidTextbox.Focus(); appidTextbox.Focus();
// if (appidTextbox.Text == "app_id") if (appidTextbox.Text == "app_id")
// { {
// appidTextbox.Text = null; appidTextbox.Text = null;
// appidTextbox.ForeColor = Color.FromArgb(186, 186, 186); appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
// } }
//} }
//private void appIdTextbox_Leave(object sender, EventArgs e) private void appIdTextbox_Leave(object sender, EventArgs e)
//{ {
// if (appidTextbox.Text == null | appidTextbox.Text == "") if (appidTextbox.Text == null | appidTextbox.Text == "")
// { {
// appidTextbox.ForeColor = Color.FromArgb(88, 92, 102); appidTextbox.ForeColor = Color.FromArgb(88, 92, 102);
// appidTextbox.Text = "app_id"; appidTextbox.Text = "app_id";
// } }
//} }
#endregion #endregion
#region Email Textbox #region Email Textbox
@ -667,6 +278,17 @@ namespace QobuzDownloaderX
} }
} }
private void panel3_Click(object sender, EventArgs e)
{
emailTextbox.Focus();
if (emailTextbox.Text == "Email")
{
emailTextbox.Text = null;
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
}
}
private void emailTextbox_Leave(object sender, EventArgs e) private void emailTextbox_Leave(object sender, EventArgs e)
{ {
if (emailTextbox.Text == null | emailTextbox.Text == "") if (emailTextbox.Text == null | emailTextbox.Text == "")
@ -689,6 +311,19 @@ namespace QobuzDownloaderX
} }
} }
private void panel4_Click(object sender, EventArgs e)
{
passwordTextbox.Focus();
if (passwordTextbox.Text == "Password")
{
passwordTextbox.Text = null;
passwordTextbox.PasswordChar = '*';
passwordTextbox.UseSystemPasswordChar = false;
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
}
}
private void passwordTextbox_Leave(object sender, EventArgs e) private void passwordTextbox_Leave(object sender, EventArgs e)
{ {
if (passwordTextbox.Text == null | passwordTextbox.Text == "") if (passwordTextbox.Text == null | passwordTextbox.Text == "")
@ -701,65 +336,8 @@ namespace QobuzDownloaderX
#endregion #endregion
#region user_id Textbox
private void userIdTextbox_Click(object sender, EventArgs e)
{
if (userIdTextbox.Text == "user_id")
{
userIdTextbox.Text = null;
userIdTextbox.ForeColor = Color.FromArgb(186, 186, 186);
}
}
private void userIdTextbox_Leave(object sender, EventArgs e)
{
if (userIdTextbox.Text == null | userIdTextbox.Text == "")
{
userIdTextbox.ForeColor = Color.FromArgb(88, 92, 102);
userIdTextbox.Text = "user_id";
}
}
#endregion #endregion
#region user_auth_token Textbox
private void userAuthTokenTextbox_Click(object sender, EventArgs e)
{
if (userAuthTokenTextbox.Text == "user_auth_token")
{
userAuthTokenTextbox.Text = null;
userAuthTokenTextbox.PasswordChar = '*';
userAuthTokenTextbox.UseSystemPasswordChar = false;
userAuthTokenTextbox.ForeColor = Color.FromArgb(186, 186, 186);
}
}
private void userAuthTokenTextbox_Leave(object sender, EventArgs e)
{
if (userAuthTokenTextbox.Text == null | userAuthTokenTextbox.Text == "")
{
userAuthTokenTextbox.ForeColor = Color.FromArgb(88, 92, 102);
userAuthTokenTextbox.UseSystemPasswordChar = true;
userAuthTokenTextbox.Text = "user_auth_token";
}
}
#endregion
#endregion
private void visableCheckbox_CheckedChanged(object sender, EventArgs e)
{
if (visableCheckbox.Checked == true)
{
passwordTextbox.UseSystemPasswordChar = true;
userAuthTokenTextbox.UseSystemPasswordChar = true;
}
else
{
passwordTextbox.UseSystemPasswordChar = false;
userAuthTokenTextbox.UseSystemPasswordChar = false;
}
}
private void exitLabel_Click(object sender, EventArgs e) private void exitLabel_Click(object sender, EventArgs e)
{ {
Application.Exit(); Application.Exit();
@ -794,80 +372,156 @@ namespace QobuzDownloaderX
private void md5Button_Click(object sender, EventArgs e) private void md5Button_Click(object sender, EventArgs e)
{ {
//if (passwordTextbox.Text == "Password") if (passwordTextbox.Text == "Password")
//{ {
// // If there's no password typed in. // If there's no password typed in.
// loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first.")); loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first."));
// return; return;
//}
//string plainTextPW = passwordTextbox.Text;
//// Generate the MD5 hash using the string created above.
//using (MD5 md5PassHash = MD5.Create())
//{
// string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
// if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
// {
// // If the MD5 hash is verified, proceed to get the streaming URL.
// passwordTextbox.Text = hashedPW;
// }
// else
// {
// // If the hash can't be verified.
// loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
// return;
// }
//}
} }
private void altLoginLabel_Click(object sender, EventArgs e) string plainTextPW = passwordTextbox.Text;
// Generate the MD5 hash using the string created above.
using (MD5 md5PassHash = MD5.Create())
{ {
if (altLoginLabel.Text == "Can't login? Click here") string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
{ {
// Set value if alt login is needed. // If the MD5 hash is verified, proceed to get the streaming URL.
altLoginValue = "1"; passwordTextbox.Text = hashedPW;
// Change alt login label text
altLoginLabel.Text = "Login normally? Click here";
// Hide standard login methods
emailTextbox.Visible = false;
passwordTextbox.Visible = false;
// Unhide alt login methods
altLoginTutLabel.Visible = true;
userIdTextbox.Visible = true;
userAuthTokenTextbox.Visible = true;
} }
else else
{ {
// Set value if alt login is not needed. // If the hash can't be verified.
altLoginValue = "0"; loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
return;
// Change alt login label text }
altLoginLabel.Text = "Can't login? Click here";
// Hide alt login methods
altLoginTutLabel.Visible = false;
userIdTextbox.Visible = false;
userAuthTokenTextbox.Visible = false;
// Unhide standard login methods
emailTextbox.Visible = true;
passwordTextbox.Visible = true;
} }
} }
private void altLoginTutLabel_Click(object sender, EventArgs e) private void loginBG_DoWork(object sender, DoWorkEventArgs e)
{ {
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/wiki/Logging-In-(The-Alternate-Way)"); loginBG.WorkerSupportsCancellation = true;
// Create WebRequest to login using login information from input textboxes.
WebRequest wr = WebRequest.Create("https://www.qobuz.com/api.json/0.2/user/login?email=" + emailTextbox.Text + "&password=" + passwordTextbox.Text + "&app_id=" + appidTextbox.Text);
try
{
// Grab info to be displayed and used.
WebResponse ws = wr.GetResponse();
StreamReader sr = new StreamReader(ws.GetResponseStream());
string loginRequest = sr.ReadToEnd();
string text = loginRequest;
// Grab display name
var displayNameLog = Regex.Match(loginRequest, "\"display_name\":\"(?<displayName>.*?)\",\\\"").Groups;
var displayName = displayNameLog[1].Value;
qbdlx.displayName = displayName;
// Grab account type
var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?<accountType>\\w+)").Groups;
var accountType = accountTypeLog[1].Value;
qbdlx.accountType = accountType;
// Grab authentication token
var userAuth = Regex.Match(loginRequest, "\"user_auth_token\":\"(?<userAuth>.*?)\\\"}").Groups;
var userAuthToken = userAuth[1].Value;
// Set user_auth_token
qbdlx.userAuth = userAuthToken;
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Getting app_secret..."));
}
catch (Exception ex)
{
// If connection to API fails, show error info.
string error = ex.ToString();
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
System.IO.File.WriteAllText(errorLog, error);
wr.Abort();
return;
} }
private void aboutLabel_Click(object sender, EventArgs e) wr.Abort();
getSecretBG.RunWorkerAsync();
loginBG.CancelAsync();
}
private void getSecretBG_DoWork(object sender, DoWorkEventArgs e)
{ {
about.Show(); getSecretBG.WorkerSupportsCancellation = true;
WebClient bundleURLClient = new WebClient();
string bundleHTML = bundleURLClient.DownloadString("https://play.qobuz.com/");
// Grab link to bundle.js
var bundleLog = Regex.Match(bundleHTML, "<script src=\"(?<bundleJS>\\/resources\\/\\d+\\.\\d+\\.\\d+-[a-z]\\d{3}\\/bundle\\.js)").Groups;
var bundleSuffix = bundleLog[1].Value;
var bundleURL = "https://play.qobuz.com" + bundleSuffix;
WebRequest bundleWR = WebRequest.Create(bundleURL);
try
{
WebResponse bundleWS = bundleWR.GetResponse();
StreamReader bundleSR = new StreamReader(bundleWS.GetResponseStream());
string getBundleRequest = bundleSR.ReadToEnd();
string text = getBundleRequest;
// Grab "info" and "extras"
var bundleLog1 = Regex.Match(getBundleRequest, "{offset:\"(?<notUsed>.*?)\",name:\"Europe\\/Berlin\",info:\"(?<info>.*?)\",extras:\"(?<extras>.*?)\"}").Groups;
var bundleInfo = bundleLog1[2].Value;
var bundleExtras = bundleLog1[3].Value;
// Grab "seed"
var bundleLog2 = Regex.Match(getBundleRequest, "window.utimezone.paris\\):h.initialSeed\\(\"(?<seed>.*?)\",window.utimezone.berlin\\)").Groups;
var bundleSeed = bundleLog2[1].Value;
// Step 1 of getting the app_secret
string B64step1 = bundleSeed + bundleInfo + bundleExtras;
B64step1 = B64step1.Remove(B64step1.Length - 44, 44);
byte[] step1Bytes = Encoding.UTF8.GetBytes(B64step1);
B64step1 = Convert.ToBase64String(step1Bytes);
// Step 2 of getting the app_secret
byte[] step2Data = Convert.FromBase64String(B64step1);
string B64step2 = Encoding.UTF8.GetString(step2Data);
// Step 3 of getting the app_secret
byte[] step3Data = Convert.FromBase64String(B64step2);
// Set app_secret
appSecret = Encoding.UTF8.GetString(step3Data);
loginText.Invoke(new Action(() => loginText.Text = "app_secret Obtained! Launching QBDLX..."));
System.Threading.Thread.Sleep(1000);
}
catch (Exception bundleEx)
{
// If obtaining bundle.js info fails, show error info.
string bundleError = bundleEx.ToString();
loginText.Invoke(new Action(() => loginText.Text = "Couldn't obtain app_secret. Error Log saved"));
System.IO.File.WriteAllText(errorLog, bundleError);
bundleWR.Abort();
return;
}
bundleWR.Abort();
finishLogin(sender, e);
getSecretBG.CancelAsync();
}
private void finishLogin(object sender, EventArgs e)
{
// If info is legit, go to the main form.
qbdlx.appid = appidTextbox.Text;
qbdlx.eMail = emailTextbox.Text;
qbdlx.password = passwordTextbox.Text;
qbdlx.appSecret = appSecret;
this.Invoke(new Action(() => this.Hide()));
Application.Run(qbdlx);
} }
} }
} }

@ -123,939 +123,4 @@
<metadata name="loginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="loginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>138, 20</value> <value>138, 20</value>
</metadata> </metadata>
<metadata name="altLoginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>302, 20</value>
</metadata>
<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>
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
AP8UFBT/tra2/////////////////////////////Pz8/4SEhP8DAwP/AAAA/wAAAP8AAAD/AAAA/wAA
AP8NDQ3/wMDA///////e3t7/IyMj8wAAAE4AAAC2ampq////////////Y2Nj/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/1tbW//6+vr///////7+/v/q6ur/8fHx////////////4uLi/yoqKv8AAAD/AAAA/wAA
AP8AAAD/AAAA/wEBAf+cnJz//////+/v7/84ODj8AAAAbAoKCsl5eXn///////r6+v9PT0//AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/jo6O////////////29vb/zo6Ov9gYGD/9fX1///////7+/v/VFRU/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/4mJif//////9fX1/0VFRf4AAAB8CwsLynp6ev//////+fn5/05O
Tv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+RkZH////////////X19f/Li4u/1ZWVv/09PT///////v7
+/9VVVX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/iYmJ///////19fX/RUVF/gAAAHwBAQG5bW1t////
///+/v7/YGBg/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2FhYf/7+/v///////7+/v/h4eH/6urq////
////////5eXl/y4uLv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+bm5v//////+/v7/85OTn8AAAAbQAA
AJlRUVH/+vr6//////+FhYX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/GBgY/8DAwP//////////////
//////////////////+Pj4//BAQE/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/76+vv//////39/f/yQk
JPMAAABPAAAAay0tLfvn5+f//////7u7u/8MDAz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/MTEx/7u7
u//5+fn////////////x8fH/mJiY/xcXF/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8sLCz/5eXl////
//+8vLz/Dg4O4AAAACsAAAA2DQ0N5rq6uv//////7e3t/zs7O/8AAAD/AAAA/wAAAP8AAAD/AQEB/w4O
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
///////////////////9/f3/9fX1/+rq6v/c3Nz/zc3N/7y8vP+rq6v/mZmZ/4WFhf9nZ2f/Nzc3/w4O
Dv8AAAD8AAAA9AoKCv5/f3//9PT0/////////////////5+fn/8LCwv/AAAA6woKClwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAJwAAAD4JSUl/52dnf/09PT/////////////////////////
///8/Pz/7u7u/9XV1f+4uLj/pKSk/5qamv+bm5v/o6Oj/7CwsP+7u7v/vr6+/7Ozs/+fn5//iIiI/3Jy
cv9aWlr/RkZG/y8vL/8PDw//CwsL/39/f//09PT////////////+/v7/rKys/x4eHv8AAADtAAAAaQAA
AAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAqQAAAP07Ozv/x8fH////////////////////
////////8fHx/7y8vP93d3f/Pz8//xsbG/8NDQ3/BwcH/wQEBP8FBQX/CAgI/w8PD/8fHx//Pj4+/2Ji
Yv97e3v/eXl5/2JiYv9KSkr/OTk5/ycnJ/8dHR3/gYGB//T09P////////////7+/v+srKz/HR0d/wAA
AO0AAABpAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAACiAAAA/kZGRv/W1tb/////////
//////////////T09P+vr6//TU1N/xAQEP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wICAv8SEhL/MjIy/0VFRf8+Pj7/LCws/yEhIf+EhIT/9fX1/////////////v7+/6ys
rP8dHR3/AAAA7QAAAGoAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAIYAAAD7Pz8//9jY
2P//////////////////////1NTU/2BgYP8ODg7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wsLC/8dHR3/JSUl/4eHh//19fX/////////
////////rq6u/xwcHP8AAADsAAAAaQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAA
APAqKir/y8vL//////////////////39/f+1tbX/MDAw/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8LCwv/goKC//X1
9f/////////////////+/v7/kZGR/wcHB/8AAADOAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAmAAAA0BAQEP+oqKj//////////////////f39/6Ojo/8bGxv/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woK
Cv9+fn7/9PT0////////////////////////////8fHx/1xcXP8AAAD7AAAAfgAAAAMAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAQAAACKAAAA/mtra//4+Pj/////////////////ra2t/xkZGf8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/CgoK/35+fv/09PT////////////9/f3/+fn5/////////////////9LS0v8oKCj/AAAA4gAA
ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUAAADiJycn/9XV1f/////////////////Ly8v/KCgo/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8KCgr/fn5+//T09P////////////7+/v+srKz/fX19//Ly8v//////////////
//+Ojo7/BQUF/wAAAJoAAAAHAAAAAAAAAAAAAAAAAAAAAwAAAI0CAgL/goKC//7+/v///////////+7u
7v9QUFD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv9wcHD/9PT0/////////////v7+/62trf8dHR3/CQkJ/5yc
nP/////////////////k5OT/Nzc3/wAAAOYAAAA3AAAAAAAAAAAAAAAAAAAAIwAAANciIiL/1dXV////
/////////////5ubm/8ICAj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xAQEP+/v7/////////////+/v7/rq6u/x4e
Hv8AAAD/AAAA/y8vL//b29v/////////////////jo6O/wMDA/8AAACGAAAAAQAAAAAAAAAAAAAAYAAA
APlmZmb/+vr6////////////5ubm/zg4OP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AQEB/wUFBf8EBAT/AAAA/wAAAP8AAAD/AAAA/wYGBv+Tk5P//f39//z8
/P+tra3/Hh4e/wAAAP8AAAD/AAAA/wICAv+Dg4P//v7+////////////19fX/yIiIv8AAADMAAAAGAAA
AAAAAAAHAAAAoAoKCv+srKz/////////////////pKSk/wgICP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/xISEv9OTk7/h4eH/5+fn/+ZmZn/c3Nz/zIyMv8GBgb/AAAA/wAA
AP8aGhr/a2tr/2tra/8aGhr/AAAA/wAAAP8AAAD/AAAA/wAAAP8wMDD/4+Pj////////////+Pj4/1xc
XP8AAADxAAAARwAAAAAAAAAdAAAA0SQkJP/e3t7////////////39/f/WVlZ/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/Ozs7/7W1tf/z8/P//////////////////f39/+Pj
4/+FhYX/FhYW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCQn/qKio////
/////////////5iYmP8EBAT/AAAAewAAAAAAAABCAAAA605OTv/09PT////////////d3d3/JCQk/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9BQUH/2NjY////////////////////
///////////////////7+/v/oqKi/xQUFP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/ampq//z8/P///////////8fHx/8TExP/AAAApwAAAAkAAABnAAAA9nR0dP//////////////
//+1tbX/DQ0N/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/x0dHf/FxcX/////////
////////////////////////////////////////+/v7/3t7e/8CAgL/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/PDw8/+3t7f///////////+Xl5f8pKSn/AAAAyAAAABYGBgaEAgIC/ZKS
kv////////////////+SkpL/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2xs
bP/7+/v//////////////////////////////////////////////////////9jY2P8lJSX/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Hh4e/9ra2v////////////Dw8P9DQ0P/AAAA3gAA
ACYUFBScBwcH/6Wlpf////////////////94eHj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/CgoK/62trf//////////////////////3Nzc/4qKiv+mpqb/9vb2//////////////////j4
+P9bW1v/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/EhIS/8bGxv////////////b2
9v9VVVX/AAAA6AAAADYcHBypCgoK/6+vr/////////////39/f9qamr/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/FBQU/83Nzf/////////////////4+Pj/ZWVl/wAAAP8RERH/tLS0////
//////////////////98fHz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Dw8P/7u7
u/////////////n5+f9fX1//AAAA6wAAAD4dHR2qCgoK/7CwsP////////////39/f9qamr/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/FRUV/87Ozv/////////////////39/f/XFxc/wAA
AP8MDAz/ra2t//////////////////////9+fn7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/Dw8P/7u7u/////////////n5+f9fX1//AAAA6wAAAD4WFhafCAgI/6enp///////////////
//91dXX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/7Ozs///////////////
////////0NDQ/3Fxcf+QkJD/8vLy//////////////////n5+f9gYGD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/EhIS/8bGxv////////////b29v9WVlb/AAAA6AAAADYJCQmJAwMD/peX
l/////////////////+NjY3/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Z2
dv/9/f3///////////////////////39/f/+/v7//////////////////////9/f3/8rKyv/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/HR0d/9nZ2f////////////Dw8P9ERET/AAAA3gAA
ACcAAABsAAAA+Hp6ev////////////////+urq7/CgoK/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/yUlJf/Q0ND//////////////////////////////////////////////////v7+/4iI
iP8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/OTk5/+3t7f///////////+bm
5v8rKyv/AAAAyQAAABcAAABJAAAA7lVVVf/29vb////////////X19f/Hh4e/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9SUlL/5eXl////////////////////////////////////
////////tbW1/x0dHf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ZmZm//v7
+////////////8nJyf8UFBT/AAAAqQAAAAoAAAAiAAAA1ysrK//j4+P////////////09PT/T09P/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8DAwP/TU1N/8nJyf/6+vr/////////
/////////////+/v7/+bm5v/ISEh/wAAAP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8HBwf/oqKi/////////////////5ycnP8FBQX/AAAAfgAAAAAAAAAKAAAAqQ0NDf+1tbX/////////
////////mJiY/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/w4ODv8WFhb/CAgI/x0d
Hf9kZGT/nZ2d/7W1tf+vr6//ioqK/0VFRf8MDAz/Dg4O/xcXF/8ICAj/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8qKir/3t7e////////////+fn5/2FhYf8AAADzAAAASgAAAAAAAAAAAAAAawAA
APxxcXH//f39////////////39/f/y8vL/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/DAwM/x4e
Hv8zMzP/PDw8/ysrK/8UFBT/EBAQ/xQUFP8TExP/Dw8P/x0dHf81NTX/PDw8/ysrK/8XFxf/BgYG/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP94eHj//f39////////////3Nzc/ycnJ/8AAADQAAAAGwAA
AAAAAAAAAAAAKwAAAN8qKir/3d3d/////////////////42Njf8EBAT/AAAA/wAAAP8AAAD/AAAA/wEB
Af8KCgr/Ghoa/ywsLP8+Pj7/VFRU/2lpaf90dHT/eXl5/35+fv98fHz/d3d3/3Fxcf9hYWH/S0tL/zc3
N/8lJSX/ExMT/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/yYmJv/T09P/////////////////mJiY/wUF
Bf8AAACMAAAAAgAAAAAAAAAAAAAABgAAAJkEBAT/j4+P/////////////////+fn5/9DQ0P/AAAA/wAA
AP8AAAD/AQEB/wkJCf8XFxf/JiYm/zc3N/9JSUn/W1tb/29vb/+Ghob/n5+f/7W1tf+urq7/lJSU/3x8
fP9nZ2f/U1NT/0FBQf8xMTH/ICAg/xEREf8EBAT/AAAA/wAAAP8AAAD/BgYG/4yMjP/+/v7/////////
///r6+v/QUFB/wAAAOoAAAA9AAAAAAAAAAAAAAAAAAAAAAAAAD8AAADqMDAw/93d3f//////////////
//+/v7//Hh4e/wAAAP8BAQH/BwcH/xQUFP8iIiL/MTEx/0BAQP9RUVH/YmJi/3V1df+JiYn/np6e/7Gx
sf+rq6v/lZWV/4GBgf9tbW3/W1tb/0pKSv86Ojr/Kysr/x0dHf8PDw//BAQE/wAAAP8AAAD/VVVV/+3t
7f////////////////+dnZ3/CAgI/wAAAKQAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAcAAACYAgIC/3p6
ev/7+/v////////////9/f3/m5ub/xAQEP8CAgL/ERER/x8fH/8sLCz/Ojo6/0lJSf9YWFj/aWlp/3p6
ev+NjY3/oKCg/7Kysv+srKz/mJiY/4WFhf9zc3P/YmJi/1JSUv9DQ0P/NDQ0/ycnJ/8aGhr/CgoK/wAA
AP86Ojr/1tbW/////////////////9zc3P8yMjL/AAAA6AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAvAAAA2RcXF/+3t7f/////////////////+fn5/4+Pj/8QEBD/BwcH/yMjI/82Njb/QkJC/1BQ
UP9fX1//bm5u/35+fv+Pj4//oqKi/7Kysv+tra3/mpqa/4iIiP94eHj/aGho/1lZWf9KSkr/PT09/zAw
MP8YGBj/AgIC/zc3N//MzMz/////////////////9vb2/25ubv8BAQH+AAAAjAAAAAUAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAABAAAAaAAAAPU2Njb/19fX//////////////////n5+f+dnZ3/Hx8f/wcH
B/8nJyf/RkZG/1hYWP9lZWX/c3Nz/4KCgv+SkpL/o6Oj/7Kysv+tra3/nJyc/4uLi/98fHz/bW1t/2Bg
YP9SUlL/PDw8/xgYGP8GBgb/S0tL/9LS0v/////////////////+/v7/mpqa/w0NDf8AAADGAAAAIQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAJcAAAD9T09P/+Tk5P//////////////
///9/f3/wsLC/0dHR/8JCQn/FxcX/0BAQP9iYmL/eHh4/4iIiP+Xl5f/p6en/7S0tP+wsLD/oKCg/5GR
kf+CgoL/cHBw/1VVVf8uLi7/CwsL/xgYGP98fHz/5+fn//////////////////////+ysrL/HBwc/wAA
AOMAAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAACzAgIC/1lZ
Wf/k5OT//////////////////////+rq6v+VlZX/NjY2/wwMDP8VFRX/NjY2/1paWv94eHj/kJCQ/6Cg
oP+bm5v/h4eH/21tbf9LS0v/Jycn/w0NDf8WFhb/Wlpa/8DAwP/5+fn//////////////////v7+/7W1
tf8kJCT/AAAA7wAAAGUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAnAAAAvAICAv9OTk7/1dXV///////////////////////+/v7/5eXl/6Wlpf9dXV3/KSkp/xUV
Ff8RERH/FBQU/xkZGf8XFxf/EhIS/xISEv8ZGRn/PDw8/3p6ev/ExMT/9fX1////////////////////
///4+Pj/oqKi/x8fH/8AAADwAAAAcgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAAALIAAAD9NDQ0/7S0tP/5+fn/////////////////////////
///4+Pj/4uLi/7+/v/+goKD/jY2N/4KCgv+FhYX/k5OT/6ysrP/Pz8//7u7u//39/f//////////////
/////////////+fn5/97e3v/EBAQ/wAAAOkAAABrAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAACTAAAA9BUVFf91dXX/2tra//39
/f//////////////////////////////////////////////////////////////////////////////
///////////////////19fX/s7Oz/0JCQv8FBQX/AAAA0gAAAFAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAYwAA
ANUCAgL+Kioq/4WFhf/X19f/+vr6////////////////////////////////////////////////////
////////////////////////8PDw/7e3t/9aWlr/EBAQ/wAAAPMAAACjAAAALQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAQAAACoAAACPAAAA5AMDA/4jIyP/ZGRk/6enp//Y2Nj/8fHx//v7+///////////////
//////////////7+/v/39/f/6enp/8bGxv+Li4v/RUVF/w8PD/8AAAD3AAAAwQAAAFkAAAAMAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAANgAAAIsAAADWAAAA9wgICP8fHx//RERE/2Vl
Zf+BgYH/k5OT/5qamv+YmJj/jY2N/3Z2dv9YWFj/NDQ0/xMTE/8DAwP9AAAA7AAAALUAAABfAAAAFwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAWgAA
AJYAAADGAAAA5QAAAPEBAQH4BQUF/AcHB/0HBwf9BAQE+gAAAPUAAADsAAAA2QAAALEAAAB6AAAAOwAA
AA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAUCAgIWDg4OMxUVFVQYGBhsGxsbfCAgIIQeHh6CGRkZdRcXF2ITExNFCAgIJAAA
AA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD//4AD/48AAP/8AAB/BwAA//AAAB4DAAD/4AAABAEAAP+AAAAAAAAA/wAAAAAA
AAD+AAAAAAAAAPwAAAAAAQAA+AAAAAADAADwAAAAAAcAAPAAAAAADwAA4AAAAAAHAADAAAAAAAcAAMAA
AAAAAwAAgAAAAAADAACAAAAAAAEAAIAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAABAAAAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAMAAMAAAAAAAwAAwAAAAAAH
AADgAAAAAAcAAOAAAAAADwAA8AAAAAAfAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+A
AAAD/wAA/8AAAAf/AAD/8AAAH/8AAP/8AAB//wAA//+AAf//AAAoAAAAYAAAAMAAAAABACAAAAAAAACQ
AAAAAAAAAAAAAAAAAAAAAAAAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAswAA
AHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAKgAAAD/AAAA/wAAAP8AAAD/e3t7/0lJ
Sf8AAAD/AAAA/wAAAP8AAAD/AAAAZQAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAACwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xYW
Fv9TU1P/l5eX/9HR0f/29vb/////////////////////////////////////////////////////////
/////////////////////////v7+//b29v/i4uL/wMDA/42Njf9RUVH/Gxsb/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAC5AAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAApwAA
AP8AAAD/AAAA/wAAAP9/f3////////Pz8/9AQED/AAAA/wAAAP8AAAD/AAAA/wAAAGUAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAnwAAAP0AAAD/AAAA/wAA
AP8AAAD/AAAA/wwMDP9TU1P/q6ur/+zs7P//////////////////////////////////////////////
//////////////////////////////7+/v/7+/v/+Pj4//X19f/x8fH/7Ozs/+fn5//j4+P/4eHh/+Dg
4P/Y2Nj/v7+//42Njf9KSkr/ERER/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAKsAAAArAAAAAAAA
AAAAAAAAAAAAAAAAAAQAAACnAAAA/wAAAP8AAAD/AAAA/39/f//////////////////x8fH/QEBA/wAA
AP8AAAD/AAAA/wAAAP8AAABlAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA
AHEAAADtAAAA/wAAAP8AAAD/AAAA/wAAAP8gICD/goKC/93d3f//////////////////////////////
/////////////////////////////////////////////////////////v7+//z8/P/5+fn/9vb2//Ly
8v/t7e3/6Ojo/+Li4v/c3Nz/1tbW/8/Pz//Hx8f/wcHB/7+/v/+4uLj/mpqa/19fX/8eHh7/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD0AAAAfgAAAAgAAAAAAAAABAAAAKcAAAD/AAAA/wAAAP8AAAD/f39/////
////////////////////////8fHx/0BAQP8AAAD/AAAA/wAAAP8AAAD/AAAAZAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAArAAAAvgAAAP8AAAD/AAAA/wAAAP8AAAD/IyMj/5OTk//x8fH/////////
////////////////////////////////////////////////////////////////////////////////
/////////f39//r6+v/39/f/8/Pz/+/v7//q6ur/5OTk/97e3v/Y2Nj/0dHR/8nJyf/BwcH/ubm5/7Cw
sP+np6f/oKCg/5ycnP+Kior/V1dX/xsbG/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAMoAAAA+AAAAoQAA
AP8AAAD/AAAA/wAAAP9+fn7///////////////////////////////////////Hx8f9FRUX/AQEB/wAA
AP8AAAD/AAAA/wAAAGaysrIDv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEAAADwAAAA/wAAAP8AAAD/AAAA/xIS
Ev+FhYX/8fHx////////////////////////////////////////////////////////////////////
///////////////////////////////////9/f3/+/v7//j4+P/09PT/8PDw/+vr6//m5ub/4ODg/9ra
2v/T09P/y8vL/8TExP+7u7v/s7Oz/6qqqv+goKD/lpaW/4uLi/+CgoL/fHx8/2tra/8+Pj7/DQ0N/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/35+fv//////////////////////////////
///////////////////U1NT/CQkJ/wAAAP8AAAD/AAAA/wAAAPGysrIcv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAlQAA
AP8AAAD/AAAA/wAAAP8AAAD/WFhY/93d3f//////////////////////////////////////////////
//////////////////////////////////////////////////////////////7+/v/8/Pz/+fn5//b2
9v/x8fH/7e3t/+jo6P/i4uL/29vb/9XV1f/Ozs7/xsbG/76+vv+1tbX/rKys/6Ojo/+ZmZn/jo6O/4SE
hP94eHj/bW1t/2JiYv9aWlr/R0dH/yEhIf8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/fn5+////
/////////////////////////////////////////////+Pj4/8vLy//AAAA/wAAAP8AAAD/AAAA9AAA
AEaysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAABYAAAC7AAAA/wAAAP8AAAD/AAAA/xkZGf+np6f/////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////39/f/7+/v/9/f3//Dw8P/n5+f/3Nzc/9HR0f/IyMj/wMDA/7i4
uP+vr6//pqam/5ycnP+RkZH/h4eH/3x8fP9wcHD/ZGRk/1hYWP9MTEz/RERE/z8/P/8qKir/CgoK/wAA
AP8AAAD/AAAA/wAAAP9+fn7/////////////////////////////////////////////////4+Pj/ysr
K/8AAAD/AAAA/wAAAP8AAAD0AAAARgAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAANIAAAD/AAAA/wAAAP8AAAD/R0dH/+Dg
4P//////////////////////////////////////////////////////////////////////////////
/////////////+np6f/Gxsb/oKCg/39/f/9lZWX/UlJS/0ZGRv9DQ0P/Q0ND/01NTf9aWlr/b29v/4mJ
if+kpKT/vb29/8zMzP/Ozs7/w8PD/7W1tf+oqKj/n5+f/5WVlf+Kior/f39//3R0dP9oaGj/XFxc/09P
T/9FRUX/PT09/zU1Nf8vLy//JiYm/w8PD/8AAAD/AAAA/319ff//////////////////////////////
///////////////////j4+P/Kysr/wAAAP8AAAD/AAAA/wAAAPQAAABGAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAA3gAA
AP8AAAD/AAAA/wAAAP92dnb//f39////////////////////////////////////////////////////
////////////////////////9PT0/7y8vP93d3f/Ozs7/xISEv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CwsL/ycnJ/9RUVH/fn5+/6CgoP+qqqr/n5+f/46O
jv+CgoL/d3d3/2xsbP9fX1//U1NT/0hISP8/Pz//ODg4/y8vL/8nJyf/ICAg/xcXF/8AAAD/fX19////
/////////////////////////////////////////////+Pj4/8rKyv/AAAA/wAAAP8AAAD/AAAA9AAA
AEYAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACYAAADgAAAA/wAAAP8AAAD/BAQE/5qamv//////////////////////////////
/////////////////////////////////////////////8nJyf9ubm7/ISEh/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/w8PD/86Ojr/a2tr/4aGhv+BgYH/cHBw/2NjY/9WVlb/SkpK/0JCQv86Ojr/MjIy/yoq
Kv8iIiL/GBgY/wMDA/+Dg4P/////////////////////////////////////////////////4+Pj/yws
LP8AAAD/AAAA/wAAAP8AAAD1AAAARwAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAANoAAAD/AAAA/wAAAP8KCgr/r6+v////
//////////////////////////////////////////////////////////////////+xsbH/RERE/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xkZGf9ISEj/ZWVl/19f
X/9OTk7/RERE/zw8PP80NDT/LCws/yQkJP8aGhr/BgYG/4SEhP//////////////////////////////
///////////////////j4+P/LCws/wAAAP8AAAD/AAAA/wAAAPUAAABHAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAygAA
AP8AAAD/AAAA/wsLC/+4uLj/////////////////////////////////////////////////////////
////////urq6/z4+Pv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/EBAQ/zY2Nv9JSUn/QUFB/zY2Nv8uLi7/Jycn/xwcHP8ICAj/hISE////
/////////////////////////////////////////////+Tk5P8sLCz/AAAA/wAAAP8AAAD/AAAA9QAA
AEcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACrAAAA/wAAAP8AAAD/BwcH/7W1tf//////////////////////////////
/////////////////////////////+Hh4f9bW1v/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/wAAAP8SEhL/MDAw/zQ0
NP8pKSn/Hx8f/wsLC/+FhYX/////////////////////////////////////////////////5OTk/yws
LP8AAAD/AAAA/wAAAP8AAAD1AAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAD/AAAA/wAAAP8AAAD/paWl////
////////////////////////////////////////////////////////o6Oj/xcXF/8AAAD/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/AgIC/xkZGf8jIyP/Dg4O/4eHh///////////////////////////////
///////////////////Z2dn/Kysr/wAAAP8AAAD/AAAA/wAAAOwAAABIAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAA
AP0AAAD/AAAA/wAAAP+Ghob///////////////////////////////////////////////////////f3
9/9oaGj/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/iIiI////
//////////////////////////////////////////////////+ysrL/AAAA/wAAAP8AAAD/AAAA/wAA
AHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAARAAAA3gAAAP8AAAD/AAAA/1lZWf//////////////////////////////
////////////////////////4uLi/z4+Pv8AAAD/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/wAAAP96enr/////////////////////////////////////////////////////////
////////gICA/wAAAP8AAAD/AAAA/wAAAOAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACaAAAA/wAAAP8AAAD/KCgo//Hx
8f/////////////////////////////////////////////////U1NT/IyMj/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/3t7e///////////////////////////////
/////////////////////////////////////////////0hISP8AAAD/AAAA/wAAAP8AAACsAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEEAAAD/AAAA/wAAAP8FBQX/xsbG/////////////////////////////////////////////////9LS
0v8aGhr/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/e3t7////
/////////////////////////////////////////////////////////////////////////////+Pj
4/8VFRX/AAAA/wAAAP8AAAD/AAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAM8AAAD/AAAA/wAAAP95eXn/////////////////////////
////////////////////////29vb/x0dHf8AAAD/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/wAAAP96enr/////////////////////////////////////////////////////////
//////////////////////////////////+kpKT/AAAA/wAAAP8AAAD/AAAA3gAAAAwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAP8AAAD/AAAA/ycn
J//29vb////////////////////////////////////////////t7e3/Kysr/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/3p6ev//////////////////////////////
////////////////////////////////////////////////////////////////////////SkpK/wAA
AP8AAAD/AAAA/wAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAANAAAA4gAAAP8AAAD/AAAA/7Kysv////////////////////////////////////////////7+
/v9LS0v/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/enp6////
/////////////////////////////////////////////+Li4v9bW1v/7Ozs////////////////////
////////////////////////19fX/wkJCf8AAAD/AAAA/wAAAO4AAAAYAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAABwAAAA/wAAAP8AAAD/RERE////////////////////
/////////////////////////////4ODg/8AAAD/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/wAAAP96enr/////////////////////////////////////////////////5eXl/y4u
Lv8AAAD/WFhY/////////////////////////////////////////////////3Fxcf8AAAD/AAAA/wAA
AP8AAACHAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAoAAADfAAAA/wAA
AP8BAQH/xcXF////////////////////////////////////////////x8fH/wQEBP8AAAD/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/3h4eP//////////////////////////////
///////////////////l5eX/Li4u/wAAAP8AAAD/AAAA/5+fn///////////////////////////////
/////////////+fn5/8RERH/AAAA/wAAAP8AAADtAAAAFAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAFsAAAD/AAAA/wAAAP9HR0f/////////////////////////////////////////
///5+fn/MDAw/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/Q0ND////
/////////////////////////////////////////////+Xl5f8uLi7/AAAA/wAAAP8AAAD/AAAA/xMT
E//l5eX///////////////////////////////////////////93d3f/AAAA/wAAAP8AAAD/AAAAcwAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAMMAAAD/AAAA/wAAAP+6urr/////////
//////////////////////////////////+NjY3/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/pKSk////////////////////////////////////////////5eXl/y4u
Lv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9dXV3/////////////////////////////////////////
///i4uL/DAwM/wAAAP8AAAD/AAAA2AAAAAUAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAALwAA
AP0AAAD/AAAA/y8vL//9/f3//////////////////////////////////////+np6f8TExP/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/ubm5////////////////////
///////////////////m5ub/Li4u/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/yMjI////
////////////////////////////////////////Xl5e/wAAAP8AAAD/AAAA/wAAAEUAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAhwAAAP8AAAD/AAAA/5GRkf//////////////////////////////
/////////////3l5ef8AAAD/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/hoaG/////////////////////////////////+bm5v8vLy//AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/R0dH////////////////////////////////////////////w8PD/wAA
AP8AAAD/AAAA/wAAAKEAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAEAAAA1wAAAP8AAAD/CwsL/+Tk
5P//////////////////////////////////////6+vr/xISEv8AAAD/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/Gxsb/+Pj4///////////////////////5eXl/y8v
L/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/8fHx///////////////
/////////////////////////Pz8/ywsLP8AAAD/AAAA/wAAAOkAAAAOAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAzAAAA/wAAAP8AAAD/SkpK////////////////////////////////////////////jY2N/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/MjIy/01N
Tf9XV1f/T09P/zg4OP8XFxf/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ygo
KP+wsLD/6+vr/+vr6/+wsLD/Jycn/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/1lZWf///////////////////////////////////////////39/f/8AAAD/AAAA/wAA
AP8AAABKAAAAAAAAAACysrIAv7+/AAAAAAAAAAB5AAAA/wAAAP8AAAD/mpqa////////////////////
///////////////////8/Pz/LCws/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8HBwf/VlZW/6+vr//n5+f////////////////////////////u7u7/vLy8/2hoaP8SEhL/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/EhIS/xISEv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wsLC//j4+P/////////////////////////
/////////////8zMzP8BAQH/AAAA/wAAAP8AAACUAAAAAAAAAACysrIAv7+/AAAAAAAAAAC8AAAA/wAA
AP8GBgb/29vb///////////////////////////////////////ExMT/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/1NTU//R0dH/////////////////////////////////////////
///////////////////i4uL/bGxs/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP+RkZH///////////////////////////////////////r6+v8lJSX/AAAA/wAAAP8AAADSAAAAAgAA
AACysrIAv7+/AAAAABAAAADsAAAA/wAAAP8uLi7//v7+////////////////////////////////////
//9xcXH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/mpqa////////////////////
/////////////////////////////////////////////////////////////7e3t/8ZGRn/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP89PT3/////////////////////////////////////////
//9hYWH/AAAA/wAAAP8AAAD5AAAAIQAAAACysrIAv7+/AAAAADgAAAD/AAAA/wAAAP9mZmb/////////
//////////////////////////////z8/P8rKyv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
DP+6urr/////////////////////////////////////////////////////////////////////////
///////////////////X19f/ISEh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/4eHh////
//////////////////////////////////+enp7/AAAA/wAAAP8AAAD/AAAAUAAAAACysrIAv7+/AAAA
AGYAAAD/AAAA/wAAAP+dnZ3//////////////////////////////////////9fX1/8DAwP/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AgIC/7Gxsf//////////////////////////////////////////////
////////////////////////////////////////////////////////0tLS/xEREf8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/pqam///////////////////////////////////////Q0ND/AQEB/wAA
AP8AAAD/AAAAgQAAAACysrIAv7+/AAAAAJIAAAD/AAAA/wAAAP/Jycn/////////////////////////
/////////////6Ghof8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/enp6////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////6Wlpf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/aWlp////////////////////
///////////////////x8fH/FxcX/wAAAP8AAAD/AAAArQAAAACysrIAv7+/AAAAALYAAAD/AAAA/w8P
D//p6en//////////////////////////////////////2xsbP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8lJSX/9/f3////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////9JSUn/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/ODg4////////////////////////////////////////////NjY2/wAAAP8AAAD/AAAAzwAA
AAGysrIAv7+/AwAAANEAAAD/AAAA/ycnJ//8/Pz//////////////////////////////////////0FB
Qf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+cnJz/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///Hx8f/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/FhYW//Hx8f//////////////////////////////
////////VlZW/wAAAP8AAAD/AAAA5wAAAA2ysrIAv7+/EgAAAOQAAAD/AAAA/0BAQP//////////////
////////////////////////+vr6/yMjI/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xcXF//x8fH/////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////ODg4/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/9fX
1///////////////////////////////////////dHR0/wAAAP8AAAD/AAAA9wAAAB6ysrIAv7+/IQAA
APEAAAD/AAAA/1dXV///////////////////////////////////////6enp/w8PD/8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/1paWv////////////////////////////////////////////////////////////z8
/P/k5OT/9vb2////////////////////////////////////////////////////////////iIiI/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/7+/v///////////////////////////////////////jIyM/wAA
AP8AAAD/AAAA/wAAAC6ysrIAv7+/LwAAAPkAAAD/AAAA/2lpaf//////////////////////////////
////////2dnZ/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/5eXl///////////////////////////////
////////////////////////tLS0/y8vL/8MDAz/IiIi/5aWlv//////////////////////////////
////////////////////////w8PD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6qqqv//////////////
////////////////////////np6e/wAAAP8AAAD/AAAA/wAAADuysrIAv7+/OgAAAP0AAAD/AAAA/3V1
df//////////////////////////////////////zMzM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/76+
vv/////////////////////////////////////////////////S0tL/BwcH/wAAAP8AAAD/AAAA/wAA
AP+tra3/////////////////////////////////////////////////4uLi/woKCv8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/5ycnP//////////////////////////////////////qqqq/wAAAP8AAAD/AAAA/wAA
AEWysrIAv7+/PwAAAP8AAAD/AAAA/319ff//////////////////////////////////////xcXF/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/9DQ0P//////////////////////////////////////////////
//93d3f/AAAA/wAAAP8AAAD/AAAA/wAAAP9JSUn/////////////////////////////////////////
////////8PDw/xYWFv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/5SUlP//////////////////////////////
////////r6+v/wAAAP8AAAD/AAAA/wAAAEqysrIAv7+/QAAAAP8AAAD/AAAA/35+fv//////////////
////////////////////////xMTE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9LS0v//////////////
//////////////////////////////////9tbW3/AAAA/wAAAP8AAAD/AAAA/wAAAP9AQED/////////
////////////////////////////////////////8fHx/xgYGP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/5SU
lP//////////////////////////////////////sLCw/wAAAP8AAAD/AAAA/wAAAEqysrIAv7+/PQAA
AP4AAAD/AAAA/3l5ef//////////////////////////////////////ycnJ/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/8XFxf////////////////////////////////////////////////+7u7v/AAAA/wAA
AP8AAAD/AAAA/wAAAP+QkJD/////////////////////////////////////////////////5+fn/w0N
Df8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/5ubm///////////////////////////////////////qqqq/wAA
AP8AAAD/AAAA/wAAAEWysrIAv7+/NAAAAPsAAAD/AAAA/25ubv//////////////////////////////
////////1NTU/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6SkpP//////////////////////////////
////////////////////////hISE/woKCv8AAAD/AgIC/2JiYv/6+vr/////////////////////////
////////////////////////zMzM/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6mpqf//////////////
////////////////////////n5+f/wAAAP8AAAD/AAAA/wAAADyysrIAv7+/JwAAAPQAAAD/AAAA/15e
Xv//////////////////////////////////////4+Pj/wsLC/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2xs
bP///////////////////////////////////////////////////////////9vb2/+1tbX/0NDQ////
////////////////////////////////////////////////////////mJiY/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/729vf//////////////////////////////////////jY2N/wAAAP8AAAD/AAAA/wAA
AC+ysrIAv7+/GAAAAOoAAAD/AAAA/0lJSf//////////////////////////////////////9PT0/xsb
G/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/yYmJv/7+/v/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////S0tL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/9XV1f//////////////////////////////
////////dnZ2/wAAAP8AAAD/AAAA+AAAAB+ysrIAv7+/BwAAANkAAAD/AAAA/zExMf//////////////
/////////////////////////////zU1Nf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+4uLj/////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////d3d3/CQkJ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/FBQU/+7u
7v//////////////////////////////////////WVlZ/wAAAP8AAAD/AAAA6AAAAA6ysrIAv7+/AAAA
AMEAAAD/AAAA/xgYGP/y8vL//////////////////////////////////////1xcXP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP9AQED/////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////9paWn/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/MzMz////////////////////////////////////////////OTk5/wAA
AP8AAAD/AAAA0QAAAAGysrIAv7+/AAAAAKAAAAD/AAAA/wMDA//X19f/////////////////////////
/////////////4+Pj/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/oqKi////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////8nJyf8FBQX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/YmJi////////////////////
///////////////////09PT/Ghoa/wAAAP8AAAD/AAAAsAAAAACysrIAv7+/AAAAAHYAAAD/AAAA/wAA
AP+vr6///////////////////////////////////////8bGxv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/EhIS/9fX1///////////////////////////////////////////////////////////////
////////////////////////////////////////8PDw/yoqKv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/nJyc///////////////////////////////////////U1NT/AgIC/wAAAP8AAAD/AAAAhgAA
AACysrIAv7+/AAAAAEgAAAD/AAAA/wAAAP96enr///////////////////////////////////////T0
9P8aGhr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ycnJ//h4eH/////////////////////////
///////////////////////////////////////////////////////////////////19fX/RkZG/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EBAT/2NjY////////////////////////////////////
//+lpaX/AAAA/wAAAP8AAAD/AAAAVQAAAACysrIAv7+/AAAAABwAAAD2AAAA/wAAAP9BQUH/////////
//////////////////////////////////9ZWVn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8lJSX/y8vL////////////////////////////////////////////////////////////////////
/////////////+Hh4f8+Pj7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8xMTH//v7+////
//////////////////////////////////9paWn/AAAA/wAAAP8AAAD7AAAAJgAAAACysrIAv7+/AAAA
AAEAAADPAAAA/wAAAP8QEBD/6+vr//////////////////////////////////////+srKz/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8DAwP/AAAA/wAAAP8AAAD/CwsL/4qKiv/29vb/////////////////////////
////////////////////////////////////////oqKi/xoaGv8AAAD/AAAA/wAAAP8EBAT/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP9/f3////////////////////////////////////////39/f8tLS3/AAAA/wAA
AP8AAADYAAAABAAAAACysrIAv7+/AAAAAAAAAACRAAAA/wAAAP8AAAD/srKy////////////////////
///////////////////y8vL/GBgY/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wQEBP8PDw//ExMT/wMDA/8AAAD/AAAA/wAA
AP8qKir/kJCQ/9/f3///////////////////////////////////////6Ojo/6CgoP85OTn/AAAA/wAA
AP8AAAD/AQEB/xISEv8SEhL/BgYG/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wQEBP/V1dX/////////////////////////
/////////////9bW1v8EBAT/AAAA/wAAAP8AAACcAAAAAAAAAACysrIAv7+/AAAAAAAAAABKAAAA/wAA
AP8AAAD/Y2Nj////////////////////////////////////////////cHBw/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/w0N
Df8XFxf/JCQk/ygoKP8PDw//AAAA/wAAAP8AAAD/AAAA/wsLC/86Ojr/Z2dn/4aGhv+RkZH/iYmJ/25u
bv9DQ0P/EhIS/wAAAP8AAAD/AAAA/wAAAP8LCwv/JSUl/ycnJ/8aGhr/Dw8P/wUFBf8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0JC
Qv///////////////////////////////////////////46Ojv8AAAD/AAAA/wAAAP8AAABUAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAPAAAA6QAAAP8AAAD/Ghoa//T09P//////////////////////////////
////////19fX/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8DAwP/DAwM/xUVFf8gICD/Kioq/zY2Nv9AQED/Li4u/w0NDf8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJ/ykpKf9AQED/OTk5/yws
LP8iIiL/GBgY/w4ODv8FBQX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/66urv///////////////////////////////////////////zs7
O/8AAAD/AAAA/wAAAPAAAAAVAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAowAAAP8AAAD/AAAA/62t
rf///////////////////////////////////////////1hYWP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8LCwv/FBQU/x0dHf8nJyf/MDAw/zs7
O/9GRkb/VVVV/1lZWf9ERET/IyMj/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BwcH/x8f
H/9AQED/WFhY/1hYWP9JSUn/PT09/zMzM/8pKSn/Hx8f/xYWFv8NDQ3/BAQE/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LS0t//v7+///////////////
////////////////////////1NTU/wQEBP8AAAD/AAAA/wAAAK4AAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAASAAAAP8AAAD/AAAA/0pKSv///////////////////////////////////////////9PT
0/8FBQX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/woK
Cv8SEhL/Gxsb/yQkJP8tLS3/Nzc3/0FBQf9LS0v/VVVV/2JiYv9ycnL/fX19/3p6ev9vb2//YWFh/1lZ
Wf9XV1f/WFhY/19fX/9sbGz/eXl5/35+fv91dXX/ZWVl/1hYWP9NTU3/Q0ND/zk5Of8vLy//JiYm/x0d
Hf8UFBT/DAwM/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/qamp////////////////////////////////////////////dXV1/wAAAP8AAAD/AAAA/wAA
AFMAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAABwAAANwAAAD/AAAA/wUFBf/V1dX/////////
//////////////////////////////////9oaGj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8CAgL/CQkJ/xEREf8ZGRn/IiIi/yoqKv8zMzP/PDw8/0ZGRv9QUFD/Wlpa/2Vl
Zf9wcHD/e3t7/4qKiv+ampr/qqqq/7m5uf/BwcH/vLy8/62trf+dnZ3/jY2N/35+fv9ycnL/Z2dn/1xc
XP9SUlL/SEhI/z4+Pv81NTX/LCws/yQkJP8bGxv/ExMT/wsLC/8DAwP/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP86Ojr//v7+////////////////////////////////////
///x8fH/GRkZ/wAAAP8AAAD/AAAA5AAAAAsAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AHoAAAD/AAAA/wAAAP9nZ2f////////////////////////////////////////////p6en/FxcX/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8ICAj/EBAQ/xgYGP8gICD/KCgo/zAw
MP85OTn/QkJC/0tLS/9UVFT/Xl5e/2hoaP9zc3P/fn5+/4mJif+VlZX/oqKi/6+vr/+2trb/sbGx/6Sk
pP+Xl5f/i4uL/4CAgP91dXX/ampq/2BgYP9WVlb/TU1N/0NDQ/87Ozv/MjIy/yoqKv8iIiL/GRkZ/xIS
Ev8KCgr/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMDA//Jycn/////////
//////////////////////////////////+Wlpb/AAAA/wAAAP8AAAD/AAAAhgAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAABkAAADxAAAA/wAAAP8LCwv/39/f////////////////////
////////////////////////pKSk/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wgI
CP8PDw//FhYW/x4eHv8lJSX/LS0t/zU1Nf8+Pj7/RkZG/09PT/9ZWVn/YmJi/2xsbP92dnb/gICA/4yM
jP+Xl5f/o6Oj/6+vr/+2trb/sbGx/6Wlpf+ZmZn/jY2N/4KCgv94eHj/bm5u/2RkZP9aWlr/UVFR/0hI
SP9AQED/Nzc3/y8vL/8nJyf/ICAg/xgYGP8RERH/CQkJ/wMDA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/3R0dP////////////////////////////////////////////f39/8kJCT/AAAA/wAA
AP8AAAD3AAAAIQAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAACRAAAA/wAA
AP8AAAD/ZWVl/////////////////////////////////////////////////1paWv8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8BAQH/BwcH/w4ODv8VFRX/HBwc/yMjI/8rKyv/MjIy/zo6Ov9CQkL/S0tL/1NT
U/9cXFz/ZWVl/29vb/95eXn/g4OD/42Njf+YmJj/o6Oj/6+vr/+2trb/sbGx/6ampv+ampr/j4+P/4WF
hf96enr/cXFx/2dnZ/9eXl7/VVVV/0xMTP9ERET/PDw8/zQ0NP8sLCz/JSUl/x4eHv8WFhb/EBAQ/wkJ
Cf8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/MDAw//b29v//////////////////////////////
/////////////5WVlf8AAAD/AAAA/wAAAP8AAACfAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAfAAAA9AAAAP8AAAD/BgYG/9HR0f//////////////////////////////
/////////////+/v7/8oKCj/AAAA/wAAAP8AAAD/AAAA/wEBAf8HBwf/DQ0N/xQUFP8aGhr/IiIi/ykp
Kf8wMDD/Nzc3/z8/P/9HR0f/T09P/1dXV/9gYGD/aWlp/3Jycv97e3v/hYWF/4+Pj/+ZmZn/pKSk/7Cw
sP+2trb/sbGx/6ampv+bm5v/kZGR/4eHh/99fX3/c3Nz/2pqav9hYWH/WVlZ/1BQUP9ISEj/QEBA/zk5
Of8xMTH/Kioq/yMjI/8cHBz/FRUV/w8PD/8ICAj/AgIC/wAAAP8AAAD/AAAA/wAAAP8ODg7/09PT////
////////////////////////////////////////7+/v/xoaGv8AAAD/AAAA/wAAAPkAAAAoAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAigAAAP8AAAD/AAAA/0RE
RP/////////////////////////////////////////////////S0tL/EBAQ/wAAAP8AAAD/AAAA/wYG
Bv8NDQ3/EhIS/xkZGf8gICD/JiYm/y0tLf80NDT/PDw8/0NDQ/9LS0v/UlJS/1tbW/9jY2P/a2tr/3R0
dP99fX3/h4eH/5GRkf+ampr/paWl/7CwsP+2trb/srKy/6enp/+cnJz/kpKS/4mJif9/f3//dnZ2/21t
bf9lZWX/XFxc/1RUVP9MTEz/RUVF/z09Pf82Njb/Ly8v/ygoKP8hISH/Gxsb/xQUFP8ODg7/CAgI/wEB
Af8AAAD/AAAA/wAAAP+srKz/////////////////////////////////////////////////cnJy/wAA
AP8AAAD/AAAA/wAAAJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAEwAAAOgAAAD/AAAA/wAAAP+goKD/////////////////////////////////////////
////////t7e3/wYGBv8AAAD/AAAA/wMDA/8RERH/GRkZ/x4eHv8lJSX/Kysr/zIyMv85OTn/QEBA/0dH
R/9OTk7/VlZW/15eXv9mZmb/bm5u/3d3d/9/f3//iYmJ/5KSkv+cnJz/pqam/7CwsP+2trb/srKy/6io
qP+dnZ3/lJSU/4qKiv+BgYH/eHh4/3BwcP9oaGj/YGBg/1hYWP9QUFD/SEhI/0FBQf86Ojr/MzMz/yws
LP8mJib/ICAg/xoaGv8TExP/BQUF/wAAAP8AAAD/AAAA/4+Pj///////////////////////////////
///////////////////Ly8v/BQUF/wAAAP8AAAD/AAAA7wAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGMAAAD/AAAA/wAAAP8UFBT/4+Pj////
/////////////////////////////////////////////6ioqP8DAwP/AAAA/wAAAP8EBAT/GRkZ/yUl
Jf8pKSn/Ly8v/zY2Nv89PT3/RERE/0pKSv9SUlL/WVlZ/2FhYf9paWn/cXFx/3l5ef+BgYH/ioqK/5OT
k/+dnZ3/pqam/7CwsP+2trb/srKy/6ioqP+enp7/lZWV/4yMjP+Dg4P/e3t7/3Jycv9qamr/YmJi/1tb
W/9TU1P/TExM/0VFRf8+Pj7/Nzc3/zExMf8qKir/JiYm/x0dHf8HBwf/AAAA/wAAAP8AAAD/goKC////
//////////////////////////////////////////////n5+f8zMzP/AAAA/wAAAP8AAAD/AAAAcwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAC+AAAA/wAAAP8AAAD/SEhI////////////////////////////////////////////////////
//+pqan/BwcH/wAAAP8AAAD/AwMD/xwcHP8wMDD/NDQ0/zo6Ov9AQED/R0dH/05OTv9VVVX/XV1d/2Rk
ZP9ra2v/c3Nz/3t7e/+Dg4P/jIyM/5SUlP+enp7/p6en/7CwsP+2trb/srKy/6ioqP+fn5//lpaW/42N
jf+FhYX/fX19/3V1df9tbW3/ZWVl/15eXv9XV1f/T09P/0hISP9CQkL/Ozs7/zU1Nf8yMjL/ISEh/wYG
Bv8AAAD/AAAA/wAAAP+Hh4f//////////////////////////////////////////////////////3V1
df8AAAD/AAAA/wAAAP8AAADLAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAA8wAAAP8AAAD/AAAA/4ODg///////////////
////////////////////////////////////////uLi4/xQUFP8AAAD/AAAA/wAAAP8WFhb/NjY2/0FB
Qf9ERET/SkpK/1FRUf9YWFj/X19f/2ZmZv9ubm7/dXV1/319ff+FhYX/jY2N/5aWlv+enp7/p6en/7Cw
sP+2trb/srKy/6mpqf+goKD/l5eX/4+Pj/+Hh4f/fn5+/3d3d/9vb2//aGho/2FhYf9aWlr/U1NT/0xM
TP9FRUX/QkJC/zo6Ov8cHBz/AgIC/wAAAP8AAAD/BgYG/5ubm///////////////////////////////
////////////////////////r6+v/wAAAP8AAAD/AAAA/wAAAPkAAAAzAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwAA
AP8AAAD/AAAA/wICAv+ysrL//////////////////////////////////////////////////////9TU
1P8xMTH/AAAA/wAAAP8AAAD/CgoK/y4uLv9KSkr/UVFR/1RUVP9bW1v/YmJi/2lpaf9wcHD/d3d3/39/
f/+Hh4f/j4+P/5eXl/+fn5//qKio/7Gxsf+2trb/srKy/6mpqf+hoaH/mJiY/5CQkP+IiIj/gICA/3l5
ef9ycnL/ampq/2NjY/9cXFz/VlZW/1JSUv9NTU3/NTU1/w8PD/8AAAD/AAAA/wAAAP8eHh7/vb29////
///////////////////////////////////////////////////V1dX/ERER/wAAAP8AAAD/AAAA/wAA
AHcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKUAAAD/AAAA/wAAAP8QEBD/zs7O////////////////////
///////////////////////////////////y8vL/ZmZm/wAAAP8AAAD/AAAA/wAAAP8WFhb/Pz8//1tb
W/9jY2P/ZmZm/2tra/9ycnL/eXl5/4GBgf+IiIj/kJCQ/5iYmP+goKD/qKio/7Gxsf+2trb/srKy/6qq
qv+hoaH/mZmZ/5GRkf+Kior/goKC/3t7e/90dHT/bW1t/2ZmZv9kZGT/XV1d/0VFRf8dHR3/AQEB/wAA
AP8AAAD/AAAA/1BQUP/k5OT//////////////////////////////////////////////////////+np
6f8oKCj/AAAA/wAAAP8AAAD/AAAAtAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAADRAAAA/wAA
AP8AAAD/Hh4e/9zc3P///////////////////////////////////////////////////////////66u
rv8lJSX/AAAA/wAAAP8AAAD/AAAA/xoaGv9DQ0P/ZGRk/3R0dP96enr/fX19/4KCgv+JiYn/kZGR/5mZ
mf+hoaH/qamp/7Gxsf+2trb/srKy/6qqqv+ioqL/mpqa/5KSkv+Li4v/hISE/35+fv96enr/dnZ2/2ho
aP9JSUn/ICAg/wICAv8AAAD/AAAA/wAAAP8YGBj/mpqa////////////////////////////////////
////////////////////////8vLy/zo6Ov8AAAD/AAAA/wAAAP8AAADbAAAAFQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAlAAAA6QAAAP8AAAD/AAAA/ycnJ//g4OD/////////////////////////
///////////////////////////////////w8PD/fX19/xAQEP8AAAD/AAAA/wAAAP8AAAD/Dw8P/zIy
Mv9YWFj/dnZ2/4mJif+UlJT/mpqa/5+fn/+mpqb/rKys/7S0tP+5ubn/tbW1/62trf+np6f/oKCg/5ub
m/+VlZX/i4uL/3p6ev9eXl7/ODg4/xMTE/8AAAD/AAAA/wAAAP8AAAD/CAgI/2tra//k5OT/////////
///////////////////////////////////////////////////z8/P/Q0ND/wAAAP8AAAD/AAAA/wAA
APAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAAAPUAAAD/AAAA/wAA
AP8nJyf/2tra/////////////////////////////////////////////////////////////////9/f
3/9ycnL/FBQU/wAAAP8AAAD/AAAA/wAAAP8AAAD/DQ0N/ycnJ/9FRUX/YmJi/3t7e/+Ojo7/nZ2d/6qq
qv+vr6//q6ur/6Ghof+SkpL/f39//2dnZ/9LS0v/LCws/xEREf8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
DP9jY2P/09PT/////////////////////////////////////////////////////////////////+7u
7v9BQUH/AAAA/wAAAP8AAAD/AAAA+gAAAEkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAE0AAAD5AAAA/wAAAP8AAAD/Hh4e/8rKyv//////////////////////////////
////////////////////////////////////////5ubm/4+Pj/80NDT/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8GBgb/Dg4O/xQUFP8UFBT/FBQU/w8PD/8HBwf/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8qKir/gYGB/93d3f//////////////////////////////////////////////
////////////////////////39/f/zMzM/8AAAD/AAAA/wAAAP8AAAD9AAAAWAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAAAA+QAAAP8AAAD/AAAA/w8P
D/+rq6v/////////////////////////////////////////////////////////////////////////
////////y8vL/4GBgf89PT3/Dw8P/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv80NDT/dnZ2/8HBwf/6+vr/////////////////////////
///////////////////////////////////////////////////CwsL/Hh4e/wAAAP8AAAD/AAAA/wAA
APwAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAATAAAAPMAAAD/AAAA/wAAAP8AAAD/fX19//39/f//////////////////////////////
////////////////////////////////////////////////////////5ubm/7u7u/+NjY3/ZGRk/0VF
Rf8vLy//ISEh/xkZGf8WFhb/GBgY/x8fH/8sLCz/QEBA/15eXv+FhYX/s7Oz/+Dg4P//////////////
/////////////////////////////////////////////////////////////////////////////5SU
lP8ICAj/AAAA/wAAAP8AAAD/AAAA9wAAAFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsAAADkAAAA/wAAAP8AAAD/AAAA/0RE
RP/Y2Nj/////////////////////////////////////////////////////////////////////////
////////////////////////////////////////+Pj4//Hx8f/v7+//8PDw//b29v/+/v7/////////
////////////////////////////////////////////////////////////////////////////////
///////////////////l5eX/V1dX/wAAAP8AAAD/AAAA/wAAAP8AAADpAAAAQgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAkAAAAyAAAAP8AAAD/AAAA/wAAAP8RERH/kpKS//39/f//////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////6Ojo/8cHBz/AAAA/wAAAP8AAAD/AAAA/wAA
AM0AAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAJsAAAD/AAAA/wAAAP8AAAD/AAAA/zs7
O/++vr7/////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////Ly8v/SUlJ/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAAnwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABeAAAA6gAAAP8AAAD/AAAA/wAAAP8AAAD/VVVV/8rKyv//////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////1NTU/2JiYv8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAOwAAABhAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wMD
A/9RUVH/u7u7//7+/v//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////8XFxf9dXV3/CAgI/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArgAA
ACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABUAAAA1QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zMzM/+NjY3/3Nzc////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////+Pj4/+YmJj/PT09/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAANYAAABVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAHMAAADiAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/CQkJ/0JCQv+Li4v/zMzM//b29v//////////////////////////////////////////////
////////////////////////////////////////////////////////+vr6/9PT0/+VlZX/S0tL/w8P
D/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADiAAAAcwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAASAAAAdAAAANoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yAgIP9PT0//gYGB/6ys
rP/Ozs7/5ubm//b29v//////////////////////////////////////+Pj4/+rq6v/T09P/s7Oz/4iI
iP9XV1f/Jycn/wMDA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA2gAAAHQAAAATAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAv7+/AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAABZAAAAugAAAPoAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Dg4O/x8fH/8uLi7/Ojo6/0JCQv9GRkb/RERE/z09
Pf8xMTH/IiIi/xEREf8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+gAA
ALoAAABaAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACysrIAv7+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACoAAAB5AAAAxgAAAPgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA+QAAAMcAAAB6AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysrIAvr6+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAABhAAAAoAAA
ANMAAAD1AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD2AAAA1AAAAKIAAABjAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAyMjIACIi
IgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIi
IgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIi
IgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgIiIiIeIiIiQSIiImciIiKJIiIipiIiIrwiIiLLIiIi1SIi
ItsiIiLdIiIi3CIiItYiIiLMIiIivSIiIqgiIiKLIiIiaSIiIkMiIiIfIiIiAyIiIgAiIiIAIiIiACIi
IgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIi
IgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIiIgAiIiIAIiIiACIi
IgAiIiIAIiIiACIiIgC9vb0A/Pz8APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT0
9AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT0
9AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT0
9AD09PQA9PT0APT09AD09PQA9PT0BfT09Ar09PQL9PT0CvT09Ab09PQA9PT0APT09AD09PQA9PT0APT0
9AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT0
9AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT0
9AD09PQA9PT0APT09AD09PQA9PT0APT09AD09PQA9PT0APT09AD8/PwA/////////////+P///////4A
AP///8H//////8AAAAf//4D//////gAAAAD//wB/////+AAAAAA//gA/////4AAAAAAP/AAf////gAAA
AAAD+AAP///+AAAAAAAA8AAH///4AAAAAAAAIAAD///wAAAAAAAAAAAA///gAAAAAAAAAAAA//+AAAAA
AAAAAAAB//8AAAAAAAAAAAAD//4AAAAAAAAAAAAH//wAAAAAAAAAAAAP//gAAAAAAAAAAAAf//AAAAAA
AAAAAAA//+AAAAAAAAAAAAB//+AAAAAAAAAAAAD//8AAAAAAAAAAAAH//4AAAAAAAAAAAAP//wAAAAAA
AAAAAAH//wAAAAAAAAAAAAH//gAAAAAAAAAAAAD//AAAAAAAAAAAAAB//AAAAAAAAAAAAAB/+AAAAAAA
AAAAAAA/+AAAAAAAAAAAAAA/8AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAP4AAAAAAA
AAAAAAAP4AAAAAAAAAAAAAAPwAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAHwAAAAAAA
AAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAADgAAAAAAA
AAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABgAAAAAAAAAAAAAABgAAAAAAAAAAAAAADgAAAAAAA
AAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAADgAAAAAAAAAAAAAADwAAAAAAAAAAAAAAHwAAAAAAA
AAAAAAAHwAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAP4AAAAAAAAAAAAAAP4AAAAAAAAAAAAAAP8AAAAAAA
AAAAAAAf8AAAAAAAAAAAAAAf+AAAAAAAAAAAAAA/+AAAAAAAAAAAAAA//AAAAAAAAAAAAAB//AAAAAAA
AAAAAAB//gAAAAAAAAAAAAD//gAAAAAAAAAAAAD//wAAAAAAAAAAAAH//4AAAAAAAAAAAAP//8AAAAAA
AAAAAAP//8AAAAAAAAAAAAf//+AAAAAAAAAAAA////AAAAAAAAAAAB////gAAAAAAAAAAD////wAAAAA
AAAAAH////4AAAAAAAAAAP////8AAAAAAAAAAf////+AAAAAAAAAA//////AAAAAAAAAB//////wAAAA
AAAAH//////4AAAAAAAAP//////+AAAAAAAA////////AAAAAAAB////////wAAAAAAH////////8AAA
AAAf/////////gAAAAD//////////8AAAAf///////////gAAD/////////////4P///////
</value>
</data>
</root> </root>

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.9.9.23")] [assembly: AssemblyVersion("0.9.9.5")]
[assembly: AssemblyFileVersion("0.9.9.23")] [assembly: AssemblyFileVersion("0.9.9.5")]

@ -382,101 +382,5 @@ namespace QobuzDownloaderX.Properties {
this["audioType"] = value; this["audioType"] = value;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string savedUserID {
get {
return ((string)(this["savedUserID"]));
}
set {
this["savedUserID"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string savedUserAuthToken {
get {
return ((string)(this["savedUserAuthToken"]));
}
set {
this["savedUserAuthToken"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public string savedAltLoginValue {
get {
return ((string)(this["savedAltLoginValue"]));
}
set {
this["savedAltLoginValue"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public int savedArtSize {
get {
return ((int)(this["savedArtSize"]));
}
set {
this["savedArtSize"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool typeTag {
get {
return ((bool)(this["typeTag"]));
}
set {
this["typeTag"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("36")]
public int savedMaxLength {
get {
return ((int)(this["savedMaxLength"]));
}
set {
this["savedMaxLength"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public int savedFilenameTemplate {
get {
return ((int)(this["savedFilenameTemplate"]));
}
set {
this["savedFilenameTemplate"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string savedFilenameTemplateString {
get {
return ((string)(this["savedFilenameTemplateString"]));
}
set {
this["savedFilenameTemplateString"] = value;
}
}
} }
} }

@ -92,29 +92,5 @@
<Setting Name="audioType" Type="System.String" Scope="User"> <Setting Name="audioType" Type="System.String" Scope="User">
<Value Profile="(Default)">.flac</Value> <Value Profile="(Default)">.flac</Value>
</Setting> </Setting>
<Setting Name="savedUserID" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="savedUserAuthToken" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="savedAltLoginValue" Type="System.String" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="savedArtSize" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1</Value>
</Setting>
<Setting Name="typeTag" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="savedMaxLength" Type="System.Int32" Scope="User">
<Value Profile="(Default)">36</Value>
</Setting>
<Setting Name="savedFilenameTemplate" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1</Value>
</Setting>
<Setting Name="savedFilenameTemplateString" Type="System.String" Scope="User">
<Value Profile="(Default)"> </Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>

@ -52,10 +52,6 @@
<ApplicationIcon>Resources\qbdlx_icon.ico</ApplicationIcon> <ApplicationIcon>Resources\qbdlx_icon.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="policy.2.0.taglib-sharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL"> <Reference Include="policy.2.0.taglib-sharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
<HintPath>..\packages\taglib.2.1.0.0\lib\policy.2.0.taglib-sharp.dll</HintPath> <HintPath>..\packages\taglib.2.1.0.0\lib\policy.2.0.taglib-sharp.dll</HintPath>
<Private>True</Private> <Private>True</Private>
@ -83,12 +79,6 @@
<Compile Include="Form1.Designer.cs"> <Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon> <DependentUpon>Form1.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="AboutForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AboutForm.Designer.cs">
<DependentUpon>AboutForm.cs</DependentUpon>
</Compile>
<Compile Include="LoginForm-v2.cs"> <Compile Include="LoginForm-v2.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -113,9 +103,6 @@
<EmbeddedResource Include="Form1.resx"> <EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon> <DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="AboutForm.resx">
<DependentUpon>AboutForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LoginForm-v2.resx"> <EmbeddedResource Include="LoginForm-v2.resx">
<DependentUpon>LoginForm-v2.cs</DependentUpon> <DependentUpon>LoginForm-v2.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net46" />
<package id="taglib" version="2.1.0.0" targetFramework="net46" /> <package id="taglib" version="2.1.0.0" targetFramework="net46" />
</packages> </packages>

@ -60,7 +60,7 @@ namespace QobuzDownloaderX
string searchRequest = searchsr.ReadToEnd(); string searchRequest = searchsr.ReadToEnd();
// Remove backslashes from the stream URL to have a proper URL. // Remove backslashes from the stream URL to have a proper URL.
string resultpattern = "\"maximum_bit_depth\":(?<bitDepth>.*?),(?:.*?),\"artist\":(?:.*?)\"name\":\"(?<albumArtist>.*?)\",(?:.*?)\"title\":\"(?<albumTitle>.*?)\"(?:.*?),\"maximum_channel_count\":(?:.*?),\"id\":\"(?<albumID>.*?)\",\"maximum_sampling_rate\":(?<sampleRate>.*?),\""; string resultpattern = "\"maximum_sampling_rate\":(?<sampleRate>.*?),(?:.*?)\",\"id\":\"(?<albumID>.*?)\",\"maximum_bit_depth\":(?<bitDepth>.*?),(?:.*?)\"title\":\"(?<albumTitle>.*?)\",\"(?:.*?)\"artist\":(?:.*?)\"name\":\"(?<albumArtist>.*?)\"";
string resultinput = searchRequest; string resultinput = searchRequest;
RegexOptions resultoptions = RegexOptions.Multiline; RegexOptions resultoptions = RegexOptions.Multiline;

@ -3,21 +3,15 @@
<img src="https://github.com/ImAiiR/QobuzDownloaderX/raw/master/QobuzDownloaderX/Resources/qbdlx.png?raw=true" /> <img src="https://github.com/ImAiiR/QobuzDownloaderX/raw/master/QobuzDownloaderX/Resources/qbdlx.png?raw=true" />
</a> </a>
</p> </p>
<center><a href="https://www.buymeacoffee.com/ImAiiR" target="_blank"><img src="https://i.imgur.com/H2hMOg6.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;" ></a></center>
Inspired by Qo-DL by <a href="https://github.com/Sorrow446">Sorrow</a> & <a href="https://github.com/DashLt">Dash</a> Inspired by Qo-DL by <a href="https://github.com/Sorrow446">Sorrow</a> & <a href="https://github.com/DashLt">Dash</a>
<p style="align:center;"> <p style="align:center;">
<a href="https://github.com/ImAiiR/QobuzDownloaderX/blob/master/-assets/QBDLX2.png?raw=true"> <a href="https://github.com/ImAiiR/QobuzDownloaderX">
<img src="https://github.com/ImAiiR/QobuzDownloaderX/blob/master/-assets/QBDLX2.png?raw=true" /> <img src="https://github.com/ImAiiR/QobuzDownloaderX/blob/master/-assets/QBDLX1.png?raw=true" />
</a> </a>
</p> </p>
Telegram Group Chat - <a href="https://t.me/QbdLX">@QbdLX</a><br />
Telegram Updates Channel - <a href="https://t.me/QobuzDownloaderX">@QobuzDownloaderX</a><br />
I'm rarely active on Telegram, but these are official.
# About # About
QobuzDownloaderX is a program for downloading music streams from the streaming platform <a href="https://qobuz.com/">Qobuz</a>. QobuzDownloaderX is a program for downloading music streams from the streaming platform <a href="https://qobuz.com/">Qobuz</a>.