From 003d01fe4ed0331552d298a2f4a57e4b75dd3b9c Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Thu, 10 Jul 2025 17:18:54 -0700 Subject: [PATCH] Implement Store Frontend Implement Profile Cosmetics --- QtCNETAPI/Dtos/User/UserInformationDto.cs | 1 + .../Dtos/User/UserUpdateInformationDto.cs | 1 + QtCNETAPI/Services/ApiService/ApiService.cs | 7 +- QtCNETAPI/Services/ApiService/IApiService.cs | 2 +- qtc-net-client-2/Forms/Main.Designer.cs | 66 +- qtc-net-client-2/Forms/Main.cs | 72 +- qtc-net-client-2/Forms/Main.resx | 636 +++++++++--------- qtc-net-client-2/Forms/Profile.Designer.cs | 33 +- qtc-net-client-2/Forms/Profile.cs | 46 +- .../Forms/ProfileEdit.Designer.cs | 32 +- qtc-net-client-2/Forms/ProfileEdit.cs | 66 +- .../Forms/StoreItemDisplay.Designer.cs | 135 ++++ qtc-net-client-2/Forms/StoreItemDisplay.cs | 88 +++ qtc-net-client-2/Forms/StoreItemDisplay.resx | 123 ++++ 14 files changed, 920 insertions(+), 388 deletions(-) create mode 100644 qtc-net-client-2/Forms/StoreItemDisplay.Designer.cs create mode 100644 qtc-net-client-2/Forms/StoreItemDisplay.cs create mode 100644 qtc-net-client-2/Forms/StoreItemDisplay.resx diff --git a/QtCNETAPI/Dtos/User/UserInformationDto.cs b/QtCNETAPI/Dtos/User/UserInformationDto.cs index 2108dbb..a9bd58b 100644 --- a/QtCNETAPI/Dtos/User/UserInformationDto.cs +++ b/QtCNETAPI/Dtos/User/UserInformationDto.cs @@ -11,5 +11,6 @@ public DateTime CreatedAt { get; set; } = new DateTime(); public int Status { get; set; } = 0; public int CurrencyAmount { get; set; } = 0; + public int ProfileCosmeticId { get; set; } = 0; } } diff --git a/QtCNETAPI/Dtos/User/UserUpdateInformationDto.cs b/QtCNETAPI/Dtos/User/UserUpdateInformationDto.cs index b7ee27a..ac0ab53 100644 --- a/QtCNETAPI/Dtos/User/UserUpdateInformationDto.cs +++ b/QtCNETAPI/Dtos/User/UserUpdateInformationDto.cs @@ -6,5 +6,6 @@ public string Username { get; set; } = string.Empty; public string Bio { get; set; } = string.Empty; public DateTime DateOfBirth { get; set; } = new DateTime(); + public int ProfileCosmeticId { get; set; } = 0; } } diff --git a/QtCNETAPI/Services/ApiService/ApiService.cs b/QtCNETAPI/Services/ApiService/ApiService.cs index 016423e..b2cca4d 100644 --- a/QtCNETAPI/Services/ApiService/ApiService.cs +++ b/QtCNETAPI/Services/ApiService/ApiService.cs @@ -5,7 +5,6 @@ using QtCNETAPI.Models; using QtCNETAPI.Schema; using RestSharp; using System.IdentityModel.Tokens.Jwt; -using System.Resources; using System.Text.Json; namespace QtCNETAPI.Services.ApiService @@ -769,18 +768,18 @@ namespace QtCNETAPI.Services.ApiService return serviceResponse; } - public async Task> BuyStoreItem(int id) + public async Task> BuyStoreItem(int id) { await RefreshSessionIfInvalid(); - var serviceResponse = new ServiceResponse(); + var serviceResponse = new ServiceResponse(); if (SessionToken == null) throw new NullReferenceException("Function Was Called Before A Session Was Made."); var restRequest = new RestRequest("store/buy-item") .AddHeader("Authorization", $"Bearer {SessionToken}") .AddQueryParameter("id", id); - var response = await _client.GetAsync>(restRequest); + var response = await _client.PostAsync>(restRequest); if (response == null) { serviceResponse.Success = false; serviceResponse.Message = "API did not respond."; return serviceResponse; } diff --git a/QtCNETAPI/Services/ApiService/IApiService.cs b/QtCNETAPI/Services/ApiService/IApiService.cs index 59378d9..c708eda 100644 --- a/QtCNETAPI/Services/ApiService/IApiService.cs +++ b/QtCNETAPI/Services/ApiService/IApiService.cs @@ -44,7 +44,7 @@ namespace QtCNETAPI.Services.ApiService public Task> GuessRandomNumber(int original, int guess); public Task>> GetStoreItems(); public Task> GetStoreItem(int id); - public Task> BuyStoreItem(int id); + public Task> BuyStoreItem(int id); public Task>> GetOwnedStoreItems(); public Task> GetOwnedStoreItem(int id); } diff --git a/qtc-net-client-2/Forms/Main.Designer.cs b/qtc-net-client-2/Forms/Main.Designer.cs index b807e2f..0cfe0de 100644 --- a/qtc-net-client-2/Forms/Main.Designer.cs +++ b/qtc-net-client-2/Forms/Main.Designer.cs @@ -48,6 +48,9 @@ tbpGames = new TabPage(); lvGames = new ListView(); ilGames = new ImageList(components); + tbpStore = new TabPage(); + lvStoreItems = new ListView(); + ilStoreThumbnails = new ImageList(components); ilTabIcons = new ImageList(components); ctxmChangeStatus = new ContextMenuStrip(components); onlineToolStripMenuItem = new ToolStripMenuItem(); @@ -73,6 +76,7 @@ tbpRooms.SuspendLayout(); tbpUsers.SuspendLayout(); tbpGames.SuspendLayout(); + tbpStore.SuspendLayout(); ctxmChangeStatus.SuspendLayout(); pCurrencyArea.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).BeginInit(); @@ -88,13 +92,15 @@ tbcMain.Controls.Add(tbpRooms); tbcMain.Controls.Add(tbpUsers); tbcMain.Controls.Add(tbpGames); + tbcMain.Controls.Add(tbpStore); tbcMain.Enabled = false; tbcMain.ImageList = ilTabIcons; tbcMain.Location = new Point(12, 83); tbcMain.Name = "tbcMain"; tbcMain.SelectedIndex = 0; - tbcMain.Size = new Size(305, 499); + tbcMain.Size = new Size(352, 499); tbcMain.TabIndex = 0; + tbcMain.SelectedIndexChanged += tbcMain_SelectedIndexChanged; // // tbpContacts // @@ -103,7 +109,7 @@ tbpContacts.Location = new Point(4, 24); tbpContacts.Name = "tbpContacts"; tbpContacts.Padding = new Padding(3); - tbpContacts.Size = new Size(297, 471); + tbpContacts.Size = new Size(344, 471); tbpContacts.TabIndex = 0; tbpContacts.Text = "Contacts"; tbpContacts.UseVisualStyleBackColor = true; @@ -117,7 +123,7 @@ lvContacts.Location = new Point(0, 0); lvContacts.MultiSelect = false; lvContacts.Name = "lvContacts"; - lvContacts.Size = new Size(297, 478); + lvContacts.Size = new Size(344, 478); lvContacts.SmallImageList = ilProfilePics; lvContacts.TabIndex = 1; lvContacts.UseCompatibleStateImageBehavior = false; @@ -152,7 +158,7 @@ tbpRooms.Location = new Point(4, 24); tbpRooms.Name = "tbpRooms"; tbpRooms.Padding = new Padding(3); - tbpRooms.Size = new Size(297, 471); + tbpRooms.Size = new Size(344, 471); tbpRooms.TabIndex = 1; tbpRooms.Text = "Rooms"; tbpRooms.UseVisualStyleBackColor = true; @@ -176,7 +182,7 @@ lbRooms.ItemHeight = 15; lbRooms.Location = new Point(0, 0); lbRooms.Name = "lbRooms"; - lbRooms.Size = new Size(297, 514); + lbRooms.Size = new Size(344, 484); lbRooms.TabIndex = 0; lbRooms.DoubleClick += lbRooms_DoubleClick; // @@ -186,7 +192,7 @@ tbpUsers.ImageIndex = 1; tbpUsers.Location = new Point(4, 24); tbpUsers.Name = "tbpUsers"; - tbpUsers.Size = new Size(297, 471); + tbpUsers.Size = new Size(344, 471); tbpUsers.TabIndex = 3; tbpUsers.Text = "Users"; tbpUsers.UseVisualStyleBackColor = true; @@ -200,7 +206,7 @@ lvUserDirectory.MultiSelect = false; lvUserDirectory.Name = "lvUserDirectory"; lvUserDirectory.RightToLeft = RightToLeft.Yes; - lvUserDirectory.Size = new Size(297, 514); + lvUserDirectory.Size = new Size(344, 484); lvUserDirectory.SmallImageList = ilStatusIcons; lvUserDirectory.TabIndex = 0; lvUserDirectory.UseCompatibleStateImageBehavior = false; @@ -223,7 +229,7 @@ tbpGames.ImageIndex = 3; tbpGames.Location = new Point(4, 24); tbpGames.Name = "tbpGames"; - tbpGames.Size = new Size(297, 471); + tbpGames.Size = new Size(344, 471); tbpGames.TabIndex = 4; tbpGames.Text = "Games"; tbpGames.UseVisualStyleBackColor = true; @@ -239,7 +245,7 @@ lvGames.Location = new Point(0, 0); lvGames.MultiSelect = false; lvGames.Name = "lvGames"; - lvGames.Size = new Size(297, 533); + lvGames.Size = new Size(344, 484); lvGames.SmallImageList = ilGames; lvGames.TabIndex = 2; lvGames.UseCompatibleStateImageBehavior = false; @@ -254,6 +260,35 @@ ilGames.Images.SetKeyName(1, "NumberGuessGameIcon.png"); ilGames.Images.SetKeyName(2, "Tic-tac-toe.png"); // + // tbpStore + // + tbpStore.Controls.Add(lvStoreItems); + tbpStore.ImageIndex = 3; + tbpStore.Location = new Point(4, 24); + tbpStore.Name = "tbpStore"; + tbpStore.Padding = new Padding(3); + tbpStore.Size = new Size(344, 471); + tbpStore.TabIndex = 5; + tbpStore.Text = "Store"; + tbpStore.UseVisualStyleBackColor = true; + // + // lvStoreItems + // + lvStoreItems.LargeImageList = ilStoreThumbnails; + lvStoreItems.Location = new Point(0, 0); + lvStoreItems.Name = "lvStoreItems"; + lvStoreItems.Size = new Size(344, 484); + lvStoreItems.SmallImageList = ilStoreThumbnails; + lvStoreItems.TabIndex = 0; + lvStoreItems.UseCompatibleStateImageBehavior = false; + lvStoreItems.DoubleClick += lvStoreItems_DoubleClick; + // + // ilStoreThumbnails + // + ilStoreThumbnails.ColorDepth = ColorDepth.Depth32Bit; + ilStoreThumbnails.ImageSize = new Size(64, 64); + ilStoreThumbnails.TransparentColor = Color.Transparent; + // // ilTabIcons // ilTabIcons.ColorDepth = ColorDepth.Depth32Bit; @@ -301,7 +336,7 @@ // // lblRequestNotif // - lblRequestNotif.Anchor = AnchorStyles.Top | AnchorStyles.Right; + lblRequestNotif.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; lblRequestNotif.AutoSize = true; lblRequestNotif.Font = new Font("Segoe UI", 6F, FontStyle.Bold); lblRequestNotif.Location = new Point(12, 67); @@ -337,7 +372,7 @@ pCurrencyArea.Controls.Add(llblClaimSpin); pCurrencyArea.Controls.Add(pbCurrencyIcon); pCurrencyArea.Controls.Add(lblCurrencyAmount); - pCurrencyArea.Location = new Point(223, 5); + pCurrencyArea.Location = new Point(270, 5); pCurrencyArea.Name = "pCurrencyArea"; pCurrencyArea.Size = new Size(95, 46); pCurrencyArea.TabIndex = 12; @@ -447,9 +482,10 @@ // // pbDonate // + pbDonate.Anchor = AnchorStyles.Top | AnchorStyles.Right; pbDonate.Cursor = Cursors.Hand; pbDonate.Image = Properties.Resources.donatebtn; - pbDonate.Location = new Point(241, 56); + pbDonate.Location = new Point(288, 56); pbDonate.Name = "pbDonate"; pbDonate.Size = new Size(77, 22); pbDonate.SizeMode = PictureBoxSizeMode.Zoom; @@ -462,7 +498,7 @@ AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; BackColor = Color.DodgerBlue; - ClientSize = new Size(329, 594); + ClientSize = new Size(376, 594); Controls.Add(pbDonate); Controls.Add(pCurrentUser); Controls.Add(pCurrencyArea); @@ -483,6 +519,7 @@ tbpRooms.ResumeLayout(false); tbpUsers.ResumeLayout(false); tbpGames.ResumeLayout(false); + tbpStore.ResumeLayout(false); ctxmChangeStatus.ResumeLayout(false); pCurrencyArea.ResumeLayout(false); pCurrencyArea.PerformLayout(); @@ -531,5 +568,8 @@ private TabPage tbpUsers; private ListView lvUserDirectory; private PictureBox pbDonate; + private TabPage tbpStore; + private ListView lvStoreItems; + private ImageList ilStoreThumbnails; } } diff --git a/qtc-net-client-2/Forms/Main.cs b/qtc-net-client-2/Forms/Main.cs index da85c8d..470ef09 100644 --- a/qtc-net-client-2/Forms/Main.cs +++ b/qtc-net-client-2/Forms/Main.cs @@ -6,6 +6,8 @@ using QtCNETAPI.Models; using qtc_net_client_2.Forms; using qtc_net_client_2.Services; using qtc_net_client_2.ClientModel; +using System.Threading.Tasks; +using QtCNETAPI.Schema; namespace qtc_net_client_2 { @@ -275,7 +277,7 @@ namespace qtc_net_client_2 var result = await _apiService.AddCurrencyToCurrentUser(tokenJackpotSpinner.TokensWon, true); if (result.Success) { - lblCurrencyAmount.Text = (_apiService.CurrentUser.CurrencyAmount + tokenJackpotSpinner.TokensWon).ToString("N0"); + lblCurrencyAmount.Text = _apiService.CurrentUser.CurrencyAmount.ToString("N0"); llblClaimSpin.Visible = false; } else MessageBox.Show("We Were Unable To Claim Your Prize At This Time. Please Try Again Later.", "Uh Oh.", MessageBoxButtons.OK, MessageBoxIcon.Error); @@ -333,10 +335,9 @@ namespace qtc_net_client_2 private async void refreshToolStripMenuItem_Click(object sender, EventArgs e) { - // refresh all controls (TODO - probably restrict this to currently visible control) - await RefreshContactsList(); - await RefreshRoomsList(); - await RefreshUsers(); + if (tbcMain.SelectedIndex == 0) await RefreshContactsList(); + if (tbcMain.SelectedIndex == 1) await RefreshRoomsList(); + if (tbcMain.SelectedIndex == 2) await RefreshUsers(); } private void pbDonate_Click(object sender, EventArgs e) @@ -345,6 +346,44 @@ namespace qtc_net_client_2 donationWindow.Show(); } + private async void tbcMain_SelectedIndexChanged(object sender, EventArgs e) + { + if (tbcMain.SelectedIndex == 4) + { + // get store items + var storeItems = await _apiService.GetStoreItems(); + if (storeItems != null && storeItems.Success && storeItems.Data != null) + { + ilStoreThumbnails.Images.Clear(); + foreach (var item in storeItems.Data) + { + await GetAndAddStoreThumbnail(item); + var lvitem = lvStoreItems.Items.Add(new ListViewItem { Text = item.Name, Name = item.Id.ToString() }); + lvitem.ImageKey = item.Id.ToString(); + } + } + } + else lvStoreItems.Clear(); + } + + private async void lvStoreItems_DoubleClick(object sender, EventArgs e) + { + if (lvStoreItems.SelectedItems.Count > 0) + { + string? itemSelected = (string?)lvStoreItems.SelectedItems[lvStoreItems.SelectedItems.Count - 1].Name; + if(itemSelected != null) + { + // get item + var item = await _apiService.GetStoreItem(int.Parse(itemSelected)); + if(item != null && item.Success && item.Data != null) + { + StoreItemDisplay storeItemDisplay = new StoreItemDisplay(item.Data, LoggingService, _apiService); + storeItemDisplay.ShowDialog(); + } + } + } + } + private async Task OnSuccessfulLogin() { // double check @@ -696,6 +735,29 @@ namespace qtc_net_client_2 else if (result != null) LoggingService.LogString($"User Has No Profile Picture Or It Could Not Be Loaded.\n{result.Message}"); } + private async Task GetAndAddStoreThumbnail(StoreItem item) + { + try + { + using HttpClient client = new(); + var response = await client.GetAsync(item.ThumbnailUrl); + if (response != null && response.IsSuccessStatusCode) + { + using var stream = await response.Content.ReadAsStreamAsync(); + Image image = Image.FromStream(stream); + stream.Dispose(); + ilStoreThumbnails.Images.Add(item.Id.ToString(), image); + } + else if (response != null) LoggingService.LogString($"Store Item Thumbnail Could Not Be Loaded Due To Status Code {response.StatusCode}"); + else LoggingService.LogString("Store Item Thumbnail Could Not Be Loaded"); + client.Dispose(); + } + catch (Exception ex) + { + LoggingService.LogString("Store Item Thumbnail Could Not Be Loaded\n" + ex.Message); + } + } + public void RefreshCurrencyCounter() { if (lblCurrencyAmount.InvokeRequired) diff --git a/qtc-net-client-2/Forms/Main.resx b/qtc-net-client-2/Forms/Main.resx index 8a3a205..1185280 100644 --- a/qtc-net-client-2/Forms/Main.resx +++ b/qtc-net-client-2/Forms/Main.resx @@ -127,66 +127,66 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAzg0AAAJNU0Z0AUkBTAMBAgAB - AQEAAQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGAAwABIAMAAQEBAAEgBgABQBIAA60B - /wO6Af8DugH/A7kB/wO6Af8DugH/A9oF/wP8Af8D/g3/A/0B/wP8Ef8D/AH/A/4N/wP9Af8D2QH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH//wCBAAOfAf8DugH/A7oB/wO6Af8DugH/A7oB/wPaCf8D/QH/A/4N - /wP9Af8D/RH/A/wB/wP+Df8D2gH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH//wCBAAOiAf8DugH/A7oB - /wO6Af8DugH/A7oB/wPaDf8D/AH/A/4l/wP8Df8D2gH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH//wCB - AAOlAf8DugH/A7oB/wO6Af8DugH/A7oB/wPZEf8D/hX/A/0d/wPaAf8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af//AIEAA6QB/wO5Af8DugH/A7oB/wO6Af8DugH/A9kB/wP8Ff8D/g3/A/0B/wP9Ef8D/gH/A/4B - /wPaAf8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af//AIEAA6EB/wO6Af8DugH/A7oB/wO6Af8DugH/A9oB - /wP+Af8D/RH/A/wB/wP+Df8D/QH/A/0R/wP8Af8D2QH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH//wCB - AAOfAf8DugH/A7oB/wO6Af8DugH/A7oB/wPaBf8D/QH/A/0R/wP9Af8D/g3/A/0B/wP9Ef8D2QH/A7oB - /wO6Af8DugH/A7oB/wO5Af8DugH//wCBAAOxAf8DugH/A7oB/wO6Af8DugH/A7oB/wPTCf8D/hX/A/wB - /wP+If8D0wH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH//wCBAAO6Af8DugH/A7oB/wO6Af8DugH/A7kB - /wPAAf8D/Q3/A/4R/wP+Ff8D/QX/A/0B/wPAAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wPaDf8D/gH/A/0V/wP+Df8D/QH/A/wB/wPaAf8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH//wCBAAO6Af8DuQH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A90N - /wP9Af8D/RH/A/0B/wP+Df8D3AH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB - /wO6Af8DuQH/A7kB/wO6Af8DugH/A7oB/wO6Af8DuQH/A8kB/wPsAf8D/gX/A/4B/wP8Ef8D/QH/A/0B - /wPsAf8DygH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH//wCBAAO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A8EB/wPSAf8D3wH/A+YB/wPqAf8D6wH/A+cB - /wPfAf8D0gH/A8AB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH//wCB - AAO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A70B - /wPHAf8DxgH/A70B/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH//wCBAAO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wPCAf8D5wH/A/0F/wP+Af8D+gH/A+YB/wPCAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DyAH/A/kB/wP9Df8D/QH/A/0B/wP6Af8DyAH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DuQH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO+Af8D+AX/A/wB/wP+Df8D/QH/A/wB/wP4Af8DvgH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB - /wO6Af8DuQH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A9sN - /wP9Af8D/Q3/A/0B/wP+Af8D2wH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - //8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A/AR/wP8Af8D/hH/A/AB - /wO6Af8DugH/A7oB/wO6Af8DuQH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wP4Af8D/SX/A/gB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wP0Af8D/QH/A/wR/wP+Af8D/gn/A/UB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wPlBf8D/gH/A/wR - /wP8Af8D/QX/A+UB/wO6Af8DuQH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wPIAf8D/gX/A/4B/wP8Ef8D/QH/A/0B - /wPIAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH//wCBAAO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A90J/wP+Ff8D3AH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A9kB/wP8Cf8D/gX/A/wB/wPZAf8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wPAAf8D1gH/A+IB/wPhAf8D1QH/A8AB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DuQH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DuQH/A7kB - /wO6Af//AIEAA7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8DuQH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DuQH/A7oB - /wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB - /wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAAUIB - TQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA///AP8AAwAL + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA0A0AAAJNU0Z0AUkBTAMBAQAB + MAEBATABAQEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAD + rQH/A7oB/wO6Af8DuQH/A7oB/wO6Af8D2gX/A/wB/wP+Df8D/QH/A/wR/wP8Af8D/g3/A/0B/wPZAf8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA58B/wO6Af8DugH/A7oB/wO6Af8DugH/A9oJ/wP9Af8D + /g3/A/0B/wP9Ef8D/AH/A/4N/wPaAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA6IB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A9oN/wP8Af8D/iX/A/wN/wPaAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af// + AIEAA6UB/wO6Af8DugH/A7oB/wO6Af8DugH/A9kR/wP+Ff8D/R3/A9oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB//8AgQADpAH/A7kB/wO6Af8DugH/A7oB/wO6Af8D2QH/A/wV/wP+Df8D/QH/A/0R/wP+Af8D + /gH/A9oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB//8AgQADoQH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + 2gH/A/4B/wP9Ef8D/AH/A/4N/wP9Af8D/RH/A/wB/wPZAf8DugH/A7oB/wO6Af8DuQH/A7oB/wO6Af// + AIEAA58B/wO6Af8DugH/A7oB/wO6Af8DugH/A9oF/wP9Af8D/RH/A/0B/wP+Df8D/QH/A/0R/wPZAf8D + ugH/A7oB/wO6Af8DugH/A7kB/wO6Af//AIEAA7EB/wO6Af8DugH/A7oB/wO6Af8DugH/A9MJ/wP+Ff8D + /AH/A/4h/wPTAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8D + uQH/A8AB/wP9Df8D/hH/A/4V/wP9Bf8D/QH/A8AB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQAD + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A9oN/wP+Af8D/RX/A/4N/wP9Af8D/AH/A9oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + 3Q3/A/0B/wP9Ef8D/QH/A/4N/wPcAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQAD + ugH/A7oB/wO5Af8DuQH/A7oB/wO6Af8DugH/A7oB/wO5Af8DyQH/A+wB/wP+Bf8D/gH/A/wR/wP9Af8D + /QH/A+wB/wPKAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DwQH/A9IB/wPfAf8D5gH/A+oB/wPrAf8D + 5wH/A98B/wPSAf8DwAH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af// + AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + vQH/A8cB/wPGAf8DvQH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af//AIEAA7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A8IB/wPnAf8D/QX/A/4B/wP6Af8D5gH/A8IB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wPIAf8D+QH/A/0N/wP9Af8D/QH/A/oB/wPIAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO5Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A74B/wP4Bf8D/AH/A/4N/wP9Af8D/AH/A/gB/wO+Af8DugH/A7oB/wO6Af8DuQH/A7oB/wO6Af8D + ugH/A7oB/wO5Af8DugH//wCBAAO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wO6Af8D + 2w3/A/0B/wP9Df8D/QH/A/4B/wPbAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH//wCBAAO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8D8BH/A/wB/wP+Ef8D + 8AH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A/gB/wP9Jf8D+AH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A/QB/wP9Af8D/BH/A/4B/wP+Cf8D9QH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A+UF/wP+Af8D + /BH/A/wB/wP9Bf8D5QH/A7oB/wO5Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQAD + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DuQH/A8gB/wP+Bf8D/gH/A/wR/wP9Af8D + /QH/A8gB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wO6Af//AIEAA7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D3Qn/A/4V/wPcAf8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D2QH/A/wJ/wP+Bf8D/AH/A9kB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A8AB/wPWAf8D4gH/A+EB/wPVAf8DwAH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQAD + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8D + uQH/A7oB//8AgQADugH/A7oB/wO6Af8DuQH/A7oB/wO6Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO5Af8D + ugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DuQH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQADugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D + ugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQAB + QgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEGAAECFgAD//8A/wADAAs= @@ -196,93 +196,92 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA+hMAAAJNU0Z0AUkBTAIBAQQB - AAG4AQABuAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA4hMAAAJNU0Z0AUkBTAIBAQQB + AAHoAQAB6AEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B 0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD - YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1MB9QMkAfsDOwH+AzsB/gMkAfsDUwH0A2IB - 4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBSgFaAUoB9QEhAVcBIQH7ARcBVwEXAf4BFwFXARcB/gEhAVcB - IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAUoCWgH1ASECVwH7ARcCVwH+ARcCVwH+ASEC - VwH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAkoBWgH1AiEBVwH7AhcBVwH+AhcBVwH+AiEB - VwH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyAz8B/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB - /wNAAf0DXQHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEXAV8BFwH+AQABVwEAAf8BAAFnAQAB/wEAAWwB - AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/AS4BQAEuAf0BWQFeAVkB8ANWAbIBGQEaARkBIwgAAxsB - JQNYAb0DWgHyARcCXwH+AQACVwH/AQACZwH/AQACbAH/AQACYQH/AQACTAH/AQACQAH/AS4CQAH9AVkC - XgHwA1YBsgEZAhoBIwgAAxsBJQNYAb0DWgHyAhcBXwH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgAB - TAH/AgABQAH/Ai4BQAH9AlkBXgHwA1YBsgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB - /wN1Af8DcQH/A2QB/wNMAf8DMQH/AzsB/gNhAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFVAW8BVQHzAQAB - ggEAAf8BAAGZAQAB/wEAAbYBAAH/AQABzAEAAf8BAAHTAQAB/wEAAcsBAAH/AQABswEAAf8BAAGIAQAB - /wEAAVcBAAH/ARcBVwEXAf4BXgFiAV4B7gNQAZoDAwEEAwMBBAFSAlMBpQFVAm8B8wEAAoIB/wEAApkB - /wEAArYB/wEAAswB/wEAAtMB/wEAAssB/wEAArMB/wEAAogB/wEAAlcB/wEXAlcB/gFeAmIB7gNQAZoD - AwEEAwMBBAJSAVMBpQJVAW8B8wIAAYIB/wIAAZkB/wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB - /wIAAYgB/wIAAVcB/wIXAVcB/gJeAWIB7gNQAZoDAwEEAy0BRANgAegDegH+A24B/wN7Af8DhQH/A4oB - /wOMAf8DigH/A4UB/wN2Af8DVwH/AzIB/wNAAf0DXgHdAyoBPwMtAUQBYAFpAWAB6AEXAYYBFwH+AQAB - xgEAAf8BAAHcAQAB/wEAAe4BAAH/AQAB+AEAAf8BAAH7AQAB/wEAAfkBAAH/AQAB7wEAAf8BAAHUAQAB - /wEAAZwBAAH/AQABWgEAAf8BLgFAAS4B/QNeAd0DKgE/Ay0BRAFgAmkB6AEXAoYB/gEAAsYB/wEAAtwB - /wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB/wEAApwB/wEAAloB/wEuAkAB/QNeAd0D - KgE/Ay0BRAJgAWkB6AIXAYYB/gIAAcYB/wIAAdwB/wIAAe4B/wIAAfgB/wIAAfsB/wIAAfkB/wIAAe8B - /wIAAdQB/wIAAZwB/wIAAVoB/wIuAUAB/QNeAd0DKgE/A04BlQN3AfgDfwH/A4UB/wOKAf8DjQH/A44B - /wOOAf8DjgH/A40B/wOJAf8DdwH/A00B/wMlAf8DWgHyA0oBiwNOAZUBQQGEAUEB+AEAAeUBAAH/AQAB - 7wEAAf8BAAH4AQAB/wEAAf0BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/gEAAf8BAAH2AQAB - /wEAAdUBAAH/AQABiwEAAf8BAAFBAQAB/wNaAfIDSgGLA04BlQFBAoQB+AEAAuUB/wEAAu8B/wEAAvgB - /wEAAv0B/wEAA/8BAAP/AQAD/wEAAv4B/wEAAvYB/wEAAtUB/wEAAosB/wEAAkEB/wNaAfIDSgGLA04B - lQJBAYQB+AIAAeUB/wIAAe8B/wIAAfgB/wIAAf0B/wIAAv8CAAL/AgAC/wIAAf4B/wIAAfYB/wIAAdUB - /wIAAYsB/wIAAUEB/wNaAfIDSgGLA18B0wN+AfwDkwH/A44B/wONAf8DjgH/A44B/wOOAf8DjgH/A44B - /wONAf8DhQH/A2cB/wM0Af8DQQH5A1oBxAFbAV8BWwHTASsBsgErAfwBDgH7AQ4B/wEDAf0BAwH/AQAB - /gEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHvAQAB - /wEAAbkBAAH/AQABXQEAAf8DQQH5A1oBxAFbAl8B0wErArIB/AEOAvsB/wEDAv0B/wEAAv4B/wEAA/8B - AAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC7wH/AQACuQH/AQACXQH/A0EB+QNaAcQCWwFfAdMCKwGyAfwC - DgH7Af8CAwH9Af8CAAH+Af8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf0B/wIAAe8B/wIAAbkB/wIAAV0B - /wNBAfkDWgHEA24B9QOAAf4DnwH/A5MB/wOPAf8DjgH/A44B/wOOAf8DjgH/A44B/wOOAf8DiwH/A3cB - /wNIAf8DQAH9A2IB4QFRAXkBUQH1ATsB0QE7Af4BJwH/AScB/wELAf8BCwH/AQEB/wEBAf8BAAH/AQAB - /wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH5AQAB/wEAAdYBAAH/AQAB - gQEAAf8BLgFAAS4B/QNiAeEBUQJ5AfUBOwLRAf4BJwP/AQsD/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD - /wEAA/8BAAL5Af8BAALWAf8BAAKBAf8BLgJAAf0DYgHhAlEBeQH1AjsB0QH+AicC/wILAv8CAQL/AgAC - /wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB+QH/AgAB1gH/AgABgQH/Ai4BQAH9A2IB4QNvAfYDgAH+A6sB - /wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB/QNeAeIBSAF7AUgB - 9gFeAdEBXgH+AUIB/wFCAf8BGQH/ARkB/wEEAf8BBAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB - /wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHkAQAB/wEAAZgBAAH/AS4BQAEuAf0DXgHiAUgC - ewH2AV4C0QH+AUID/wEZA/8BBAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC5AH/AQAC - mAH/AS4CQAH9A14B4gJIAXsB9gJeAdEB/gJCAv8CGQL/AgQC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC - /wIAAf0B/wIAAeQB/wIAAZgB/wIuAUAB/QNeAeIDYQHWA34B/AO4Af8DowH/A5MB/wOOAf8DjgH/A44B - /wOOAf8DjgH/A44B/wONAf8DggH/A1wB/wNNAfoDWgHHAVwBYQFcAdYBZAG2AWQB/AFfAf8BXwH/AS8B - /wEvAf8BDAH/AQwB/wEBAf8BAQH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB - /wEAAf4BAAH/AQAB6gEAAf8BAAGlAQAB/wErAU0BKwH6A1oBxwFcAmEB1gFkArYB/AFfA/8BLwP/AQwD - /wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv4B/wEAAuoB/wEAAqUB/wErAk0B+gNaAccCXAFhAdYC - ZAG2AfwCXwL/Ai8C/wIMAv8CAQL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH+Af8CAAHqAf8CAAGlAf8C - KwFNAfoDWgHHA1ABmgOJAfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B/wOPAf8DjgH/A4MB - /wNgAf8DWgHyA0wBkANQAZoBagGSAWoB+QF8Af8BfAH/AVEB/wFRAf8BHwH/AR8B/wEHAf8BBwH/AQEB - /wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAgH/AQIB/wECAf4BAgH/AQAB6wEAAf8BAAGtAQAB - /wFaAWsBWgHyA0wBkANQAZoBagKSAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8BAAP/AQAD/wECA/8B - AgL+Af8BAALrAf8BAAKtAf8BWgJrAfIDTAGQA1ABmgJqAZIB+QJ8Av8CUQL/Ah8C/wIHAv8CAQL/AgAC - /wIAAv8CAAL/AgIC/wICAf4B/wIAAesB/wIAAa0B/wJaAWsB8gNMAZADLwFJA2wB6wOiAf4DxgH/A64B - /wOcAf8DkwH/A5AB/wOPAf8DkAH/A5MB/wOTAf8DhQH/A08B/QNgAeADLQFFAy8BSQNsAesBgAHRAYAB - /gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B/wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB - /wEKAf8BCgH+AQoB/wEBAe0BAQH/AS4BtgEuAf0BYAFmAWAB4AMtAUUDLwFJA2wB6wGAAtEB/gF/A/8B - SQP/AR8D/wEMA/8BBQP/AQMD/wEFA/8BCgP/AQoC/gH/AQEC7QH/AS4CtgH9AWACZgHgAy0BRQMvAUkD - bAHrAoAB0QH+An8C/wJJAv8CHwL/AgwC/wIFAv8CAwL/AgUC/wIKAv8CCgH+Af8CAQHtAf8CLgG2Af0C - YAFmAeADLQFFAwMBBANWAa4DcQH1A9kB/wPLAf8DtwH/A6cB/wOdAf8DmgH/A5wB/wOfAf8DmwH/A4kB - /wNoAfADUgGjAwMBBAMDAQQDVgGuAW4BeQFuAfUBqAH/AagB/wGJAf8BiQH/AVwB/wFcAf8BNwH/ATcB - /wEiAf8BIgH/ARsB/wEbAf8BHwH/AR8B/wEmAf8BJgH/AR0B/wEdAf8BBQHzAQUB/wFZAWgBWQHwA1IB - owMDAQQDAwEEA1YBrgFuAnkB9QGoA/8BiQP/AVwD/wE3A/8BIgP/ARsD/wEfA/8BJgP/AR0D/wEFAvMB - /wFZAmgB8ANSAaMDAwEEAwMBBANWAa4CbgF5AfUCqAL/AokC/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC - /wIdAv8CBQHzAf8CWQFoAfADUgGjAwMBBAQAAxwBJwNdAccDeAH2A7EB/gPXAf8DzAH/A8IB/wO7Af8D - twH/A7EB/wOAAf4DaAH0A1kBvAMbASYIAAMcAScDXQHHAXMBewFzAfYBiQHRAYkB/gGlAf8BpQH/AYsB - /wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB/wFcAf8BTgH/AU4B/wFHAdEBRwH+AVMBeAFTAfQBVwFZAVcB - vAMbASYIAAMcAScDXQHHAXMCewH2AYkC0QH+AaUD/wGLA/8BdAP/AWYD/wFcA/8BTgP/AUcC0QH+AVMC - eAH0AVcCWQG8AxsBJggAAxwBJwNdAccCcwF7AfYCiQHRAf4CpQL/AosC/wJ0Av8CZgL/AlwC/wJOAv8C - RwHRAf4CUwF4AfQCVwFZAbwDGwEmDAADIQEwA1kBtgNoAe4DlgH6A74B/QPUAf8DzAH/A74B/QOFAfkD - bAHrA1UBrAMfASwQAAMhATADWQG2AWYBagFmAe4BfQGhAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB - /wFfAb4BXwH9AWgBkgFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgFmAmoB7gF9AqEB+gGuAr4B - /QGfA/8BjAP/AV8CvgH9AWgCkgH5AWECbAHrA1UBrAMfASwQAAMhATADWQG2AmYBagHuAn0BoQH6Aq4B - vgH9Ap8C/wKMAv8CXwG+Af0CaAGSAfkCYQFsAesDVQGsAx8BLBQAAwYBBwM2AVgDVQGsA2YB5QOjAfwD - lAH7A2UB4gNTAacDMwFRAwYBBxgAAwYBBwM2AVgDVQGsA2YB5QF+AbYBfgH8AW8BogFvAfsDZQHiA1MB - pwMzAVEDBgEHGAADBgEHAzYBWANVAawDZgHlAX4CtgH8AW8CogH7A2UB4gNTAacDMwFRAwYBBxgAAwYB - BwM2AVgDVQGsA2YB5QJ+AbYB/AJvAaIB+wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwAB - QAMAASADAAEBAQABAQYAAQEWAAP/gQAB4AEHAeABBwHgAQcB4AEHAcABAwHAAQMBwAEDAcABAwGAAQEB - gAEBAYABAQGAAQFQAAGAAQEBgAEBAYABAQGAAQEBwAEDAcABAwHAAQMBwAEDAeABBwHgAQcB4AEHAeAB - Bws= + YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1oB9QMkAfsDQQH+A0EB/gMkAfsDUwH0A2IB + 4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBUwFaAVMB9QEhAV0BIQH7AR0BXQEdAf4BHQFdAR0B/gEhAV0B + IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAVMCWgH1ASECXQH7AR0CXQH+AR0CXQH+ASEC + XQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAlMBWgH1AiEBXQH7Ah0BXQH+Ah0BXQH+AiEB + XQH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyA0UB/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB + /wNAAf0DXgHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEdAWUBHQH+AQABVwEAAf8BAAFnAQAB/wEAAWwB + AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/AToBQAE6Af0DXgHwA1YBsgEZARoBGQEjCAADGwElA1gB + vQNaAfIBHQJlAf4BAAJXAf8BAAJnAf8BAAJsAf8BAAJhAf8BAAJMAf8BAAJAAf8BOgJAAf0DXgHwA1YB + sgEZAhoBIwgAAxsBJQNYAb0DWgHyAh0BZQH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgABTAH/AgAB + QAH/AjoBQAH9A14B8ANWAbICGQEaASMEAAMDAQQDUgGlA2AB8wNJAf8DVQH/A2UB/wNxAf8DdQH/A3EB + /wNkAf8DTAH/AzEB/wNBAf4DYgHuA1ABmgMDAQQDAwEEAVIBUwFSAaUBXQFvAV0B8wEAAYIBAAH/AQAB + mQEAAf8BAAG2AQAB/wEAAcwBAAH/AQAB0wEAAf8BAAHLAQAB/wEAAbMBAAH/AQABiAEAAf8BAAFXAQAB + /wEdAV0BHQH+A2IB7gNQAZoDAwEEAwMBBAFSAlMBpQFdAm8B8wEAAoIB/wEAApkB/wEAArYB/wEAAswB + /wEAAtMB/wEAAssB/wEAArMB/wEAAogB/wEAAlcB/wEdAl0B/gNiAe4DUAGaAwMBBAMDAQQCUgFTAaUC + XQFvAfMCAAGCAf8CAAGZAf8CAAG2Af8CAAHMAf8CAAHTAf8CAAHLAf8CAAGzAf8CAAGIAf8CAAFXAf8C + HQFdAf4DYgHuA1ABmgMDAQQDLQFEA2AB6AOAAf4DbgH/A3sB/wOFAf8DigH/A4wB/wOKAf8DhQH/A3YB + /wNXAf8DMgH/A0AB/QNeAd0DKgE/Ay0BRAFgAWkBYAHoAR0BgAEdAf4BAAHGAQAB/wEAAdwBAAH/AQAB + 7gEAAf8BAAH4AQAB/wEAAfsBAAH/AQAB+QEAAf8BAAHvAQAB/wEAAdQBAAH/AQABnAEAAf8BAAFaAQAB + /wE6AUABOgH9A14B3QMqAT8DLQFEAWACaQHoAR0CgAH+AQACxgH/AQAC3AH/AQAC7gH/AQAC+AH/AQAC + +wH/AQAC+QH/AQAC7wH/AQAC1AH/AQACnAH/AQACWgH/AToCQAH9A14B3QMqAT8DLQFEAmABaQHoAh0B + gAH+AgABxgH/AgAB3AH/AgAB7gH/AgAB+AH/AgAB+wH/AgAB+QH/AgAB7wH/AgAB1AH/AgABnAH/AgAB + WgH/AjoBQAH9A14B3QMqAT8DTgGVA3cB+AN/Af8DhQH/A4oB/wONAf8DjgH/A44B/wOOAf8DjQH/A4kB + /wN3Af8DTQH/AyUB/wNaAfIDSgGLA04BlQFHAXwBRwH4AQAB5QEAAf8BAAHvAQAB/wEAAfgBAAH/AQAB + /QEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH+AQAB/wEAAfYBAAH/AQAB1QEAAf8BAAGLAQAB + /wEAAUEBAAH/A1oB8gNKAYsDTgGVAUcCfAH4AQAC5QH/AQAC7wH/AQAC+AH/AQAC/QH/AQAD/wEAA/8B + AAP/AQAC/gH/AQAC9gH/AQAC1QH/AQACiwH/AQACQQH/A1oB8gNKAYsDTgGVAkcBfAH4AgAB5QH/AgAB + 7wH/AgAB+AH/AgAB/QH/AgAC/wIAAv8CAAL/AgAB/gH/AgAB9gH/AgAB1QH/AgABiwH/AgABQQH/A1oB + 8gNKAYsDXwHTA34B/AOTAf8DjgH/A40B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wOFAf8DZwH/AzQB + /wNBAfkDWgHEAVsBXwFbAdMBKwGkASsB/AEOAfsBDgH/AQMB/QEDAf8BAAH+AQAB/wEAAf8BAAH/AQAB + /wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH9AQAB/wEAAe8BAAH/AQABuQEAAf8BAAFdAQAB + /wNBAfkDWgHEAVsCXwHTASsCpAH8AQ4C+wH/AQMC/QH/AQAC/gH/AQAD/wEAA/8BAAP/AQAD/wEAA/8B + AAL9Af8BAALvAf8BAAK5Af8BAAJdAf8DQQH5A1oBxAJbAV8B0wIrAaQB/AIOAfsB/wIDAf0B/wIAAf4B + /wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB/QH/AgAB7wH/AgABuQH/AgABXQH/A0EB+QNaAcQDbgH1A4AB + /gOfAf8DkwH/A48B/wOOAf8DjgH/A44B/wOOAf8DjgH/A44B/wOLAf8DdwH/A0gB/wNAAf0DYgHhAVkB + bgFZAfUBQQHFAUEB/gEnAf8BJwH/AQsB/wELAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB + /wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAfkBAAH/AQAB1gEAAf8BAAGBAQAB/wE6AUABOgH9A2IB + 4QFZAm4B9QFBAsUB/gEnA/8BCwP/AQED/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAvkB/wEAAtYB + /wEAAoEB/wE6AkAB/QNiAeECWQFuAfUCQQHFAf4CJwL/AgsC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC + /wIAAv8CAAH5Af8CAAHWAf8CAAGBAf8COgFAAf0DYgHhA2MB9gOAAf4DqwH/A5kB/wOQAf8DjgH/A44B + /wOOAf8DjgH/A44B/wOOAf8DjQH/A38B/wNVAf8DQAH9A14B4gFIAXUBSAH2AWQBxQFkAf4BQgH/AUIB + /wEZAf8BGQH/AQQB/wEEAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB + /wEAAf8BAAH9AQAB/wEAAeQBAAH/AQABmAEAAf8BOgFAAToB/QNeAeIBSAJ1AfYBZALFAf4BQgP/ARkD + /wEEA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALkAf8BAAKYAf8BOgJAAf0DXgHiAkgB + dQH2AmQBxQH+AkIC/wIZAv8CBAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB/QH/AgAB5AH/AgAB + mAH/AjoBQAH9A14B4gNhAdYDfgH8A7gB/wOjAf8DkwH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B + /wOCAf8DXAH/A00B+gNaAccBXAFhAVwB1gFkAaoBZAH8AV8B/wFfAf8BLwH/AS8B/wEMAf8BDAH/AQEB + /wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/gEAAf8BAAHqAQAB + /wEAAaUBAAH/ATEBTQExAfoDWgHHAVwCYQHWAWQCqgH8AV8D/wEvA/8BDAP/AQED/wEAA/8BAAP/AQAD + /wEAA/8BAAP/AQAC/gH/AQAC6gH/AQACpQH/ATECTQH6A1oBxwJcAWEB1gJkAaoB/AJfAv8CLwL/AgwC + /wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf4B/wIAAeoB/wIAAaUB/wIxAU0B+gNaAccDUAGaA4MB + +QPFAf8DsgH/A5wB/wORAf8DjgH/A44B/wOOAf8DjgH/A48B/wOOAf8DgwH/A2AB/wNaAfIDTAGQA1AB + mgFqAYwBagH5AXwB/wF8Af8BUQH/AVEB/wEfAf8BHwH/AQcB/wEHAf8BAQH/AQEB/wEAAf8BAAH/AQAB + /wEAAf8BAAH/AQAB/wECAf8BAgH/AQIB/gECAf8BAAHrAQAB/wEAAa0BAAH/AVoBawFaAfIDTAGQA1AB + mgFqAowB+QF8A/8BUQP/AR8D/wEHA/8BAQP/AQAD/wEAA/8BAAP/AQID/wECAv4B/wEAAusB/wEAAq0B + /wFaAmsB8gNMAZADUAGaAmoBjAH5AnwC/wJRAv8CHwL/AgcC/wIBAv8CAAL/AgAC/wIAAv8CAgL/AgIB + /gH/AgAB6wH/AgABrQH/AloBawHyA0wBkAMvAUkDbAHrA5YB/gPGAf8DrgH/A5wB/wOTAf8DkAH/A48B + /wOQAf8DkwH/A5MB/wOFAf8DSQH9A2AB4AMtAUUDLwFJA2wB6wGAAcUBgAH+AX8B/wF/Af8BSQH/AUkB + /wEfAf8BHwH/AQwB/wEMAf8BBQH/AQUB/wEDAf8BAwH/AQUB/wEFAf8BCgH/AQoB/wEKAf4BCgH/AQEB + 7QEBAf8BOgG2AToB/QFgAWYBYAHgAy0BRQMvAUkDbAHrAYACxQH+AX8D/wFJA/8BHwP/AQwD/wEFA/8B + AwP/AQUD/wEKA/8BCgL+Af8BAQLtAf8BOgK2Af0BYAJmAeADLQFFAy8BSQNsAesCgAHFAf4CfwL/AkkC + /wIfAv8CDAL/AgUC/wIDAv8CBQL/AgoC/wIKAf4B/wIBAe0B/wI6AbYB/QJgAWYB4AMtAUUDAwEEA1YB + rgNuAfUD2QH/A8sB/wO3Af8DpwH/A50B/wOaAf8DnAH/A58B/wObAf8DiQH/A2gB8ANSAaMDAwEEAwMB + BANWAa4DbgH1AagB/wGoAf8BiQH/AYkB/wFcAf8BXAH/ATcB/wE3Af8BIgH/ASIB/wEbAf8BGwH/AR8B + /wEfAf8BJgH/ASYB/wEdAf8BHQH/AQUB8wEFAf8BXgFoAV4B8ANSAaMDAwEEAwMBBANWAa4DbgH1AagD + /wGJA/8BXAP/ATcD/wEiA/8BGwP/AR8D/wEmA/8BHQP/AQUC8wH/AV4CaAHwA1IBowMDAQQDAwEEA1YB + rgNuAfUCqAL/AokC/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC/wIdAv8CBQHzAf8CXgFoAfADUgGjAwMB + BAQAAxwBJwNdAccDcgH2A6UB/gPXAf8DzAH/A8IB/wO7Af8DtwH/A7EB/wOAAf4DaAH0A1kBvAMbASYI + AAMcAScDXQHHAWkBdQFpAfYBgAHFAYAB/gGlAf8BpQH/AYsB/wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB + /wFcAf8BTgH/AU4B/wFNAcUBTQH+AVMBcQFTAfQBVwFZAVcBvAMbASYIAAMcAScDXQHHAWkCdQH2AYAC + xQH+AaUD/wGLA/8BdAP/AWYD/wFcA/8BTgP/AU0CxQH+AVMCcQH0AVcCWQG8AxsBJggAAxwBJwNdAccC + aQF1AfYCgAHFAf4CpQL/AosC/wJ0Av8CZgL/AlwC/wJOAv8CTQHFAf4CUwFxAfQCVwFZAbwDGwEmDAAD + IQEwA1kBtgNiAe4DhAH6A74B/QPUAf8DzAH/A74B/QN/AfkDbAHrA1UBrAMfASwQAAMhATADWQG2AWIB + ZAFiAe4BfQGTAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB/wFZAb4BWQH9AWgBjAFoAfkBYQFsAWEB + 6wNVAawDHwEsEAADIQEwA1kBtgFiAmQB7gF9ApMB+gGuAr4B/QGfA/8BjAP/AVkCvgH9AWgCjAH5AWEC + bAHrA1UBrAMfASwQAAMhATADWQG2AmIBZAHuAn0BkwH6Aq4BvgH9Ap8C/wKMAv8CWQG+Af0CaAGMAfkC + YQFsAesDVQGsAx8BLBQAAwYBBwM2AVgDVQGsA2YB5QORAfwDjgH7A2UB4gNTAacDMwFRAwYBBxgAAwYB + BwM2AVgDVQGsA2YB5QF+AaoBfgH8AWMBmQFjAfsDZQHiA1MBpwMzAVEDBgEHGAADBgEHAzYBWANVAawD + ZgHlAX4CqgH8AWMCmQH7A2UB4gNTAacDMwFRAwYBBxgAAwYBBwM2AVgDVQGsA2YB5QJ+AaoB/AJjAZkB + +wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/gQAB + 4AEHAeABBwHgAQcB4AEHAcABAwHAAQMBwAEDAcABAwGAAQEBgAEBAYABAQGAAQFQAAGAAQEBgAEBAYAB + AQGAAQEBwAEDAcABAwHAAQMBwAEDAeABBwHgAQcB4AEHAeABBws= @@ -292,168 +291,171 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAMiUAAAJNU0Z0AUkBTAIBAQMB - AAF4AQEBeAEBASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6 + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAALiUAAAJNU0Z0AUkBTAIBAQMB + AAGoAQEBqAEBASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6 AANcAecBCAEKAQAB/wMqAUAMAAMqAUADNgFXAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwD PwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAI7AToBYgMzAVEDGAEhVAADUwGiA1sBwCAAA1QB pgNZAbzwAAMhATADRgGAFAABFQEfAQQB/wENARUBAAH/AQgBCgEAAf8BCAEKAQAB/wwAA0QBegNTAacC YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8C - YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYAFdAc4DWQG7AlABTwGbAyoBQFQAA2MB0ANvAe4g - AANlAdQDbQHp5AADWgG/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB + YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYAFdAc4DWQG7AlABTwGbAyoBQFQAA18B0ANpAe4g + AANhAdQDZgHp5AADWgG/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB AAH/AQgBCgEAAf8DWgG/A1oBvwFDAXQBBwH/AUcBdwEMAf8BJQFHAQAB/wEOARkBAAH/DAACSwFKAYoC WgFYAb0CZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoC - ZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCYwFaAekCXwFbAdMDVQGvAy4BSFQAA2MB - 0ANvAe4gAANlAdQDbQHp4AABCAEKAQAB/wEQAR4BAAH/ASEBQQEAAf8BJwFLAQAB/wEmAUoBAAH/ASEB + ZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCYwFaAekCXwFbAdMDVQGvAy4BSFQAA18B + 0ANpAe4gAANhAdQDZgHp4AABCAEKAQAB/wEQAR4BAAH/ASEBQQEAAf8BJwFLAQAB/wEmAUoBAAH/ASEB QQEAAf8BEAEeAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEpAU4BAAH/AVoBlgEQAf8BWgGcARAB /wFzAbYBJgH/ARgBLgEAAf8MAANJAYYCWgFYAbcCZQFgAeMCZQFgAeMCZQFgAeMCZQFgAeMCagFhAeYC - agFeAe0BawFoAVMB9AGhAXcBKwH8Af8BeAEAAv8BeAEAAf8CbgFXAfUCagFhAeYCZQFgAeMCZQFgAeMC - ZQFgAeMCZQFeAeICXgFbAc0CVQFTAaoCLgEtAUZUAANjAdADbwHuIAADZQHUA20B6dwAAQgBCgEAAf8B - PQFxAQIB/wFMAYYBBwH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFMAX8B - DwH/ATsBZwEIAf8BIQE0AQgB/wFTAY4BCwH/AVoBnAEQAf8BcgGzAScB/wFTAYEBGwH/EAADKwFBAzYB - WQJAAT8BbgJAAT8BbgJAAT8BbgJAAT8BbgNEAXsCUQFQAZ8CXQFbAcUDYgHuAf8BeAEAAv8BeAEAAf8C - XwFdAckDRQF8AkABPwFuAkABPwFuAkABPwFuAz8BbQM7AWMDMwFSAxkBIlQAA2MB0ANvAe4gAANlAdQD - bQHp2AABFQEpAQAB/wFKAYQBBAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVYBkAEMAf8BWgGaARAB/wFaAZwBEAH/AXIB - qQEwAf8BCAEKAQAB/wEIAQoBAAH/DAADDAEQAxEBFgMVARwDFQEcAxUBHAMVARwDIQEwAj4BPQFpAlMB - UgGlAmYBXwHlAf8BeAEAAv8BeAEAAf8CVQFTAaoDIgExAxUBHAMVARwDFQEcAxQBGwMTARkDEAEVAwcB - CVQAA2MB0ANvAe4gAANlAdQDbQHp1AABFgEnAQIB/wFJAYABBwH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB - CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCwH/AVIBjAEQAf8BUgGMARAB/wFYAZIBEAH/AVoBlAEQAf8B - WgGbARAB/wFaAZwBEAH/AVwBngESAf8BOwFtAQMB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wgAAwUE - BgQIAQoDCAEKAwgBCgMIAQoDFwEfAjkBOAFdA1EBngJlAWAB4wH/AXgBAAL/AXgBAAH/A1IBowMYASED - CAEKAwgBCgMIAQoDCAEKAwcBCQMGAQcDAgEDVAADYwHQA28B7iAAA2UB1ANtAenQAANdAd8BRwGAAQMB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIB - jAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB - /wFaAZgBEAH/ARYBKgEAAf8BCAEKAQAB/wEIAQoBAAH/HAADEgEXAzUBVgNQAZoDYgHhAf8BeAEAAv8B - eAEAAf8CUQFQAZ8DEgEYcAADYwHQA28B7iAAA2UB1ANtAenQAAEsAVABAAH/AUoBjAEAAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEOAf8BVQGSARAB/wFaAZwBEAH/AVoB - nAEQAf8BWgGUARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB - /wFYAZIBFgH/ARABHgEAAf8BCAEKAQAB/xwAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEB - UAGfAxIBGHAAA2MB0ANvAe4gAANlAdQDbQHp1AADSwGPATMBXgEAAf8BUgGMAQgB/wFSAYwBCAH/AVIB - jAEIAf8BUgGMARAB/wF/AcABMwH/AV8BngEXAf8BIAE/AQAB/wEIAQoBAAH/AVIBjAEQAf8BWgGcARAB - /wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZUBFwH/AVoBlAEYAf8BWgGUARgB/wFaAZQBGAH/AQgB - CgEAAf8BCAEKAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQABAED - AwEEAwYEBwEJAwcBCQMEAQUEAgQBFAADEQEWAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8D - IQEvA2QB2QN0AfEDIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwNoAdwDcQHtAyEBLwMhAS8D - IQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAw0BEbgAAUIBewEAAf8BUgGMAQgB/wF7AcYBKQH/AzMB - UAQAAwwBEAE5AWsBAAH/AVoBnAEQAf8BWgGcARAB/wFdAZcBEwH/AVYBlAEMAf8BWgGcARAB/wFaAZQB - GAH/AVoBlAEYAf8BYwGcARgB/wFjAaUBFwH/ASkBUAEAAf8BCAEKAQAB/xgAAxIBFwM1AVYDUAGaA2IB - 4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQABAIDCQEMAw8BFAMTARoDEgEYAwoBDQMEAQUEARQAA28B - 6AN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B - /wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B - /wNjAc+8AAEIAQoBAAH/DAABEwEjAQAB/wFaAZQBEAH/AVoBnAEQAf8BlAHWAUoB/wENAREBAgH/ATEB - WgEAAf8BWgGUARIB/wFaAZQBGAH/AVoBlAEYAf8BYwGcARgB/wFjAaUBFwH/AWsBpQEhAf8BEAEeAQAB - /xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwUBBgMdASkDMAFKAjsB - PAFlAjsBPAFkAygBPAIVARYBHQMGAQgUAAM8AWQDTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wB - jwNMAY8DbgHqA3wB+ANMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA3EB7ANxAfUDTAGPA0wB - jwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DNQFWqAADXQHfAQgBCgEAAf8BCAEKAQAB/wEIAQoB - AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AzMBUAM6AWABSwGFAQcB/wFaAZQBEAH/AVoBnAEQAf8B - OQFrAQAB/wMJAQwBEAEeAQAB/wFUAY4BEgH/AVoBlAEYAf8BYwGcARgB/wFjAZwBGAH/AWMBpQEXAf8B - cwG0ASkB/wEQAR4BAAH/GAADEgEXAzUBVgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAAD - CQEMAzMBUAJMAU0BkQJdAV8ByQJbAV0BygNEAXoDKQE9AwwBEDwAA2MB0ANvAe4gAANlAdQDbQHpzAAB - CAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB - AAH/AQgBCgEAAf8BMwFfAQIB/wFaAZQBEAH/AVoBnAEQAf8BrQHnAWMB/wEQAR4BAAH/AQgBCgEAAf8B - FAEmAQAB/wFUAY4BEgH/AWIBmwEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGcASEB/wEYAS4B - AAH/GAADEgEXAzUBVgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAADCQELAy4BRwNIAYQC - WQFcAcMCXAFfAcsDSQGFAy4BRwMPARM8AANjAdADbwHuIAADZQHUA20B6cgAAQgBCgEAAf8BKwFSAQAB - /wFBAXIBBQH/AUoBhAEGAf8BSgGEAQYB/wFKAYQBBgH/AUIBcwEGAf8BKQFQAQAB/wEQAR4BAAH/AR8B - OgEAAf8BVQGPAQsB/wFaAZUBEAH/AVoBnAEQAf8B1gH/AYwB/wEQAR4BAAH/ARgBLgEAAf8BQgF4AQMB - /wFaAZQBGAH/AWIBmwEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BcwG0ASkB/wEQAR4BAAH/GAAD - EgEXAzUBVgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAADBgEIAyQBNAM8AWYDUwGnA1gB - uAJHAUgBgwMxAU0DDwEUPAADYwHQA28B7iAAA2UB1ANtAenEAAEoAU0BAAH/AU4BiAEHAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIB - jAEQAf8BWgGUARAB/wFaAZwBEAH/AWMBpQEXAf8BQgF7AQAB/wFKAYQBBgH/AVIBjAEIAf8BWgGYARQB - /wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBpQEXAf8BlAHJAU0B/wQAAxABFQMaASQD - IQEvAxEBFgQCBAEDEgEXAzUBVgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAADAwEEAxMB - GQMlATYCOwE8AWQCQQFCAXIDMwFRAyEBLwMJAQw8AANjAdADbwHuIAADZQHUA20B6cAAASkBTgECAf8B - UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB - EAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlQEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B - WgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BYwGcARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFjAaUB - FwH/AWUBoAEhAf8EAAMeASsCMQEwAUwDOwFjAyIBMQMHAQkDBAEFAxIBGAM2AVcDUAGaA2IB4QH/AXgB - AAL/AXgBAAH/AlEBUAGfAxIBGBwAAwcBCQMcAScDIwEyAhkBGgEjAw8BFAMEAQU8AANjAdADbwHuIAAD - ZQHUA20B6bwAA0YBgAFOAYgBBwH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZcBEAH/AVoB - nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGhARgB - /wFjAaUBFwH/AWMBpQEXAf8BeAG6ASwB/wEIAQoBAAH/BAADJAE0A0UBfAJaAVgBtwNOAZQDPwFtAygB - OwMfASwDOQFeA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMSARcDPAFmA0oBiQNAAW8D - LgFHAw4BEjwAA2MB0ANvAe4gAANlAdQDbQHpvAABNQFeAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVoB - lAEQAf8BWgGUARAB/wFaAZsBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlgEWAf8BWgGUARgB - /wFdAZcBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AXABswEgAf8BKwFQAQQB/wgAAycBOgJTAVEB - ogGWAV8BIQH7AmUBXAHnAlwBWgHEAkMBQgF1AzEBTQJAAT8BbgJRAVABnwJlAWAB4wH/AXgBAAL/AXgB - AAH/AlEBUAGfAxIBGBwAAxkBIgNOAZUCWwFeAc0CVgFXAbIDRAF6Ax0BKQMGAQgEAgQBMAADYwHQA28B - 7iAAA2UB1ANtAem8AAFKAYQBBgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFnAakBFwH/AVIBjAEIAf8BSgGEAQYB/wFKAYQBBgH/AVIBjAEQAf8BWgGUARAB/wFaAZcBEAH/AVoB - nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AV8BmAEYAf8BYwGeARgB - /wFjAaUBFwH/AWsBqQEdAf8BKQFQAQAB/wwAAyIBMQNOAZgCbwFgAfMCaAFeAfACagFhAeYCWgFXAcIC - VQFTAaoDUwGnAlkBVwG8AmwBYQHrAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADFAEbAkMBRAF3AlYB - WQG2AlsBXgHNAlYBWAGzAz8BbAMmATgDDAEPAwIBAwgAAwIBAwMNAREDDQERAw0BEQMNAREDDQERAw0B - EQMNAREDDQERAw0BEQNiAdMDcQHvAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDZQHXA28B - 6gMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMEAQWUAAFKAYQBBgH/AVIBjAEIAf8B - UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BaQGkAR4B/wEsAVABAwH/AQgBCgEAAf8BNwFhAQcB/wFSAYwB - DgH/AVIBjAEQAf8BfwHBATIB/wFbAV4BWwHTA1oBvwEvAVkBAAH/AUQBegEFAf8BUAGKAQgB/wFaAZwB - DgH/AVoBnAEQAf8BWgGcARAB/wFPAYYBEAH/AUQBdAEMAf8DWgG/EAACGgEZASMDRAF7Al0BWwHKAmMB - XwHaAmkBYAHoAmcBWQHvAmUBXQHsAmEBXAHWAl8BWwHYAWsBaAFTAfQB/wF4AQAC/wF4AQAB/wJRAVAB - nwMSARgcAAMPARMDNAFTA00BkgJdAWEBzwJdAWEB1AJSAVQBqAJBAUIBcgMmATgDFAEbAwYBCAMCAQMD - XQHCA38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D + agFeAe0CaAFTAfQBjwF3ASsB/AH/AXgBAAL/AXgBAAH/Am4BWgH1AmoBYQHmAmUBYAHjAmUBYAHjAmUB + YAHjAmUBXgHiAl4BWwHNAlUBUwGqAi4BLQFGVAADXwHQA2kB7iAAA2EB1ANmAencAAEIAQoBAAH/AT0B + cQECAf8BTAGGAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BTAF/AQ8B + /wE7AWcBCAH/ASEBNAEIAf8BUwGOAQsB/wFaAZwBEAH/AXIBswEnAf8BUwGBARsB/xAAAysBQQM2AVkC + QAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4DRAF7AlEBUAGfAl0BWwHFA2IB7gH/AXgBAAL/AXgBAAH/Al8B + XQHJA0UBfAJAAT8BbgJAAT8BbgJAAT8BbgM/AW0DOwFjAzMBUgMZASJUAANfAdADaQHuIAADYQHUA2YB + 6dgAARUBKQEAAf8BSgGEAQQB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B + UgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFWAZABDAH/AVoBmgEQAf8BWgGcARAB/wFyAakB + MAH/AQgBCgEAAf8BCAEKAQAB/wwAAwwBEAMRARYDFQEcAxUBHAMVARwDFQEcAyEBMAI+AT0BaQJTAVIB + pQJmAV8B5QH/AXgBAAL/AXgBAAH/AlUBUwGqAyIBMQMVARwDFQEcAxUBHAMUARsDEwEZAxABFQMHAQlU + AANfAdADaQHuIAADYQHUA2YB6dQAARYBJwECAf8BSQGAAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB + /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQsB/wFSAYwBEAH/AVIBjAEQAf8BWAGSARAB/wFaAZQBEAH/AVoB + mwEQAf8BWgGcARAB/wFcAZ4BEgH/ATsBbQEDAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8IAAMFBAYE + CAEKAwgBCgMIAQoDCAEKAxcBHwI5ATgBXQNRAZ4CZQFgAeMB/wF4AQAC/wF4AQAB/wNSAaMDGAEhAwgB + CgMIAQoDCAEKAwgBCgMHAQkDBgEHAwIBA1QAA18B0ANpAe4gAANhAdQDZgHp0AADXQHfAUcBgAEDAf8B + UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwB + EAH/AVIBjAEQAf8BWgGUARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B + WgGYARAB/wEWASoBAAH/AQgBCgEAAf8BCAEKAQAB/xwAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgB + AAH/AlEBUAGfAxIBGHAAA18B0ANpAe4gAANhAdQDZgHp0AABLAFQAQAB/wFKAYwBAAH/AVIBjAEIAf8B + UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBDgH/AVUBkgEQAf8BWgGcARAB/wFaAZwB + EAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8B + WAGSARYB/wEQAR4BAAH/AQgBCgEAAf8cAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVAB + nwMSARhwAANfAdADaQHuIAADYQHUA2YB6dQAA0sBjwEzAV4BAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB + CAH/AVIBjAEQAf8BfwHAATMB/wFfAZ4BFwH/ASABPwEAAf8BCAEKAQAB/wFSAYwBEAH/AVoBnAEQAf8B + WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGVARcB/wFaAZQBGAH/AVoBlAEYAf8BWgGUARgB/wEIAQoB + AAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQBAwMB + BAMGBAcBCQMHAQkDBAEFBAIEARQAAxEBFgMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEB + LwNhAdkDcAHxAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DYgHcA2oB7QMhAS8DIQEvAyEB + LwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMNARG4AAFCAXsBAAH/AVIBjAEIAf8BewHGASkB/wMzAVAE + AAMMARABOQFrAQAB/wFaAZwBEAH/AVoBnAEQAf8BXQGXARMB/wFWAZQBDAH/AVoBnAEQAf8BWgGUARgB + /wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wEpAVABAAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB + /wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQCAwkBDAMPARQDEwEaAxIBGAMKAQ0DBAEFBAEUAANpAegD fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D - fwH/A2gB3JQAAUoBjAEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFnAZ0BJwH/AQgB - CgEAAf8BCgEPAQAB/wFCAXcBAwH/AVIBjAEQAf8BWgGcARAB/wElAUEBBQH/BAADOgFgAQgBCgEAAf8B - CAEKAQAB/wQAA0YBgANGAYADRgGAHAADCgENAyIBMQM0AVQDRAF4AlEBUAGfAmEBXQHPAmoBXgHtAmUB - XQHsAmgBXgHwAZYBXwEhAfsB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMGAQgDGAEhAzEBTQJMAU0B - kQJYAVoBvQJdAWEB0QJZAVwBwwJRAVMBogM9AWcCGQEaASMDDAEPA0ABbwNVAa0DVQGtA1UBrQNVAa0D - VQGtA1UBrQNVAa0DVQGtA1UBrQNwAfADfQH6A1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0D - dAHxA3wB+ANVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNHAYGUAAE7AW0BAgH/AVIB - jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUwGOARAB/wEPARsBAAH/ASMBQwEAAf8BUgGMARAB - /wFSAYwBEAH/AXsBvQEwAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgB - CgEAAf8BCAEKAQAB/ygAAwMBBAMJAQsDIgExAzgBWwJPAU4BlwJfAVwByAJmAV8B5QGBAW8BUQH3Ab4B - WAFAAf0B/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAQBAwIBAwMVARwDNQFWAksBTAGPAlwBXwHIAl0B - YwHfAmABZQHjAlIBUwGlAzQBUwMcAScoAANjAdADbwHuIAADZQHUA20B6bwAAQgBCgEAAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AU4BggEPAf8BSgGEAQYB/wFSAYwBEAH/AWMB - pQEXAf8BCAEKAQAB/wEIAQoBAAH/ARMBIwEAAf8BQgFzAQYB/wEgAT8BAAH/AQgBCgEAAf8BCAEKAQAB - /wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/yAABAEDAwEEAwwBEAMYASADKQE9Az4BagJXAVYBtQJmAV8B - 5QGBAW8BUQH3Af8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYIAAEAQMHAQkDFAEbAyoBQANDAXYDVQGvAloB - YwHpAlsBXwHQAlABUQGfAzMBUSgAA2MB0ANvAe4gAANlAdQDbQHpwAABQgFzAQYB/wFSAYwBCAH/AVIB - jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AUoBhAEGAf8BEAEeAQAB - /wExAVoBAAH/AU0BhAENAf8BWgGcARAB/wFaAZwBEAH/AVIBjAEIAf8BEAEeAQAB/wEIAQoBAAH/AQgB - CgEAAf8DRgGALAADAgEDAwsBDgMgAS4DQwF2AlcBVQGxAmYBYAHgAXIBYwFIAfYBiQFqAUEB+QJRAVAB - nAMSARcMAAQBAwwBEAMXAR8DHQEoAx0BKAMMAQ8IAAMPARQCJgEnATkCRwFIAYMDYgHhAlwBZQHnA14B - 0gI/AUABbigAA2MB0ANvAe4gAANlAdQDbQHpxAABSQGJAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZwBEAH/AVoB - nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BQgFzAQYB/wEKAQ4BAAH/MAAEAQMDAQQDDAEPAx4B - KgM6AWECWQFXAbkCYwFbAeQDYgHuAk8BTgGXAxIBFwwAAwIBAwMhAS8DNgFZAkIBQwF1AkEBQgFzAx4B - KwgAAwQBBQMMAQ8DOAFcAl0BYAHOAl0BZQHsAlkBZwHvA0YBfygAA2MB0ANvAe4gAANlAdQDbQHpyAAB - OgFrAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZQB - EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBpQEXAf8B - GQEsAQMB/zgAAwIBAwMIAQoDIAEtAkEBQAFxAk0BTAGRA1ABmgI7AToBYgMMAQ8MAAMDAQQDKwFBA0QB - egNTAacDVQGtAzcBWgMYASADCQELAwYBBwMNAREDOQFfAl0BYQHRAlkBZwHvAmABbwHzAkYBRwGBKAAD - YwHQA28B7iAAA2UB1ANtAenMAAEsAVUBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8B - WgGUARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFaAZQB - GAH/ASEBQQEAAf9AAAQCAwcBCQMQBBUBHAIWARUBHQMPARMDAgEDDAADAwEEAzADSwFMAY8CWwFdAcoC - WwFhAd4DTgGUAzQBUwMVARwDDQERAx4BKwJDAUQBdwJdAWMB3wJlAXAB8QJaAWMB6QNEAXsoAANjAdAD - bwHuIAADZQHUA20B6cgAARIBIgEAAf8BTAGGAQYB/wFSAYwBCAH/AVoBnAEQAf8BUAGKAQgB/wFSAYwB - EAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEQH/AWkBqwEfAf8B - CAEKAQAB/2wAAwIBAwMhAS8DOgFhA1UBrQJfAWMB2gNaAb8CUAFRAZ8DRAF6AkEBQgFyA0kBhQJWAVcB - sgJeAWoB7QJgAWQB2wJVAVcBsQM4AVsoAANjAdADbwHuIAADZQHUA20B6cgAARABHgEAAf8BSAF9AQcB - /wFZAZMBEwH/AVUBiAEYAf8IAAEhAUEBAAH/AUIBewEAAf8BUgGMAQgB/wFVAZEBCAH/ATkBZgEEAf8D - WQHveAADBgEIAxcBHwNEAXsCWQFcAcYCWwFjAeQCUwFrAfQDYgHuA2IB7gJlAXAB8QJIAXIB9gIrAaEB - /AJZAVwBvgM+AWsDJAE0KAADYwHQA28B7iAAA2UB1ANtAenQAAEeAToBAAH/nAAEAgMJAQwDKgM/AUAB - bgNOAZYCVgFYAbMCWQFcAcECWgFdAccCWgFdAccCVwFZAbkCUQFSAaQCQAFBAXEDJQE2AxMBGSgAA2MB - 0ANvAe4gAANlAdQDbQHp/wB5AAQBAwsBDgMmATgDOQFeA0YBfQJKAUsBiwNKAYkDPgFrAyoBPwMXAR8D - AgEDLAADUwGiA1wBvyAAA1QBpgNaAbuoAAFCAU0BPgcAAT4DAAEoAwABgAMAASADAAEBAQABAQYAAQIW - AAP/AQAD/wHHAgABBwL/Ac8B8wH/BAAC/wHPAYcCAAEHAv8BzwHzAf8EAAH/Af4BAAEHAgABBwL/Ac8B - 8wH/BAAB/wH8AQABBwIAAQcC/wHPAfMB/wQAAf8B+AEAAQ8CAAEHAv8BzwHzAf8EAAH/AfABAAEHAgAB - BwL/Ac8B8wH/BAAB/wHgAQABAwIAAQcC/wHPAfMB/wQAAf8BwAEAAQEB/AEDA/8BzwHzAf8EAAH/AcAB - AAEBAfwBAwP/Ac8B8wH/BAAB/wHgAgAB/AEDAeABHwgAAf8B/AEgAQAB/AEDAeABHwgAAf8B/gHgAQAB - /AEDAeABHwgAAf8BwAIAAfwBAwHgAR8B/wHPAfMB/wQAAf8BgAIAAfwBAwHgAR8B/wHPAfMB/wQAAf8D - AAH8AQMB4AEfAf8BzwHzAf8EAAH+AgABAQEAAQMB4AEfAf8BzwHzAf8EAAH8AgABAQEAAQMB+AEfAf8B - zwHzAf8EAAH4AgABAQEAAQMB+AEfAf8BzwHzAf8EAAH4AgABAwEAAQMB+AEDAf8BzwHzAf8EAAH4AgAB - BwEAAQMB+AEDCAAB+AIAAQ8BAAEDAfgJAAH4AQABRAF/AQABAwH4CQAB+AEAAQEB/wGAAQMB+AEAAf8B - zwHzAf8EAAH4AgABfwGAAQMB/AEAAf8BzwHzAf8EAAH8AgABfwHwAQMBgQGAAf8BzwHzAf8EAAH+AgAB - /wHwAQMBgQGAAf8BzwHzAf8EAAH/AgAB/wH8AQMBgAEAAf8BzwHzAf8EAAH/AYABAQH/Af4BAwGAAQAB - /wHPAfMB/wQAAf8BAAEDA/8BgAEAAf8BzwHzAf8EAAH/AQwBDwP/AcABAAH/Ac8B8wH/BAAB/wHfBP8B - wAEAAf8BzwHzAf8EAAb/AfABAQH/Ac8B8wH/BAAL + fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D + YQHPvAABCAEKAQAB/wwAARMBIwEAAf8BWgGUARAB/wFaAZwBEAH/AZQB1gFKAf8BDQERAQIB/wExAVoB + AAH/AVoBlAESAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFrAaUBIQH/ARABHgEAAf8Y + AAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAMFAQYDHQEpAzABSgI7ATwB + ZQI7ATwBZAMoATwCFQEWAR0DBgEIFAADPAFkA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8D + TAGPA2cB6gN8AfgDTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNrAewDbgH1A0wBjwNMAY8D + TAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPAzUBVqgAA10B3wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB + /wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wMzAVADOgFgAUsBhQEHAf8BWgGUARAB/wFaAZwBEAH/ATkB + awEAAf8DCQEMARABHgEAAf8BVAGOARIB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AXMB + tAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkB + DAMzAVACTAFNAZECXQFfAckCWwFdAcoDRAF6AykBPQMMARA8AANfAdADaQHuIAADYQHUA2YB6cwAAQgB + CgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB + /wEIAQoBAAH/ATMBXwECAf8BWgGUARAB/wFaAZwBEAH/Aa0B5wFjAf8BEAEeAQAB/wEIAQoBAAH/ARQB + JgEAAf8BVAGOARIB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBnAEhAf8BGAEuAQAB + /xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkBCwMuAUcDSAGEAlkB + XAHDAlwBXwHLA0kBhQMuAUcDDwETPAADXwHQA2kB7iAAA2EB1ANmAenIAAEIAQoBAAH/ASsBUgEAAf8B + QQFyAQUB/wFKAYQBBgH/AUoBhAEGAf8BSgGEAQYB/wFCAXMBBgH/ASkBUAEAAf8BEAEeAQAB/wEfAToB + AAH/AVUBjwELAf8BWgGVARAB/wFaAZwBEAH/AdYB/wGMAf8BEAEeAQAB/wEYAS4BAAH/AUIBeAEDAf8B + WgGUARgB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AXMBtAEpAf8BEAEeAQAB/xgAAxIB + FwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwYBCAMkATQDPAFmA1MBpwNYAbgC + RwFIAYMDMQFNAw8BFDwAA18B0ANpAe4gAANhAdQDZgHpxAABKAFNAQAB/wFOAYgBBwH/AVIBjAEIAf8B + UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwB + EAH/AVoBlAEQAf8BWgGcARAB/wFjAaUBFwH/AUIBewEAAf8BSgGEAQYB/wFSAYwBCAH/AVoBmAEUAf8B + WgGUARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFjAaUBFwH/AZQByQFNAf8EAAMQARUDGgEkAyEB + LwMRARYEAgQBAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwMBBAMTARkD + JQE2AjsBPAFkAkEBQgFyAzMBUQMhAS8DCQEMPAADXwHQA2kB7iAAA2EB1ANmAenAAAEpAU4BAgH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB + /wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZUBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB + nAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGlARcB + /wFlAaABIQH/BAADHgErAjEBMAFMAzsBYwMiATEDBwEJAwQBBQMSARgDNgFXA1ABmgNiAeEB/wF4AQAC + /wF4AQAB/wJRAVABnwMSARgcAAMHAQkDHAEnAyMBMgIZARoBIwMPARQDBAEFPAADXwHQA2kB7iAAA2EB + 1ANmAem8AANGAYABTgGIAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B + UgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwB + EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBoQEYAf8B + YwGlARcB/wFjAaUBFwH/AXgBugEsAf8BCAEKAQAB/wQAAyQBNANFAXwCWgFYAbcDTgGUAz8BbQMoATsD + HwEsAzkBXgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADEgEXAzwBZgNKAYkDQAFvAy4B + RwMOARI8AANfAdADaQHuIAADYQHUA2YB6bwAATUBXgEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B + UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQB + EAH/AVoBlAEQAf8BWgGbARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZYBFgH/AVoBlAEYAf8B + XQGXARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFwAbMBIAH/ASsBUAEEAf8IAAMnAToCUwFRAaIB + kAFfASEB+wJlAVwB5wJcAVoBxAJDAUIBdQMxAU0CQAE/AW4CUQFQAZ8CZQFgAeMB/wF4AQAC/wF4AQAB + /wJRAVABnwMSARgcAAMZASIDTgGVAlsBXgHNAlYBVwGyA0QBegMdASkDBgEIBAIEATAAA18B0ANpAe4g + AANhAdQDZgHpvAABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B + ZwGpARcB/wFSAYwBCAH/AUoBhAEGAf8BSgGEAQYB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwB + EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFfAZgBGAH/AWMBngEYAf8B + YwGlARcB/wFrAakBHQH/ASkBUAEAAf8MAAMiATEDTgGYAm8BYAHzAmgBXgHwAmoBYQHmAloBVwHCAlUB + UwGqA1MBpwJZAVcBvAJsAWEB6wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAxQBGwJDAUQBdwJWAVkB + tgJbAV4BzQJWAVgBswM/AWwDJgE4AwwBDwMCAQMIAAMCAQMDDQERAw0BEQMNAREDDQERAw0BEQMNARED + DQERAw0BEQMNAREDXwHTA2cB7wMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERA2IB1wNnAeoD + DQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDBAEFlAABSgGEAQYB/wFSAYwBCAH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AWkBpAEeAf8BLAFQAQMB/wEIAQoBAAH/ATcBYQEHAf8BUgGMAQ4B + /wFSAYwBEAH/AX8BwQEyAf8BWwFeAVsB0wNaAb8BLwFZAQAB/wFEAXoBBQH/AVABigEIAf8BWgGcAQ4B + /wFaAZwBEAH/AVoBnAEQAf8BTwGGARAB/wFEAXQBDAH/A1oBvxAAAhoBGQEjA0QBewJdAVsBygJjAV8B + 2gJpAWAB6AJnAVkB7wJlAV0B7AJhAVwB1gJfAVsB2AJoAVMB9AH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB + GBwAAw8BEwM0AVMDTQGSAl0BYQHPAl0BYQHUAlIBVAGoAkEBQgFyAyYBOAMUARsDBgEIAwIBAwNaAcID + fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D + fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D + YgHclAABSgGMAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AWcBnQEnAf8BCAEKAQAB + /wEKAQ8BAAH/AUIBdwEDAf8BUgGMARAB/wFaAZwBEAH/ASUBQQEFAf8EAAM6AWABCAEKAQAB/wEIAQoB + AAH/BAADRgGAA0YBgANGAYAcAAMKAQ0DIgExAzQBVANEAXgCUQFQAZ8CYQFdAc8CagFeAe0CZQFdAewC + aAFeAfABkAFfASEB+wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAwYBCAMYASEDMQFNAkwBTQGRAlgB + WgG9Al0BYQHRAlkBXAHDAlEBUwGiAz0BZwIZARoBIwMMAQ8DQAFvA1UBrQNVAa0DVQGtA1UBrQNVAa0D + VQGtA1UBrQNVAa0DVQGtA2gB8AN9AfoDVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNwAfED + fAH4A1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA0cBgZQAATsBbQECAf8BUgGMAQgB + /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFTAY4BEAH/AQ8BGwEAAf8BIwFDAQAB/wFSAYwBEAH/AVIB + jAEQAf8BewG9ATAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB + /wEIAQoBAAH/KAADAwEEAwkBCwMiATEDOAFbAk8BTgGXAl8BXAHIAmYBXwHlAXcBbwFRAfcBvgFSAUAB + /QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwABAEDAgEDAxUBHAM1AVYCSwFMAY8CXAFfAcgCXQFjAd8C + YAFlAeMCUgFTAaUDNAFTAxwBJygAA18B0ANpAe4gAANhAdQDZgHpvAABCAEKAQAB/wFSAYwBCAH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BTgGCAQ8B/wFKAYQBBgH/AVIBjAEQAf8BYwGlARcB + /wEIAQoBAAH/AQgBCgEAAf8BEwEjAQAB/wFCAXMBBgH/ASABPwEAAf8BCAEKAQAB/wEIAQoBAAH/AQgB + CgEAAf8BCAEKAQAB/wEIAQoBAAH/IAAEAQMDAQQDDAEQAxgBIAMpAT0DPgFqAlcBVgG1AmYBXwHlAXcB + bwFRAfcB/wF4AQAC/wF4AQAB/wJRAVABnwMSARggAAQBAwcBCQMUARsDKgFAA0MBdgNVAa8CWgFjAekC + WwFfAdACUAFRAZ8DMwFRKAADXwHQA2kB7iAAA2EB1ANmAenAAAFCAXMBBgH/AVIBjAEIAf8BUgGMAQgB + /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BSgGEAQYB/wEQAR4BAAH/ATEB + WgEAAf8BTQGEAQ0B/wFaAZwBEAH/AVoBnAEQAf8BUgGMAQgB/wEQAR4BAAH/AQgBCgEAAf8BCAEKAQAB + /wNGAYAsAAMCAQMDCwEOAyABLgNDAXYCVwFVAbECZgFgAeABZwFjAUgB9gGDAWoBQQH5AlEBUAGcAxIB + FwwABAEDDAEQAxcBHwMdASgDHQEoAwwBDwgAAw8BFAImAScBOQJHAUgBgwNiAeECXAFlAecDXgHSAj8B + QAFuKAADXwHQA2kB7iAAA2EB1ANmAenEAAFJAYkBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIB + jAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB + /wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFCAXMBBgH/AQoBDgEAAf8wAAQBAwMBBAMMAQ8DHgEqAzoB + YQJZAVcBuQJjAVsB5ANiAe4CTwFOAZcDEgEXDAADAgEDAyEBLwM2AVkCQgFDAXUCQQFCAXMDHgErCAAD + BAEFAwwBDwM4AVwCXQFgAc4CXQFlAewCWQFnAe8DRgF/KAADXwHQA2kB7iAAA2EB1ANmAenIAAE6AWsB + AAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8B + WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BYwGlARcB/wEZASwB + AwH/OAADAgEDAwgBCgMgAS0CQQFAAXECTQFMAZEDUAGaAjsBOgFiAwwBDwwAAwMBBAMrAUEDRAF6A1MB + pwNVAa0DNwFaAxgBIAMJAQsDBgEHAw0BEQM5AV8CXQFhAdECWQFnAe8CYAFvAfMCRgFHAYEoAANfAdAD + aQHuIAADYQHUA2YB6cwAASwBVQEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQB + EAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQBGAH/AVoBlAEYAf8B + IQFBAQAB/0AABAIDBwEJAxAEFQEcAhYBFQEdAw8BEwMCAQMMAAMDAQQDMANLAUwBjwJbAV0BygJbAWEB + 3gNOAZQDNAFTAxUBHAMNAREDHgErAkMBRAF3Al0BYwHfAmUBcAHxAloBYwHpA0QBeygAA18B0ANpAe4g + AANhAdQDZgHpyAABEgEiAQAB/wFMAYYBBgH/AVIBjAEIAf8BWgGcARAB/wFQAYoBCAH/AVIBjAEQAf8B + WgGUARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAERAf8BaQGrAR8B/wEIAQoB + AAH/bAADAgEDAyEBLwM6AWEDVQGtAl8BYwHaA1oBvwJQAVEBnwNEAXoCQQFCAXIDSQGFAlYBVwGyAl4B + agHtAmABZAHbAlUBVwGxAzgBWygAA18B0ANpAe4gAANhAdQDZgHpyAABEAEeAQAB/wFIAX0BBwH/AVkB + kwETAf8BVQGIARgB/wgAASEBQQEAAf8BQgF7AQAB/wFSAYwBCAH/AVUBkQEIAf8BOQFmAQQB/wNZAe94 + AAMGAQgDFwEfA0QBewJZAVwBxgJbAWMB5AJTAWgB9ANiAe4DYgHuAmUBcAHxAkgBZwH2AisBjwH8AlkB + XAG+Az4BawMkATQoAANfAdADaQHuIAADYQHUA2YB6dAAAR4BOgEAAf+cAAQCAwkBDAMqAz8BQAFuA04B + lgJWAVgBswJZAVwBwQJaAV0BxwJaAV0BxwJXAVkBuQJRAVIBpAJAAUEBcQMlATYDEwEZKAADXwHQA2kB + 7iAAA2EB1ANmAen/AHkABAEDCwEOAyYBOAM5AV4DRgF9AkoBSwGLA0oBiQM+AWsDKgE/AxcBHwMCAQMs + AANTAaIDWgG/IAADVAGmA1kBu6gAAUIBTQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA/8B + AAP/AccCAAEHAv8BzwHzAf8EAAL/Ac8BhwIAAQcC/wHPAfMB/wQAAf8B/gEAAQcCAAEHAv8BzwHzAf8E + AAH/AfwBAAEHAgABBwL/Ac8B8wH/BAAB/wH4AQABDwIAAQcC/wHPAfMB/wQAAf8B8AEAAQcCAAEHAv8B + zwHzAf8EAAH/AeABAAEDAgABBwL/Ac8B8wH/BAAB/wHAAQABAQH8AQMD/wHPAfMB/wQAAf8BwAEAAQEB + /AEDA/8BzwHzAf8EAAH/AeACAAH8AQMB4AEfCAAB/wH8ASABAAH8AQMB4AEfCAAB/wH+AeABAAH8AQMB + 4AEfCAAB/wHAAgAB/AEDAeABHwH/Ac8B8wH/BAAB/wGAAgAB/AEDAeABHwH/Ac8B8wH/BAAB/wMAAfwB + AwHgAR8B/wHPAfMB/wQAAf4CAAEBAQABAwHgAR8B/wHPAfMB/wQAAfwCAAEBAQABAwH4AR8B/wHPAfMB + /wQAAfgCAAEBAQABAwH4AR8B/wHPAfMB/wQAAfgCAAEDAQABAwH4AQMB/wHPAfMB/wQAAfgCAAEHAQAB + AwH4AQMIAAH4AgABDwEAAQMB+AkAAfgBAAFEAX8BAAEDAfgJAAH4AQABAQH/AYABAwH4AQAB/wHPAfMB + /wQAAfgCAAF/AYABAwH8AQAB/wHPAfMB/wQAAfwCAAF/AfABAwGBAYAB/wHPAfMB/wQAAf4CAAH/AfAB + AwGBAYAB/wHPAfMB/wQAAf8CAAH/AfwBAwGAAQAB/wHPAfMB/wQAAf8BgAEBAf8B/gEDAYABAAH/Ac8B + 8wH/BAAB/wEAAQMD/wGAAQAB/wHPAfMB/wQAAf8BDAEPA/8BwAEAAf8BzwHzAf8EAAH/Ad8E/wHAAQAB + /wHPAfMB/wQABv8B8AEBAf8BzwHzAf8EAAs= + + 12, 128 + 20, 44 @@ -461,8 +463,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAuBIAAAJNU0Z0AUkBTAIBAQQB - AAF4AQIBeAECARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAshIAAAJNU0Z0AUkBTAIBAQQB + AAGoAQIBqAECARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ACIAA2cB7wJnAVkB7wFnAV0BWQHvAWcBWwFZAe8B ZwFbAVkB7wFnAlkB7wFnAWQBWQHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvAwcB CQMqAT8DRQF8A1kBuwNjAd8DaAH0A4AB/gOBAf8DgQH/A4EB/wOAAf4DaAH0A2MB3wNaAboDRAF6AycB @@ -488,7 +490,7 @@ YAH/AYMBggF/Af8BhQGCAX0B/wGzAZMBRAH/Ac8BlAEAAf8B3gHMAZ8B/wOwAf8DsAH/A7AB/wOwAf8D sAH/A7AB/wOwAf8DsAH/A6gB/wMCAQMDGgEjAzgBXANUAagDYgHXA3AB8QOAAf4DgQH/A4EB/wOBAf8D gQH9A2gB8ANhAdQDUwGlAzYBWQMYASAIAAMaASQDUgGgAmMBSAH2AaIBcwEAAf8BrgF8AQAB/wGwAX0B - AAH/AagBeAEAAf8BlQFqAQAB/wKAAU8B/gFcAlkBxgNXAbUDFgEeCAAB/wGyAW8B/wH9AYABEQH/AfwB + AAH/AagBeAEAAf8BlQFqAQAB/wKAAVUB/gFcAlkBxgNXAbUDFgEeCAAB/wGyAW8B/wH9AYABEQH/AfwB dwEBAf8B/QF3AQAC/wF4AQAC/wF/AQ8C/wGSATsC/wGzAYMC/wHqAeAC/wGQAT0C/wF7AQoB/wH8AXcB AAH/AeUBbAEAAf8BsQFUAQAB/wGEAUsBGgH/A2MB3wT/AdkBqgE3Af8BvgGYATgB/wHAAZgBNgH/AdwB ogEUAf8BzwGUAQAB/wHeAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/RAAD @@ -524,24 +526,24 @@ AwH/AeIBhAEyAf8DYwHfBP8BpwGUAWcB/wGDAYIBfwH/AYUBgwF+Af8BsAGUAU4B/wHTAZcBAgH/AeAB zgGfAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPAAf8DZAHbA2gB9AOBAf8DgQH/A4EB /wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAwcBCQNiAe4B8QG8ATsB - /wH6AeoBwgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWoEAANeAdIB - dQJqAfkB/wG7AX0C/wGjAVIC/wGQASwC/wGCARMC/wF9AQgC/wF6AQQC/wF5AQIC/wF6AQQC/wF9AQkC - /wGAAQ8C/wF/AQ0B/wH4AYYBIAH/A2gB9ANYAbgE/wHXAbEBUgH/AZoBjwF0Af8BoAGSAW0B/wHgAa8B - NwH/AecBqQEQAf8B6wHVAaAB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A5MB/wM8AWQD - XwHJA30B+gOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A30B+gNVAaoE - AAMzAVEDaAHwAfMBxgFYAf8B+gHnAbgW/wH+AfsB/wH5AeIBqgH/Ae8BuAEtAf8DTgGWBAIEAAM8AWYD - YwHVA3wB+AH/Ab4BhQL/AaoBXwL/AZkBPgL/AY0BJwL/AYYBGgL/AYMBFQL/AYUBGQL/AYoBIgL/AY0B - KAL/AZMBMwH/Am4BaAH1A10BxQM2AVkE/wH0Ac0BbAH/AfQBywFmAf8B9AHLAWUB/wH0AcsBZQH/AfEB - wQFJAf8B+QHjAawB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A5oB/wMGAQgDMQFMA1AB - mwNlAewDfQH6A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN9AfoDagHtA1ABmwMvAUkIAAMiATED - XwHJAn0BZwH6AfMBygFlAf8B+QHhAaYB/wH7Ae0BzAH/AfsB7AHIAf8B+AHdAZsB/wOAAf4CZQFeAeID - PQFoBAEMAANCAXIDYwHVAXUBawFqAfkB/wHJAZkC/wG8AX8C/wGuAWYC/wGkAVMC/wGfAUoC/wGfAUsC - /wGjAVEC/wGnAVgB/wN8AfgDXQHHAzsBYgQAQP8IAAMFAQYDEgEXAzoBYANRAZ8DXwHTA2cB7wNjAfYD - YgHuA14B0gNRAZ4DOQFfAxEBFgMFAQYUAAMPARMDRwGCA2QB2wJ+AW8B/ANnAeoDVAGoAygBOxwAAzwB - ZQNeAdIB/wHvAeAC/wHcAbwC/wHNAZ8C/wHBAYoC/wG7AX8C/wG/AYYC/wHNAaEC/wHpAdYB/wNcAcQD - NQFVCAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4UAAf8B/AHAAQMEAAH/AfwB - gAEBBAAB/wH5BgAB/wH5BgAB8AETBgABwAEDBAAC/wGAAQEEAAHAAQEBgAEBBAABgAIAAQEHAAEBBwAB - AQcAAQEHAAEBBgABgAEBBgABwAEDAYABAQIAAcABAQHwAR8BwAEDCw== + /wH6AeoBwgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWoEAANeAdID + agH5Af8BuwF9Av8BowFSAv8BkAEsAv8BggETAv8BfQEIAv8BegEEAv8BeQECAv8BegEEAv8BfQEJAv8B + gAEPAv8BfwENAf8B+AGGASAB/wNoAfQDWAG4BP8B1wGxAVIB/wGaAY8BdAH/AaABkgFtAf8B4AGvATcB + /wHnAakBEAH/AesB1QGgAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DPAFkA18B + yQN9AfoDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN9AfoDVQGqBAAD + MwFRA2gB8AHzAcYBWAH/AfoB5wG4Fv8B/gH7Af8B+QHiAaoB/wHvAbgBLQH/A04BlgQCBAADPAFmA2MB + 1QN8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC/wGGARoC/wGDARUC/wGFARkC/wGKASIC/wGNASgC + /wGTATMB/wJuAWgB9QNdAcUDNgFZBP8B9AHNAWwB/wH0AcsBZgH/AfQBywFlAf8B9AHLAWUB/wHxAcEB + SQH/AfkB4wGsAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOaAf8DBgEIAzEBTANQAZsD + ZQHsA30B+gOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DfQH6A2oB7QNQAZsDLwFJCAADIgExA18B + yQJ9AWcB+gHzAcoBZQH/AfkB4QGmAf8B+wHtAcwB/wH7AewByAH/AfgB3QGbAf8DgAH+AmUBXgHiAz0B + aAQBDAADQgFyA2MB1QNqAfkB/wHJAZkC/wG8AX8C/wGuAWYC/wGkAVMC/wGfAUoC/wGfAUsC/wGjAVEC + /wGnAVgB/wN8AfgDXQHHAzsBYgQAQP8IAAMFAQYDEgEXAzoBYANRAZ8DXwHTA2cB7wNjAfYDYgHuA14B + 0gNRAZ4DOQFfAxEBFgMFAQYUAAMPARMDRwGCA2QB2wJ+AW8B/ANnAeoDVAGoAygBOxwAAzwBZQNeAdIB + /wHvAeAC/wHcAbwC/wHNAZ8C/wHBAYoC/wG7AX8C/wG/AYYC/wHNAaEC/wHpAdYB/wNcAcQDNQFVCAAB + QgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4UAAf8B/AHAAQMEAAH/AfwBgAEBBAAB + /wH5BgAB/wH5BgAB8AETBgABwAEDBAAC/wGAAQEEAAHAAQEBgAEBBAABgAIAAQEHAAEBBwABAQcAAQEH + AAEBBgABgAEBBgABwAEDAYABAQIAAcABAQHwAR8BwAEDCw== @@ -628,7 +630,7 @@ - 70 + 90 diff --git a/qtc-net-client-2/Forms/Profile.Designer.cs b/qtc-net-client-2/Forms/Profile.Designer.cs index fea3037..f98fc06 100644 --- a/qtc-net-client-2/Forms/Profile.Designer.cs +++ b/qtc-net-client-2/Forms/Profile.Designer.cs @@ -41,21 +41,21 @@ pbCurrencyIcon = new PictureBox(); lblCurrencyAmount = new Label(); flpUsernameCurrency = new FlowLayoutPanel(); - panel1 = new Panel(); + pCurrency = new Panel(); ((System.ComponentModel.ISupportInitialize)pbUserPfp).BeginInit(); ((System.ComponentModel.ISupportInitialize)pbUserStatus).BeginInit(); ((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).BeginInit(); flpUsernameCurrency.SuspendLayout(); - panel1.SuspendLayout(); + pCurrency.SuspendLayout(); SuspendLayout(); // // pbUserPfp // pbUserPfp.BorderStyle = BorderStyle.FixedSingle; pbUserPfp.Image = Properties.Resources.DefaultPfp; - pbUserPfp.Location = new Point(12, 12); + pbUserPfp.Location = new Point(9, 5); pbUserPfp.Name = "pbUserPfp"; - pbUserPfp.Size = new Size(128, 126); + pbUserPfp.Size = new Size(138, 139); pbUserPfp.SizeMode = PictureBoxSizeMode.StretchImage; pbUserPfp.TabIndex = 2; pbUserPfp.TabStop = false; @@ -64,7 +64,7 @@ // lblUsername.AutoSize = true; lblUsername.Font = new Font("Segoe UI Light", 15F, FontStyle.Bold); - lblUsername.ForeColor = SystemColors.ControlLight; + lblUsername.ForeColor = Color.White; lblUsername.Location = new Point(3, 0); lblUsername.Name = "lblUsername"; lblUsername.Size = new Size(105, 28); @@ -188,21 +188,21 @@ // flpUsernameCurrency.BackColor = Color.Transparent; flpUsernameCurrency.Controls.Add(lblUsername); - flpUsernameCurrency.Controls.Add(panel1); + flpUsernameCurrency.Controls.Add(pCurrency); flpUsernameCurrency.Location = new Point(152, 8); flpUsernameCurrency.Name = "flpUsernameCurrency"; flpUsernameCurrency.Size = new Size(246, 33); flpUsernameCurrency.TabIndex = 13; flpUsernameCurrency.WrapContents = false; // - // panel1 + // pCurrency // - panel1.Controls.Add(pbCurrencyIcon); - panel1.Controls.Add(lblCurrencyAmount); - panel1.Location = new Point(114, 3); - panel1.Name = "panel1"; - panel1.Size = new Size(73, 24); - panel1.TabIndex = 14; + pCurrency.Controls.Add(pbCurrencyIcon); + pCurrency.Controls.Add(lblCurrencyAmount); + pCurrency.Location = new Point(114, 3); + pCurrency.Name = "pCurrency"; + pCurrency.Size = new Size(73, 24); + pCurrency.TabIndex = 14; // // Profile // @@ -220,6 +220,7 @@ Controls.Add(pbUserPfp); Controls.Add(btnMessage); Font = new Font("Segoe UI Light", 9F); + ForeColor = Color.White; FormBorderStyle = FormBorderStyle.FixedDialog; Icon = (Icon)resources.GetObject("$this.Icon"); MaximizeBox = false; @@ -234,8 +235,8 @@ ((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).EndInit(); flpUsernameCurrency.ResumeLayout(false); flpUsernameCurrency.PerformLayout(); - panel1.ResumeLayout(false); - panel1.PerformLayout(); + pCurrency.ResumeLayout(false); + pCurrency.PerformLayout(); ResumeLayout(false); } @@ -253,6 +254,6 @@ private PictureBox pbCurrencyIcon; private Label lblCurrencyAmount; private FlowLayoutPanel flpUsernameCurrency; - private Panel panel1; + private Panel pCurrency; } } \ No newline at end of file diff --git a/qtc-net-client-2/Forms/Profile.cs b/qtc-net-client-2/Forms/Profile.cs index 885f965..b95baa7 100644 --- a/qtc-net-client-2/Forms/Profile.cs +++ b/qtc-net-client-2/Forms/Profile.cs @@ -13,6 +13,11 @@ using System.Windows.Forms; using QtCNETAPI.Services.GatewayService; using qtc_net_client_2.ClientModel; using qtc_net_client_2.Properties; +using qtc_net_client_2.Services; +using QtCNETAPI.Schema; +using System.Diagnostics; +using System.Drawing.Imaging; +using System.Drawing.Design; namespace qtc_net_client_2.Forms { @@ -35,7 +40,7 @@ namespace qtc_net_client_2.Forms InitializeComponent(); } - private void frmProfile_Load(object sender, EventArgs e) + private async void frmProfile_Load(object sender, EventArgs e) { lblUsername.Text = _userInformationDto.Username; lblCurrencyAmount.Text = _userInformationDto.CurrencyAmount.ToString("N0"); @@ -45,8 +50,7 @@ namespace qtc_net_client_2.Forms { using (var ms = new MemoryStream(pfpRes.Data)) { - pbUserPfp.Image = Image.FromStream(ms); - ms.Dispose(); + pbUserPfp.Image = new Bitmap(ms); } } @@ -67,6 +71,25 @@ namespace qtc_net_client_2.Forms break; } + if(_userInformationDto.ProfileCosmeticId != 0) + { + var res = await _apiService.GetStoreItem(_userInformationDto.ProfileCosmeticId); + if (res != null && res.Success && res.Data != null) + { + var client = new HttpClient(); + var response = await client.GetAsync(res.Data.AssetUrl); + if (response.IsSuccessStatusCode) + { + using(var stream = await response.Content.ReadAsStreamAsync()) + { + CombineProfileImageWithCosmetic(pbUserPfp.Image, new Bitmap(stream)); + } + response.Dispose(); + } + client.Dispose(); + } + } + if (_userInformationDto.Id == _apiService.CurrentUser!.Id) { btnAddContact.Visible = false; @@ -215,5 +238,22 @@ namespace qtc_net_client_2.Forms Close(); frmDirectMessage.Show(); } + + private void CombineProfileImageWithCosmetic(Image pfp, Bitmap cosmetic) + { + cosmetic.MakeTransparent(); + Bitmap combined = new Bitmap(pbUserPfp.Width, pbUserPfp.Height); + + using (Graphics g = Graphics.FromImage(combined)) + { + g.Clear(Color.Transparent); + g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; + + g.DrawImage(pfp, 0, 0, pbUserPfp.Width, pbUserPfp.Height); + g.DrawImage(cosmetic, 0, 0, pbUserPfp.Width, pbUserPfp.Height); + } + + pbUserPfp.Image = combined; + } } } diff --git a/qtc-net-client-2/Forms/ProfileEdit.Designer.cs b/qtc-net-client-2/Forms/ProfileEdit.Designer.cs index 32429b8..984a8d3 100644 --- a/qtc-net-client-2/Forms/ProfileEdit.Designer.cs +++ b/qtc-net-client-2/Forms/ProfileEdit.Designer.cs @@ -33,6 +33,8 @@ rtxtBio = new RichTextBox(); lblBio = new Label(); btnSave = new Button(); + cbCosmetic = new ComboBox(); + lblCosmetic = new Label(); SuspendLayout(); // // tbUsername @@ -71,7 +73,7 @@ // btnSave // btnSave.ForeColor = Color.Black; - btnSave.Location = new Point(76, 148); + btnSave.Location = new Point(76, 177); btnSave.Name = "btnSave"; btnSave.Size = new Size(43, 23); btnSave.TabIndex = 4; @@ -79,12 +81,32 @@ btnSave.UseVisualStyleBackColor = true; btnSave.Click += btnSave_Click; // - // frmProfileEdit + // cbCosmetic + // + cbCosmetic.FormattingEnabled = true; + cbCosmetic.Items.AddRange(new object[] { "(None)" }); + cbCosmetic.Location = new Point(76, 148); + cbCosmetic.Name = "cbCosmetic"; + cbCosmetic.Size = new Size(121, 23); + cbCosmetic.TabIndex = 5; + // + // lblCosmetic + // + lblCosmetic.AutoSize = true; + lblCosmetic.Location = new Point(21, 151); + lblCosmetic.Name = "lblCosmetic"; + lblCosmetic.Size = new Size(53, 15); + lblCosmetic.TabIndex = 6; + lblCosmetic.Text = "Cosmetic"; + // + // ProfileEdit // AutoScaleDimensions = new SizeF(6F, 15F); AutoScaleMode = AutoScaleMode.Font; BackColor = Color.DodgerBlue; - ClientSize = new Size(345, 187); + ClientSize = new Size(345, 208); + Controls.Add(lblCosmetic); + Controls.Add(cbCosmetic); Controls.Add(btnSave); Controls.Add(lblBio); Controls.Add(rtxtBio); @@ -95,7 +117,7 @@ FormBorderStyle = FormBorderStyle.FixedDialog; MaximizeBox = false; MinimizeBox = false; - Name = "frmProfileEdit"; + Name = "ProfileEdit"; StartPosition = FormStartPosition.CenterParent; Text = "QtC.NET Client - Edit Profile"; Load += frmProfileEdit_Load; @@ -110,5 +132,7 @@ private RichTextBox rtxtBio; private Label lblBio; private Button btnSave; + private ComboBox cbCosmetic; + private Label lblCosmetic; } } \ No newline at end of file diff --git a/qtc-net-client-2/Forms/ProfileEdit.cs b/qtc-net-client-2/Forms/ProfileEdit.cs index db4cb2d..85ea872 100644 --- a/qtc-net-client-2/Forms/ProfileEdit.cs +++ b/qtc-net-client-2/Forms/ProfileEdit.cs @@ -1,4 +1,5 @@ -using QtCNETAPI.Dtos.User; +using Microsoft.AspNetCore.Mvc.TagHelpers; +using QtCNETAPI.Dtos.User; using QtCNETAPI.Services.ApiService; using System; using System.Collections.Generic; @@ -21,38 +22,53 @@ namespace qtc_net_client_2.Forms InitializeComponent(); } - private void frmProfileEdit_Load(object sender, EventArgs e) + private async void frmProfileEdit_Load(object sender, EventArgs e) { - tbUsername.Text = _apiService.CurrentUser!.Username; - rtxtBio.Text = _apiService.CurrentUser!.Bio; + tbUsername.Text = _apiService.CurrentUser.Username; + rtxtBio.Text = _apiService.CurrentUser.Bio; + + // get all owned cosmetics + var boughtItems = await _apiService.GetOwnedStoreItems(); + if(boughtItems != null && boughtItems.Success && boughtItems.Data != null) + { + foreach(var item in boughtItems.Data) + { + // get item from the store + var storeItem = await _apiService.GetStoreItem(item.StoreItemId); + if(storeItem != null && storeItem.Success && storeItem.Data != null) + { + cbCosmetic.Items.Add(storeItem.Data.Name); + } + } + } + + cbCosmetic.SelectedIndex = _apiService.CurrentUser.ActiveProfileCosmetic; } private async void btnSave_Click(object sender, EventArgs e) { - if(!string.IsNullOrEmpty(tbUsername.Text) && (tbUsername.Text != _apiService.CurrentUser!.Username || rtxtBio.Text != _apiService.CurrentUser!.Bio)) + // update user info + UserUpdateInformationDto userUpdateInformationDto = new UserUpdateInformationDto { - // update user info - UserUpdateInformationDto userUpdateInformationDto = new UserUpdateInformationDto - { - Id = _apiService.CurrentUser.Id, - Username = tbUsername.Text, - Bio = rtxtBio.Text, - DateOfBirth = _apiService.CurrentUser.DateOfBirth - }; + Id = _apiService.CurrentUser.Id, + Username = tbUsername.Text, + Bio = rtxtBio.Text, + DateOfBirth = _apiService.CurrentUser.DateOfBirth, + ProfileCosmeticId = cbCosmetic.SelectedIndex + }; - var res = await _apiService.UpdateUserInformationAsync(userUpdateInformationDto); + var res = await _apiService.UpdateUserInformationAsync(userUpdateInformationDto); - if (res.Success) - { - DialogResult = DialogResult.OK; - Close(); - } - else - { - MessageBox.Show(res.Message, "Info Update Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - DialogResult = DialogResult.Cancel; - Close(); - } + if (res.Success) + { + DialogResult = DialogResult.OK; + Close(); + } + else + { + MessageBox.Show(res.Message, "Info Update Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + DialogResult = DialogResult.Cancel; + Close(); } } } diff --git a/qtc-net-client-2/Forms/StoreItemDisplay.Designer.cs b/qtc-net-client-2/Forms/StoreItemDisplay.Designer.cs new file mode 100644 index 0000000..60a0a4c --- /dev/null +++ b/qtc-net-client-2/Forms/StoreItemDisplay.Designer.cs @@ -0,0 +1,135 @@ +namespace qtc_net_client_2.Forms +{ + partial class StoreItemDisplay + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StoreItemDisplay)); + pbItemThumbnail = new PictureBox(); + lblName = new Label(); + lblDescription = new Label(); + btnBuy = new Button(); + pbCurrencyIcon = new PictureBox(); + lblPrice = new Label(); + ((System.ComponentModel.ISupportInitialize)pbItemThumbnail).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).BeginInit(); + SuspendLayout(); + // + // pbItemThumbnail + // + pbItemThumbnail.Location = new Point(12, 12); + pbItemThumbnail.Name = "pbItemThumbnail"; + pbItemThumbnail.Size = new Size(148, 141); + pbItemThumbnail.SizeMode = PictureBoxSizeMode.StretchImage; + pbItemThumbnail.TabIndex = 0; + pbItemThumbnail.TabStop = false; + // + // lblName + // + lblName.AutoSize = true; + lblName.Font = new Font("Segoe UI", 21.75F, FontStyle.Bold | FontStyle.Italic, GraphicsUnit.Point, 0); + lblName.Location = new Point(165, 7); + lblName.Name = "lblName"; + lblName.Size = new Size(239, 40); + lblName.TabIndex = 1; + lblName.Text = "Item Name Here"; + // + // lblDescription + // + lblDescription.Location = new Point(169, 44); + lblDescription.Name = "lblDescription"; + lblDescription.Size = new Size(448, 109); + lblDescription.TabIndex = 2; + lblDescription.Text = resources.GetString("lblDescription.Text"); + // + // btnBuy + // + btnBuy.ForeColor = Color.Black; + btnBuy.Location = new Point(542, 157); + btnBuy.Name = "btnBuy"; + btnBuy.Size = new Size(75, 23); + btnBuy.TabIndex = 3; + btnBuy.Text = "Buy"; + btnBuy.UseVisualStyleBackColor = true; + btnBuy.Click += btnBuy_Click; + // + // pbCurrencyIcon + // + pbCurrencyIcon.Image = Properties.Resources.CurrencyIcon; + pbCurrencyIcon.Location = new Point(48, 161); + pbCurrencyIcon.Name = "pbCurrencyIcon"; + pbCurrencyIcon.Size = new Size(15, 14); + pbCurrencyIcon.SizeMode = PictureBoxSizeMode.StretchImage; + pbCurrencyIcon.TabIndex = 19; + pbCurrencyIcon.TabStop = false; + // + // lblPrice + // + lblPrice.AutoEllipsis = true; + lblPrice.Font = new Font("Segoe UI", 8F, FontStyle.Bold, GraphicsUnit.Point, 0); + lblPrice.Location = new Point(64, 162); + lblPrice.Name = "lblPrice"; + lblPrice.Size = new Size(61, 13); + lblPrice.TabIndex = 20; + lblPrice.Text = "99,999,999"; + // + // StoreItemDisplay + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + BackColor = Color.DodgerBlue; + ClientSize = new Size(629, 188); + Controls.Add(lblPrice); + Controls.Add(pbCurrencyIcon); + Controls.Add(btnBuy); + Controls.Add(lblDescription); + Controls.Add(lblName); + Controls.Add(pbItemThumbnail); + ForeColor = Color.White; + FormBorderStyle = FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + Name = "StoreItemDisplay"; + StartPosition = FormStartPosition.CenterScreen; + Text = "QtC.NET Client - Store Item"; + Load += StoreItemDisplay_Load; + ((System.ComponentModel.ISupportInitialize)pbItemThumbnail).EndInit(); + ((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private PictureBox pbItemThumbnail; + private Label lblName; + private Label lblDescription; + private Button btnBuy; + private PictureBox pbCurrencyIcon; + private Label lblPrice; + } +} \ No newline at end of file diff --git a/qtc-net-client-2/Forms/StoreItemDisplay.cs b/qtc-net-client-2/Forms/StoreItemDisplay.cs new file mode 100644 index 0000000..b68a6e1 --- /dev/null +++ b/qtc-net-client-2/Forms/StoreItemDisplay.cs @@ -0,0 +1,88 @@ +using qtc_net_client_2.Services; +using QtCNETAPI.Dtos.User; +using QtCNETAPI.Schema; +using QtCNETAPI.Services.ApiService; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace qtc_net_client_2.Forms +{ + public partial class StoreItemDisplay : Form + { + private StoreItem StoreItem { get; set; } + + private LoggingService _loggingService; + private IApiService _apiService; + public StoreItemDisplay(StoreItem item, LoggingService loggingService, IApiService apiService) + { + StoreItem = item; + _loggingService = loggingService; + _apiService = apiService; + InitializeComponent(); + } + + private async void StoreItemDisplay_Load(object sender, EventArgs e) + { + lblName.Text = StoreItem.Name; + lblDescription.Text = StoreItem.Description; + lblPrice.Text = StoreItem.Price.ToString("N0"); + + try + { + using HttpClient client = new(); + var response = await client.GetAsync(StoreItem.ThumbnailUrl); + if (response != null && response.IsSuccessStatusCode) + { + using var stream = await response.Content.ReadAsStreamAsync(); + Image image = Image.FromStream(stream); + stream.Dispose(); + pbItemThumbnail.Image = image; + } + else if (response != null) _loggingService.LogString($"Store Item Thumbnail Could Not Be Loaded Due To Status Code {response.StatusCode}"); + else _loggingService.LogString("Store Item Thumbnail Could Not Be Loaded"); + client.Dispose(); + } + catch (Exception ex) + { + _loggingService.LogString("Store Item Thumbnail Could Not Be Loaded\n" + ex.Message); + } + } + + private async void btnBuy_Click(object sender, EventArgs e) + { + Enabled = false; + + // attempt to buy item + var ownedStoreItem = await _apiService.BuyStoreItem(StoreItem.Id); + if (ownedStoreItem != null && ownedStoreItem.Success && ownedStoreItem.Data != null) + { + Enabled = true; + var result = MessageBox.Show($"Successfully Bought '{StoreItem.Name}'! Would You Like To Wear It Now?", "Success!", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (result == DialogResult.Yes) + { + // send an update dto that only updates the current users cosmetic + UserUpdateInformationDto updateDto = new UserUpdateInformationDto + { + Id = _apiService.CurrentUser.Id, + Bio = _apiService.CurrentUser.Bio, + DateOfBirth = _apiService.CurrentUser.DateOfBirth, + Username = _apiService.CurrentUser.Username, + ProfileCosmeticId = StoreItem.Id + }; + + await _apiService.UpdateUserInformationAsync(updateDto); + } + } + else MessageBox.Show("We Weren't Able To Complete Your Purchase.\nYou May Not Have Enough Funds For This Item.", "Oops.", MessageBoxButtons.OK, MessageBoxIcon.Error); + + Close(); + } + } +} diff --git a/qtc-net-client-2/Forms/StoreItemDisplay.resx b/qtc-net-client-2/Forms/StoreItemDisplay.resx new file mode 100644 index 0000000..aae771a --- /dev/null +++ b/qtc-net-client-2/Forms/StoreItemDisplay.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum + + \ No newline at end of file