From a883c07df2a7f3d626632a349509e254222751a9 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R." Date: Sun, 11 May 2025 19:51:52 +0200 Subject: [PATCH] Initialize issues branch --- .gitignore | 4 - .idea/.idea.BasicBlockChain/.idea/.gitignore | 13 - .../.idea/indexLayout.xml | 8 - .idea/.idea.BasicBlockChain/.idea/vcs.xml | 6 - .../BasicBlockChain.Core.Tests.csproj | 23 - BasicBlockChain.Core.Tests/BlockChainTests.cs | 77 --- .../Properties/AssemblyInfo.cs | 35 -- BasicBlockChain.Core.Tests/packages.config | 5 - .../BasicBlockChain.Core.csproj | 13 - BasicBlockChain.Core/Block.cs | 63 --- BasicBlockChain.Core/BlockChain.cs | 145 ------ .../Properties/AssemblyInfo.cs | 35 -- BasicBlockChain.Core/Transaction.cs | 20 - BasicBlockChain.Core/packages.config | 4 - BasicBlockChain.UI/.gitignore | 454 ------------------ BasicBlockChain.UI/App.axaml | 7 - BasicBlockChain.UI/App.axaml.cs | 24 - BasicBlockChain.UI/BasicBlockChain.UI.csproj | 27 -- BasicBlockChain.UI/MainWindow.axaml | 9 - BasicBlockChain.UI/MainWindow.axaml.cs | 12 - BasicBlockChain.UI/Program.cs | 21 - BasicBlockChain.sln | 43 -- BasicBlockChain.sln.DotSettings | 2 - BasicBlockChain.sln.DotSettings.user | 7 - BasicBlockChain/BasicBlockChain.csproj | 85 ---- BasicBlockChain/FrmMain.Designer.cs | 250 ---------- BasicBlockChain/FrmMain.cs | 179 ------- BasicBlockChain/FrmMain.resx | 408 ---------------- BasicBlockChain/Program.cs | 16 - BasicBlockChain/Properties/AssemblyInfo.cs | 36 -- BasicBlockChain/blocks.ico | Bin 16958 -> 0 bytes BasicBlockChain/packages.config | 4 - issues/.keep | 0 33 files changed, 2035 deletions(-) delete mode 100644 .gitignore delete mode 100644 .idea/.idea.BasicBlockChain/.idea/.gitignore delete mode 100644 .idea/.idea.BasicBlockChain/.idea/indexLayout.xml delete mode 100644 .idea/.idea.BasicBlockChain/.idea/vcs.xml delete mode 100644 BasicBlockChain.Core.Tests/BasicBlockChain.Core.Tests.csproj delete mode 100644 BasicBlockChain.Core.Tests/BlockChainTests.cs delete mode 100644 BasicBlockChain.Core.Tests/Properties/AssemblyInfo.cs delete mode 100644 BasicBlockChain.Core.Tests/packages.config delete mode 100644 BasicBlockChain.Core/BasicBlockChain.Core.csproj delete mode 100644 BasicBlockChain.Core/Block.cs delete mode 100644 BasicBlockChain.Core/BlockChain.cs delete mode 100644 BasicBlockChain.Core/Properties/AssemblyInfo.cs delete mode 100644 BasicBlockChain.Core/Transaction.cs delete mode 100644 BasicBlockChain.Core/packages.config delete mode 100644 BasicBlockChain.UI/.gitignore delete mode 100644 BasicBlockChain.UI/App.axaml delete mode 100644 BasicBlockChain.UI/App.axaml.cs delete mode 100644 BasicBlockChain.UI/BasicBlockChain.UI.csproj delete mode 100644 BasicBlockChain.UI/MainWindow.axaml delete mode 100644 BasicBlockChain.UI/MainWindow.axaml.cs delete mode 100644 BasicBlockChain.UI/Program.cs delete mode 100644 BasicBlockChain.sln delete mode 100644 BasicBlockChain.sln.DotSettings delete mode 100644 BasicBlockChain.sln.DotSettings.user delete mode 100644 BasicBlockChain/BasicBlockChain.csproj delete mode 100644 BasicBlockChain/FrmMain.Designer.cs delete mode 100644 BasicBlockChain/FrmMain.cs delete mode 100644 BasicBlockChain/FrmMain.resx delete mode 100644 BasicBlockChain/Program.cs delete mode 100644 BasicBlockChain/Properties/AssemblyInfo.cs delete mode 100644 BasicBlockChain/blocks.ico delete mode 100644 BasicBlockChain/packages.config create mode 100644 issues/.keep diff --git a/.gitignore b/.gitignore deleted file mode 100644 index edd02cf..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/.vs/* -*/bin/* -*/obj/* -/packages/ diff --git a/.idea/.idea.BasicBlockChain/.idea/.gitignore b/.idea/.idea.BasicBlockChain/.idea/.gitignore deleted file mode 100644 index 1cfeef3..0000000 --- a/.idea/.idea.BasicBlockChain/.idea/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/modules.xml -/.idea.AdventOfCode2020.iml -/contentModel.xml -/projectSettingsUpdater.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/.idea.BasicBlockChain/.idea/indexLayout.xml b/.idea/.idea.BasicBlockChain/.idea/indexLayout.xml deleted file mode 100644 index 7b08163..0000000 --- a/.idea/.idea.BasicBlockChain/.idea/indexLayout.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/.idea.BasicBlockChain/.idea/vcs.xml b/.idea/.idea.BasicBlockChain/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/.idea.BasicBlockChain/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/BasicBlockChain.Core.Tests/BasicBlockChain.Core.Tests.csproj b/BasicBlockChain.Core.Tests/BasicBlockChain.Core.Tests.csproj deleted file mode 100644 index 9a6632a..0000000 --- a/BasicBlockChain.Core.Tests/BasicBlockChain.Core.Tests.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net7.0 - enable - BasicBlockChain.Core.Tests - false - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - diff --git a/BasicBlockChain.Core.Tests/BlockChainTests.cs b/BasicBlockChain.Core.Tests/BlockChainTests.cs deleted file mode 100644 index 99d4071..0000000 --- a/BasicBlockChain.Core.Tests/BlockChainTests.cs +++ /dev/null @@ -1,77 +0,0 @@ -using Xunit; - -namespace BasicBlockChain.Core.Tests -{ - public class BlockChainTests - { - #region Test Data - - private static BlockChain GenerateTestData() - { - BlockChain nullCoin = new(genesisDate: new DateTime(2000, 1, 1), difficulty: 2); - nullCoin.AddTransaction(new Transaction("VAR", "NAM", 10_000_000, new DateTime(2000, 1, 2))); - nullCoin.ProcessPendingTransactions(new DateTime(2000, 1, 2), "Kable"); - nullCoin.AddTransaction(new Transaction("NAM", "VAR", 5_000_000, new DateTime(2000, 1, 3))); - nullCoin.ProcessPendingTransactions(new DateTime(2000, 1, 3), "Kable"); - nullCoin.AddTransaction(new Transaction("NAM", "VAR", 5_000_000, new DateTime(2000, 1, 4))); - nullCoin.ProcessPendingTransactions(new DateTime(2000, 1, 4), "Kable"); - return nullCoin; - } - - #endregion Test Data - - #region Verify - - [Fact] - public void Verify__Null() - { - BlockChain nullCoin = new(); - - bool result = nullCoin.Verify(); - - Assert.True(result); - } - - [Fact] - public void Verify__Valid() - { - BlockChain nullCoin = GenerateTestData(); - - bool result = nullCoin.Verify(); - - Assert.True(result); - } - - [Fact] - public void Verify__Tampered() - { - BlockChain nullCoin = GenerateTestData(); - nullCoin.Chain[1].Transactions[0].MicroCoinAmount = 1000_000_000; - - bool result = nullCoin.Verify(); - - Assert.False(result); - } - - #endregion Verify - - #region GetMicroCoinBalance - - [Fact] - public void GetMicroCoinBalance__Test() - { - BlockChain nullCoin = GenerateTestData(); - - long balanceVAR = nullCoin.GetMicroCoinBalance("VAR"); - long balanceNAM = nullCoin.GetMicroCoinBalance("NAM"); - long balanceKable = nullCoin.GetMicroCoinBalance("Kable"); - long expectedBalanceKable = nullCoin.Reward * 3; - - Assert.Equal(0, balanceVAR); - Assert.Equal(0, balanceNAM); - Assert.Equal(expectedBalanceKable, balanceKable); - } - - #endregion GetMicroCoinBalance - } -} \ No newline at end of file diff --git a/BasicBlockChain.Core.Tests/Properties/AssemblyInfo.cs b/BasicBlockChain.Core.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index 3c1e4fc..0000000 --- a/BasicBlockChain.Core.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("BasicBlockChain.Core.Tests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("BasicBlockChain.Core.Tests")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f3b0eb12-6f98-4afe-8405-bd687a04e8d0")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BasicBlockChain.Core.Tests/packages.config b/BasicBlockChain.Core.Tests/packages.config deleted file mode 100644 index fcf029f..0000000 --- a/BasicBlockChain.Core.Tests/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/BasicBlockChain.Core/BasicBlockChain.Core.csproj b/BasicBlockChain.Core/BasicBlockChain.Core.csproj deleted file mode 100644 index b0e934f..0000000 --- a/BasicBlockChain.Core/BasicBlockChain.Core.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - net7.0 - enable - BasicBlockChain.Core - false - - - - - - \ No newline at end of file diff --git a/BasicBlockChain.Core/Block.cs b/BasicBlockChain.Core/Block.cs deleted file mode 100644 index 4bd8bca..0000000 --- a/BasicBlockChain.Core/Block.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Security.Cryptography; -using System.Text; -using VAR.Json; - -namespace BasicBlockChain.Core -{ - public class Block - { - public int Index { get; set; } - public DateTime Date { get; set; } - public string PreviousHash { get; set; } - public List Transactions { get; set; } = new(); - public string Hash { get; set; } - public int Nonce { get; set; } - - public Block() { } - - public Block(DateTime date, Block previousBlock, IList transactions) - { - Index = (previousBlock?.Index ?? -1) + 1; - Date = date; - PreviousHash = previousBlock?.Hash; - if (transactions != null) { Transactions.AddRange(transactions); } - Nonce = 0; - Hash = CalculateHash(); - } - - private string GetData() - { - return JsonWriter.WriteObject(Transactions); - } - - public string CalculateHash(string data = null, SHA256 sha256 = null) - { - if (sha256 == null) { sha256 = SHA256.Create(); } - if (data == null) - { - data = GetData(); - } - byte[] dataBytes = Encoding.UTF8.GetBytes(string.Format("{0}-{1}-{2}-{3}", - Date, - PreviousHash, - data, - Nonce)); - byte[] hashBytes = sha256.ComputeHash(dataBytes); - - string hash = Convert.ToBase64String(hashBytes); - return hash; - } - - public void Mine(int difficulty) - { - SHA256 sha256 = SHA256.Create(); - var leadingZeros = new string('0', difficulty); - string data = GetData(); - while (Hash.Substring(0, difficulty) != leadingZeros) - { - Nonce++; - Hash = CalculateHash(data, sha256); - } - } - } -} diff --git a/BasicBlockChain.Core/BlockChain.cs b/BasicBlockChain.Core/BlockChain.cs deleted file mode 100644 index c428fce..0000000 --- a/BasicBlockChain.Core/BlockChain.cs +++ /dev/null @@ -1,145 +0,0 @@ -namespace BasicBlockChain.Core -{ - public class BlockChain - { - public List PendingTransactions { get; } = new(); - public List Chain { get; set; } = new(); - public int Difficulty { get; set; } = 2; - public int Reward { get; set; } = 1_000_000; - - private List _users; - - public List Users - { - get - { - if (_users == null) - { - InitUsers(); - } - return _users; - } - set - { - _users = value; - } - } - - private void InitUsers() - { - _users = new List(); - foreach (Block block in Chain) - { - foreach (Transaction transaction in block.Transactions) - { - AddUser(transaction.Sender, false); - AddUser(transaction.Receiver, false); - } - } - } - - private void AddUser(string user, bool init = true) - { - if (string.IsNullOrEmpty(user)) { return; } - if (_users == null) - { - if (init) - { - InitUsers(); - } - else - { - return; - } - } - if (_users.Contains(user)) { return; } - _users.Add(user); - } - - private void AddUsersOfBlock(Block block) - { - foreach (Transaction transaction in block.Transactions) - { - AddUser(transaction.Sender); - AddUser(transaction.Receiver); - } - } - - public BlockChain() { } - - public BlockChain(DateTime? genesisDate = null, int difficulty = 2, int reward = 1_000_000) - { - Block genesisBlock = new(genesisDate ?? DateTime.UtcNow, null, null); - genesisBlock.Mine(difficulty); - Difficulty = difficulty; - Reward = reward; - Chain.Add(genesisBlock); - } - - public void AddBlock(DateTime date, IList transactions) - { - Block lastBlock = Chain.Last(); - Block newBlock = new(date, lastBlock, transactions); - newBlock.Mine(Difficulty); - AddUsersOfBlock(newBlock); - Chain.Add(newBlock); - } - - public void AddTransaction(Transaction transaction) - { - PendingTransactions.Add(transaction); - } - - public void ProcessPendingTransactions(DateTime date, string miner) - { - Block lastBlock = Chain.Last(); - Block newBlock = new(date, lastBlock, PendingTransactions); - newBlock.Transactions.Add(new Transaction(null, miner, Reward, date)); - newBlock.Mine(Difficulty); - AddUsersOfBlock(newBlock); - Chain.Add(newBlock); - PendingTransactions.Clear(); - } - - public bool Verify() - { - for (int i = 1; i < Chain.Count; i++) - { - Block currentBlock = Chain[i]; - Block previousBlock = Chain[i - 1]; - - string currentBlockHashRecalculated = currentBlock.CalculateHash(); - if (currentBlock.Hash != currentBlockHashRecalculated || currentBlock.PreviousHash != previousBlock.Hash) - { - return false; - } - } - return true; - } - - public long GetMicroCoinBalance(string receiver) - { - long microCoinBalance = 0; - - for (int i = 0; i < Chain.Count; i++) - { - for (int j = 0; j < Chain[i].Transactions.Count; j++) - { - var transaction = Chain[i].Transactions[j]; - - if (transaction.Sender == receiver) - { - microCoinBalance -= transaction.MicroCoinAmount; - } - - if (transaction.Receiver == receiver) - { - microCoinBalance += transaction.MicroCoinAmount; - } - } - } - - return microCoinBalance; - } - } -} diff --git a/BasicBlockChain.Core/Properties/AssemblyInfo.cs b/BasicBlockChain.Core/Properties/AssemblyInfo.cs deleted file mode 100644 index 29617bc..0000000 --- a/BasicBlockChain.Core/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("BasicBlockChain.Core")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("BasicBlockChain.Core")] -[assembly: AssemblyCopyright("Copyright © VAR 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("919bc116-c8fc-4b65-b742-226b38437c48")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BasicBlockChain.Core/Transaction.cs b/BasicBlockChain.Core/Transaction.cs deleted file mode 100644 index 3ae3db4..0000000 --- a/BasicBlockChain.Core/Transaction.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace BasicBlockChain.Core -{ - public class Transaction - { - public string Sender { get; set; } - public string Receiver { get; set; } - public long MicroCoinAmount { get; set; } - public DateTime Date { get; set; } - - public Transaction() { } - - public Transaction(string sender, string receiver, long microCoinAmount, DateTime date) - { - Sender = sender; - Receiver = receiver; - MicroCoinAmount = microCoinAmount; - Date = date; - } - } -} diff --git a/BasicBlockChain.Core/packages.config b/BasicBlockChain.Core/packages.config deleted file mode 100644 index 7528811..0000000 --- a/BasicBlockChain.Core/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/BasicBlockChain.UI/.gitignore b/BasicBlockChain.UI/.gitignore deleted file mode 100644 index 8afdcb6..0000000 --- a/BasicBlockChain.UI/.gitignore +++ /dev/null @@ -1,454 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -## -## Visual studio for Mac -## - - -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# JetBrains Rider -.idea/ -*.sln.iml - -## -## Visual Studio Code -## -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json diff --git a/BasicBlockChain.UI/App.axaml b/BasicBlockChain.UI/App.axaml deleted file mode 100644 index 411eeb6..0000000 --- a/BasicBlockChain.UI/App.axaml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BasicBlockChain.UI/App.axaml.cs b/BasicBlockChain.UI/App.axaml.cs deleted file mode 100644 index ec5bf8b..0000000 --- a/BasicBlockChain.UI/App.axaml.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Avalonia; -using Avalonia.Controls.ApplicationLifetimes; -using Avalonia.Markup.Xaml; - -namespace BasicBlockChain.UI -{ - public partial class App : Application - { - public override void Initialize() - { - AvaloniaXamlLoader.Load(this); - } - - public override void OnFrameworkInitializationCompleted() - { - if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) - { - desktop.MainWindow = new MainWindow(); - } - - base.OnFrameworkInitializationCompleted(); - } - } -} \ No newline at end of file diff --git a/BasicBlockChain.UI/BasicBlockChain.UI.csproj b/BasicBlockChain.UI/BasicBlockChain.UI.csproj deleted file mode 100644 index bc893df..0000000 --- a/BasicBlockChain.UI/BasicBlockChain.UI.csproj +++ /dev/null @@ -1,27 +0,0 @@ - - - WinExe - net6.0 - enable - - copyused - true - - - - - - - - - - - - - - - - - diff --git a/BasicBlockChain.UI/MainWindow.axaml b/BasicBlockChain.UI/MainWindow.axaml deleted file mode 100644 index ac7c686..0000000 --- a/BasicBlockChain.UI/MainWindow.axaml +++ /dev/null @@ -1,9 +0,0 @@ - - Welcome to Avalonia! - diff --git a/BasicBlockChain.UI/MainWindow.axaml.cs b/BasicBlockChain.UI/MainWindow.axaml.cs deleted file mode 100644 index 5f586d9..0000000 --- a/BasicBlockChain.UI/MainWindow.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace BasicBlockChain.UI -{ - public partial class MainWindow : Window - { - public MainWindow() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/BasicBlockChain.UI/Program.cs b/BasicBlockChain.UI/Program.cs deleted file mode 100644 index 862c398..0000000 --- a/BasicBlockChain.UI/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Avalonia; -using System; - -namespace BasicBlockChain.UI -{ - class Program - { - // Initialization code. Don't use any Avalonia, third-party APIs or any - // SynchronizationContext-reliant code before AppMain is called: things aren't initialized - // yet and stuff might break. - [STAThread] - public static void Main(string[] args) => BuildAvaloniaApp() - .StartWithClassicDesktopLifetime(args); - - // Avalonia configuration, don't remove; also used by visual designer. - public static AppBuilder BuildAvaloniaApp() - => AppBuilder.Configure() - .UsePlatformDetect() - .LogToTrace(); - } -} \ No newline at end of file diff --git a/BasicBlockChain.sln b/BasicBlockChain.sln deleted file mode 100644 index fdff011..0000000 --- a/BasicBlockChain.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28803.452 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicBlockChain", "BasicBlockChain\BasicBlockChain.csproj", "{34581A96-29BE-4AB6-9298-BC1AD3E78369}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicBlockChain.Core", "BasicBlockChain.Core\BasicBlockChain.Core.csproj", "{919BC116-C8FC-4B65-B742-226B38437C48}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicBlockChain.Core.Tests", "BasicBlockChain.Core.Tests\BasicBlockChain.Core.Tests.csproj", "{F3B0EB12-6F98-4AFE-8405-BD687A04E8D0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicBlockChain.UI", "BasicBlockChain.UI\BasicBlockChain.UI.csproj", "{FF7A4972-ABB2-4535-9F12-08ACBD12FA8B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {34581A96-29BE-4AB6-9298-BC1AD3E78369}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {34581A96-29BE-4AB6-9298-BC1AD3E78369}.Debug|Any CPU.Build.0 = Debug|Any CPU - {34581A96-29BE-4AB6-9298-BC1AD3E78369}.Release|Any CPU.ActiveCfg = Release|Any CPU - {34581A96-29BE-4AB6-9298-BC1AD3E78369}.Release|Any CPU.Build.0 = Release|Any CPU - {919BC116-C8FC-4B65-B742-226B38437C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {919BC116-C8FC-4B65-B742-226B38437C48}.Debug|Any CPU.Build.0 = Debug|Any CPU - {919BC116-C8FC-4B65-B742-226B38437C48}.Release|Any CPU.ActiveCfg = Release|Any CPU - {919BC116-C8FC-4B65-B742-226B38437C48}.Release|Any CPU.Build.0 = Release|Any CPU - {F3B0EB12-6F98-4AFE-8405-BD687A04E8D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F3B0EB12-6F98-4AFE-8405-BD687A04E8D0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F3B0EB12-6F98-4AFE-8405-BD687A04E8D0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F3B0EB12-6F98-4AFE-8405-BD687A04E8D0}.Release|Any CPU.Build.0 = Release|Any CPU - {FF7A4972-ABB2-4535-9F12-08ACBD12FA8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF7A4972-ABB2-4535-9F12-08ACBD12FA8B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF7A4972-ABB2-4535-9F12-08ACBD12FA8B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF7A4972-ABB2-4535-9F12-08ACBD12FA8B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {48CECB6D-7E06-474E-9AB9-3EC17F135997} - EndGlobalSection -EndGlobal diff --git a/BasicBlockChain.sln.DotSettings b/BasicBlockChain.sln.DotSettings deleted file mode 100644 index 477d6d5..0000000 --- a/BasicBlockChain.sln.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - UseExplicitType \ No newline at end of file diff --git a/BasicBlockChain.sln.DotSettings.user b/BasicBlockChain.sln.DotSettings.user deleted file mode 100644 index 79b95dc..0000000 --- a/BasicBlockChain.sln.DotSettings.user +++ /dev/null @@ -1,7 +0,0 @@ - - ShowAndRun - <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> - <Solution /> -</SessionState> - True - True \ No newline at end of file diff --git a/BasicBlockChain/BasicBlockChain.csproj b/BasicBlockChain/BasicBlockChain.csproj deleted file mode 100644 index f61f646..0000000 --- a/BasicBlockChain/BasicBlockChain.csproj +++ /dev/null @@ -1,85 +0,0 @@ - - - - - Debug - AnyCPU - {34581A96-29BE-4AB6-9298-BC1AD3E78369} - WinExe - BasicBlockChain - BasicBlockChain - v4.8 - 512 - true - true - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - blocks.ico - - - - - - - - - - - - - - ..\packages\VAR.Json.1.2.0.1065\lib\net461\VAR.Json.dll - - - - - Form - - - FrmMain.cs - - - - - - - {919bc116-c8fc-4b65-b742-226b38437c48} - BasicBlockChain.Core - - - - - FrmMain.cs - - - - - - - - - - \ No newline at end of file diff --git a/BasicBlockChain/FrmMain.Designer.cs b/BasicBlockChain/FrmMain.Designer.cs deleted file mode 100644 index 923a35e..0000000 --- a/BasicBlockChain/FrmMain.Designer.cs +++ /dev/null @@ -1,250 +0,0 @@ -namespace BasicBlockChain -{ - partial class FrmMain - { - /// - /// 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(FrmMain)); - this.lsbTransactions = new System.Windows.Forms.ListBox(); - this.lsbPendingTransactions = new System.Windows.Forms.ListBox(); - this.btnMine = new System.Windows.Forms.Button(); - this.grpAddTransaction = new System.Windows.Forms.GroupBox(); - this.btnClearAmount = new System.Windows.Forms.Button(); - this.btnClearTo = new System.Windows.Forms.Button(); - this.btnClearFrom = new System.Windows.Forms.Button(); - this.numAmount = new System.Windows.Forms.NumericUpDown(); - this.txtTo = new System.Windows.Forms.TextBox(); - this.txtFrom = new System.Windows.Forms.TextBox(); - this.lblAmount = new System.Windows.Forms.Label(); - this.lblTo = new System.Windows.Forms.Label(); - this.lblFrom = new System.Windows.Forms.Label(); - this.btnAdd = new System.Windows.Forms.Button(); - this.txtMinerName = new System.Windows.Forms.TextBox(); - this.lsbUsers = new System.Windows.Forms.ListBox(); - this.grpAddTransaction.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numAmount)).BeginInit(); - this.SuspendLayout(); - // - // lsbTransactions - // - this.lsbTransactions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lsbTransactions.FormattingEnabled = true; - this.lsbTransactions.Location = new System.Drawing.Point(12, 129); - this.lsbTransactions.Name = "lsbTransactions"; - this.lsbTransactions.Size = new System.Drawing.Size(225, 368); - this.lsbTransactions.TabIndex = 0; - // - // lsbPendingTransactions - // - this.lsbPendingTransactions.FormattingEnabled = true; - this.lsbPendingTransactions.Location = new System.Drawing.Point(12, 12); - this.lsbPendingTransactions.Name = "lsbPendingTransactions"; - this.lsbPendingTransactions.Size = new System.Drawing.Size(225, 82); - this.lsbPendingTransactions.TabIndex = 1; - // - // btnMine - // - this.btnMine.Location = new System.Drawing.Point(162, 100); - this.btnMine.Name = "btnMine"; - this.btnMine.Size = new System.Drawing.Size(75, 23); - this.btnMine.TabIndex = 2; - this.btnMine.Text = "Mine"; - this.btnMine.UseVisualStyleBackColor = true; - this.btnMine.Click += new System.EventHandler(this.btnMine_Click); - // - // grpAddTransaction - // - this.grpAddTransaction.Controls.Add(this.btnClearAmount); - this.grpAddTransaction.Controls.Add(this.btnClearTo); - this.grpAddTransaction.Controls.Add(this.btnClearFrom); - this.grpAddTransaction.Controls.Add(this.numAmount); - this.grpAddTransaction.Controls.Add(this.txtTo); - this.grpAddTransaction.Controls.Add(this.txtFrom); - this.grpAddTransaction.Controls.Add(this.lblAmount); - this.grpAddTransaction.Controls.Add(this.lblTo); - this.grpAddTransaction.Controls.Add(this.lblFrom); - this.grpAddTransaction.Controls.Add(this.btnAdd); - this.grpAddTransaction.Location = new System.Drawing.Point(243, 12); - this.grpAddTransaction.Name = "grpAddTransaction"; - this.grpAddTransaction.Size = new System.Drawing.Size(175, 132); - this.grpAddTransaction.TabIndex = 3; - this.grpAddTransaction.TabStop = false; - this.grpAddTransaction.Text = "Add transaction"; - // - // btnClearAmount - // - this.btnClearAmount.Location = new System.Drawing.Point(148, 71); - this.btnClearAmount.Name = "btnClearAmount"; - this.btnClearAmount.Size = new System.Drawing.Size(21, 20); - this.btnClearAmount.TabIndex = 10; - this.btnClearAmount.Text = "X"; - this.btnClearAmount.UseVisualStyleBackColor = true; - this.btnClearAmount.Click += new System.EventHandler(this.btnClearAmount_Click); - // - // btnClearTo - // - this.btnClearTo.Location = new System.Drawing.Point(148, 45); - this.btnClearTo.Name = "btnClearTo"; - this.btnClearTo.Size = new System.Drawing.Size(21, 20); - this.btnClearTo.TabIndex = 9; - this.btnClearTo.Text = "X"; - this.btnClearTo.UseVisualStyleBackColor = true; - this.btnClearTo.Click += new System.EventHandler(this.btnClearTo_Click); - // - // btnClearFrom - // - this.btnClearFrom.Location = new System.Drawing.Point(148, 19); - this.btnClearFrom.Name = "btnClearFrom"; - this.btnClearFrom.Size = new System.Drawing.Size(21, 20); - this.btnClearFrom.TabIndex = 8; - this.btnClearFrom.Text = "X"; - this.btnClearFrom.UseVisualStyleBackColor = true; - this.btnClearFrom.Click += new System.EventHandler(this.btnClearFrom_Click); - // - // numAmount - // - this.numAmount.Location = new System.Drawing.Point(47, 71); - this.numAmount.Maximum = new decimal(new int[] { - -1, - 2147483647, - 0, - 0}); - this.numAmount.Name = "numAmount"; - this.numAmount.Size = new System.Drawing.Size(95, 20); - this.numAmount.TabIndex = 7; - // - // txtTo - // - this.txtTo.Location = new System.Drawing.Point(47, 45); - this.txtTo.Name = "txtTo"; - this.txtTo.Size = new System.Drawing.Size(95, 20); - this.txtTo.TabIndex = 5; - // - // txtFrom - // - this.txtFrom.Location = new System.Drawing.Point(47, 19); - this.txtFrom.Name = "txtFrom"; - this.txtFrom.Size = new System.Drawing.Size(95, 20); - this.txtFrom.TabIndex = 4; - // - // lblAmount - // - this.lblAmount.AutoSize = true; - this.lblAmount.Location = new System.Drawing.Point(6, 74); - this.lblAmount.Name = "lblAmount"; - this.lblAmount.Size = new System.Drawing.Size(43, 13); - this.lblAmount.TabIndex = 3; - this.lblAmount.Text = "Amount"; - // - // lblTo - // - this.lblTo.AutoSize = true; - this.lblTo.Location = new System.Drawing.Point(6, 48); - this.lblTo.Name = "lblTo"; - this.lblTo.Size = new System.Drawing.Size(20, 13); - this.lblTo.TabIndex = 2; - this.lblTo.Text = "To"; - // - // lblFrom - // - this.lblFrom.AutoSize = true; - this.lblFrom.Location = new System.Drawing.Point(6, 22); - this.lblFrom.Name = "lblFrom"; - this.lblFrom.Size = new System.Drawing.Size(30, 13); - this.lblFrom.TabIndex = 1; - this.lblFrom.Text = "From"; - // - // btnAdd - // - this.btnAdd.Location = new System.Drawing.Point(94, 97); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.Size = new System.Drawing.Size(75, 23); - this.btnAdd.TabIndex = 0; - this.btnAdd.Text = "Add"; - this.btnAdd.UseVisualStyleBackColor = true; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // - // txtMinerName - // - this.txtMinerName.Location = new System.Drawing.Point(69, 103); - this.txtMinerName.Name = "txtMinerName"; - this.txtMinerName.Size = new System.Drawing.Size(87, 20); - this.txtMinerName.TabIndex = 4; - // - // lsbUsers - // - this.lsbUsers.FormattingEnabled = true; - this.lsbUsers.Location = new System.Drawing.Point(243, 150); - this.lsbUsers.Name = "lsbUsers"; - this.lsbUsers.Size = new System.Drawing.Size(175, 134); - this.lsbUsers.TabIndex = 5; - this.lsbUsers.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lsbUsers_MouseDoubleClick); - // - // FrmMain - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(430, 521); - this.Controls.Add(this.lsbUsers); - this.Controls.Add(this.txtMinerName); - this.Controls.Add(this.grpAddTransaction); - this.Controls.Add(this.btnMine); - this.Controls.Add(this.lsbPendingTransactions); - this.Controls.Add(this.lsbTransactions); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FrmMain"; - this.Text = "BasicBlockChain"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMain_FormClosing); - this.grpAddTransaction.ResumeLayout(false); - this.grpAddTransaction.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numAmount)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.ListBox lsbTransactions; - private System.Windows.Forms.ListBox lsbPendingTransactions; - private System.Windows.Forms.Button btnMine; - private System.Windows.Forms.GroupBox grpAddTransaction; - private System.Windows.Forms.TextBox txtTo; - private System.Windows.Forms.TextBox txtFrom; - private System.Windows.Forms.Label lblAmount; - private System.Windows.Forms.Label lblTo; - private System.Windows.Forms.Label lblFrom; - private System.Windows.Forms.Button btnAdd; - private System.Windows.Forms.TextBox txtMinerName; - private System.Windows.Forms.Button btnClearAmount; - private System.Windows.Forms.Button btnClearTo; - private System.Windows.Forms.Button btnClearFrom; - private System.Windows.Forms.NumericUpDown numAmount; - private System.Windows.Forms.ListBox lsbUsers; - } -} \ No newline at end of file diff --git a/BasicBlockChain/FrmMain.cs b/BasicBlockChain/FrmMain.cs deleted file mode 100644 index 13a90e1..0000000 --- a/BasicBlockChain/FrmMain.cs +++ /dev/null @@ -1,179 +0,0 @@ -using System; -using System.IO; -using System.Windows.Forms; -using BasicBlockChain.Core; -using VAR.Json; - -namespace BasicBlockChain -{ - public partial class FrmMain : Form - { - private BlockChain _nullCoin = null; - - public FrmMain() - { - InitializeComponent(); - InitBlockChain(); - } - - private void btnAdd_Click(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(txtTo.Text) || string.IsNullOrEmpty(txtFrom.Text)) { return; } - long amount = (long)numAmount.Value; - _nullCoin.AddTransaction(new Transaction(txtFrom.Text, txtTo.Text, amount, DateTime.UtcNow)); - txtTo.Text = string.Empty; - txtFrom.Text = string.Empty; - numAmount.Value = 0; - Lists_Update(); - } - - private void btnMine_Click(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(txtMinerName.Text)) { return; } - _nullCoin.ProcessPendingTransactions(DateTime.UtcNow, txtMinerName.Text); - Lists_Update(); - } - - private void btnClearFrom_Click(object sender, EventArgs e) - { - txtFrom.Text = string.Empty; - } - - private void btnClearTo_Click(object sender, EventArgs e) - { - txtTo.Text = string.Empty; - } - - private void btnClearAmount_Click(object sender, EventArgs e) - { - numAmount.Value = 0; - } - - private void lsbUsers_MouseDoubleClick(object sender, MouseEventArgs e) - { - Wallet wallet = (Wallet)lsbUsers.SelectedItem; - if (wallet == null) { return; } - if (string.IsNullOrEmpty(txtFrom.Text)) - { - txtFrom.Text = wallet.User; - return; - } - if (string.IsNullOrEmpty(txtTo.Text)) - { - txtTo.Text = wallet.User; - return; - } - } - private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) - { - SaveBlockChain(); - } - - private void Lists_Update() - { - lsbTransactions.Items.Clear(); - foreach (Block block in _nullCoin.Chain) - { - foreach (Transaction transaction in block.Transactions) - { - lsbTransactions.Items.Add(Transaction_ToString(transaction)); - } - } - - lsbPendingTransactions.Items.Clear(); - foreach (Transaction transaction in _nullCoin.PendingTransactions) - { - lsbPendingTransactions.Items.Add(Transaction_ToString(transaction)); - } - - lsbUsers.Items.Clear(); - foreach (string user in _nullCoin.Users) - { - long amount = _nullCoin.GetMicroCoinBalance(user); - lsbUsers.Items.Add(new Wallet { User = user, Amount = amount }); - } - } - - public class Wallet - { - public string User { get; set; } - public long Amount { get; set; } - - public override string ToString() - { - return string.Format("{0} - {1}", User, Amount); - } - } - - private string Transaction_ToString(Transaction transaction) - { - return string.Format("{0} - {1} - {2} - {3}", transaction.Date, transaction.Sender, transaction.Receiver, transaction.MicroCoinAmount); - } - - private const string BlockChainFile = "BlockChain.{0}.json"; - private const string BlockChainLock = "BlockChain.{0}.lock"; - private int _currentFile = 0; - - private void InitBlockChain() - { - FrmMainBlockChain blockChain = null; - - string blockChainLock; - do - { - blockChainLock = string.Format(BlockChainLock, _currentFile); - if (File.Exists(blockChainLock) == false) { break; } - _currentFile++; - } while (true); - File.WriteAllText(blockChainLock, "Lock"); - - string blockChainFile = string.Format(BlockChainFile, _currentFile); - if (File.Exists(blockChainFile)) - { - string contentBlockChainFile = File.ReadAllText(blockChainFile); - blockChain = JsonParser.ParseText(contentBlockChainFile, typeof(FrmMainBlockChain), typeof(BlockChain), typeof(Block), typeof(Transaction)) as FrmMainBlockChain; - } - - if (blockChain != null) - { - _nullCoin = blockChain.BlockChain; - txtMinerName.Text = blockChain.Miner; - } - else - { - _nullCoin = new BlockChain(genesisDate: new DateTime(2000, 1, 1), difficulty: 2); - txtMinerName.Text = string.Empty; - } - Lists_Update(); - } - - private void SaveBlockChain() - { - string blockChainFile = string.Format(BlockChainFile, _currentFile); - if (File.Exists(blockChainFile)) - { - File.Delete(blockChainFile); - } - FrmMainBlockChain blockChain = new FrmMainBlockChain - { - BlockChain = _nullCoin, - Miner = txtMinerName.Text, - }; - string strBlockChain = JsonWriter.WriteObject(blockChain, indent: true); - File.WriteAllText(blockChainFile, strBlockChain); - - string blockChainLock = string.Format(BlockChainLock, _currentFile); - if (File.Exists(blockChainLock)) - { - File.Delete(blockChainLock); - } - } - - public class FrmMainBlockChain - { - public BlockChain BlockChain { get; set; } - public string Miner { get; set; } - - }; - } -} diff --git a/BasicBlockChain/FrmMain.resx b/BasicBlockChain/FrmMain.resx deleted file mode 100644 index 1eaa6e7..0000000 --- a/BasicBlockChain/FrmMain.resx +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAHYCAAB2AgAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBA - AAhATgCDQE0A6kBNAOpBTQCCSUkABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAEFMAC9ATQDQQE0A/0BNAP9ATQD/QE0A/0BNANQ+TgAxAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAM2YABUBNAHdATQD6QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A+kBO - AIBVVQADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ04ALkBNAM5ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0AxkBOACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAEQE0Adz9NAPlATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQDyQU4AZgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABASwAsQE4AzEBN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQC3RU4AGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBA - AARATQB3QE0A+EBNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAOo/TABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAEBLACxATgDMQE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAv9BThL/QE0A/0BN - AP9ATQD/QE0A/0FOC/9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0FNAJ5JSQAOAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAVVUAA0BNAHdATQD4QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0NO - If9NUb7/Rk5V/0BNAP9ATQD/QE0A/0BNAP9GTlX/TFCs/0FNFP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A4EBMAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQlAAI0BOAMJATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0B/0dPZv9RUvP/UlL//0ZOVf9ATQD/QE0A/0BNAP9ATQD/Rk5V/1JS//9RUun/RU5O/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD+P00AkUlJAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAACQU4AZj9NAPVATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/Qk0g/05Rvf9SUv//UlL//1JS//9GTlX/QE0A/0BNAP9ATQD/QE0A/0ZO - Vf9SUv//UlL//1JS//9MUKH/QU0M/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQDUQk0AMgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNTQAKQE0AvkBN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQH/R09o/1FS8/9SUv//UlL//1JS//9SUv//Rk5V/0BN - AP9ATQD/QE0A/0BNAP9GTlX/UlL//1JS//9SUv//UlL//1BS3P9ETjr/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/z9NAPk/TQBxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAP04AeUBNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9CTh7/TVG7/1JS//9SUv//UlL//1JS - //9SUv//UlL//0ZOVf9ATQD/QE0A/0BNAP9ATQD/Rk5V/1JS//9SUv//UlL//1JS//9SUv//UlL8/0pQ - hf9ATQb/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0FOAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBNAKhATQD/QE0A/0BNAP9ATQD/QE0A/0BNAf9HT2T/UVHx/1JS - //9SUv//UlL//1JS//9SUv//UlL//1JS//9GTlX/QE0A/0BNAP9ATQD/QE0A/0ZOVf9SUv//UlL//1JS - //9SUv//UlL//1JS//9SUv//TlHO/0NOK/9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP8/TgChAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/0FN - F/9NUbf/UlL//1JS//9SUv//UlL//1JS//9SUv//UlL//1JS//9SUv//Rk5V/0BNAP9ATQD/QE0A/0BN - AP9GTlX/UlL//1JS//9SUv//UlL//1JS//9SUv//UlL//1JS//9RUff/SFBy/0BNAv9ATQD/QE0A/0BN - AP9ATQD/QU0AqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBN - AP9ATQD/QE0A/0BNAP9GTlX/UlL//1JS//9SUv//UlL//1JS//9SUv//UlL//1JS//9SUv//UlL//0ZO - Vf9ATQD/QE0A/0BNAP9ATQD/Rk5V/1JS//9SUv//UlL//1JS//9SUv//UlL//1JS//9SUv//UlL//1JS - //9FTlL/QE0A/0BNAP9ATQD/QE0A/0FNAKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAEFNAKpATQD/QE0A/0BNAP9ATQD/Rk5V/1JS//9SUv//UlL//1JS//9SUv//UlL//1JS - //9SUv//UlL//1JS//9GTlX/QE0A/0BNAP9ATQD/QE0A/0ZOVf9SUv//UlL//1JS//9SUv//UlL//1JS - //9SUv//UlL//1JS//9SUv//Rk5V/0BNAP9ATQD/QE0A/0BNAP9BTQCqAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/0ZOVf9SUv//UlL//1JS - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNAKpATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/Qk8A/2+CAP+ivAD/pb8A/6W/AP9icwD/QE0A/0BNAP9ATQD/QE0A/2FzAP+lvwD/pb8A/5+4 - AP9ldgD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9BTQCqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/UF8A/5CnAP+lvwD/pb8A/6W/AP+lvwD/YnMA/0BNAP9ATQD/QE0A/0BN - AP9hcwD/pb8A/6W/AP+lvwD/pb8A/4OZAP9HVQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QU0AqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/aHoA/6K7AP+lvwD/pb8A/6W/AP+lvwD/pb8A/2Jz - AP9ATQD/QE0A/0BNAP9ATQD/YXMA/6W/AP+lvwD/pb8A/6W/AP+lvwD/m7QA/11uAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0FNAKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAEFNAKpATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9NXAD/jaQA/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP9icwD/QE0A/0BNAP9ATQD/QE0A/2FzAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+kvgD/fZIA/0RSAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9BTQCqAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/0FOAP9oegD/oboA/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/YnMA/0BNAP9ATQD/QE0A/0BNAP9hcwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+UrAD/VWQA/0BNAP9ATQD/QE0A/0BNAP9ATQD/P00AqQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBNAP9ATQD/QE0A/0BN - AP9hcgD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/2JzAP9ATQD/QE0A/0BN - AP9ATQD/YXMA/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6O9AP9YaQD/QE0A/0BN - AP9ATQD/QE0A/z9NAKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFN - AKpATQD/QE0A/0BNAP9ATQD/YnMA/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP9icwD/QE0A/0BNAP9ATQD/QE0A/2FzAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/YnMA/0BNAP9ATQD/QE0A/0BNAP8/TQCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/2JzAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/YnMA/0BNAP9ATQD/QE0A/0BNAP9hcwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/2JzAP9ATQD/QE0A/0BNAP9ATQD/P00AqQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBNAP9ATQD/QE0A/0BNAP9icwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/2JzAP9ATQD/QE0A/0BNAP9ATQD/YXMA/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP9icwD/QE0A/0BNAP9ATQD/QE0A/z9N - AKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNAKpATQD/QE0A/0BN - AP9ATQD/YnMA/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP9fcAD/QE0A/0BN - AP9ATQD/QE0A/15vAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/YnMA/0BN - AP9ATQD/QE0A/0BNAP8/TQCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABBTQCqQE0A/0BNAP9ATQD/QE0A/2JzAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6C5 - AP9neQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/ZXcA/5+5AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/2JzAP9ATQD/QE0A/0BNAP9ATQD/P00AqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBNAP9ATQD/QE0A/0BNAP9icwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/46mAP9OXQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9LWgD/i6IA/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP9icwD/QE0A/0BNAP9ATQD/QE0A/z9NAKkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNAKpATQD/QE0A/0BNAP9ATQD/YnMA/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/orsA/2+CAP9BTgD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0FOAP9oegD/orsA/6W/AP+lvwD/pb8A/6W/AP+lvwD/YnMA/0BNAP9ATQD/QE0A/0BN - AP8/TQCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BN - AP9ATQD/QE0A/2JzAP+lvwD/pb8A/6W/AP+lvwD/lKsA/1NjAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/1BfAP+RqAD/pb8A/6W/AP+lvwD/pb8A/2Jz - AP9ATQD/QE0A/0BNAP9ATQD/P00AqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAQU0AqkBNAP9ATQD/QE0A/0BNAP9icwD/pb8A/6W/AP+kvgD/dYkA/0JPAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/V2cA/1dmAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/Qk8A/3WJ - AP+kvgD/pb8A/6W/AP9icwD/QE0A/0BNAP9ATQD/QE0A/z9NAKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNAKpATQD/QE0A/0BNAP9ATQD/YnMA/6W/AP+XsAD/V2YA/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9CTwD/dYkA/6S+AP+kvgD/dYkA/0JPAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/V2cA/5evAP+lvwD/YnMA/0BNAP9ATQD/QE0A/0BNAP8/TQCpAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/2Jz - AP+AlQD/RVIA/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9QXwD/kagA/6W/AP+lvwD/pb8A/6W/ - AP+UqwD/U2MA/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9EUQD/eY4A/2FzAP9ATQD/QE0A/0BN - AP9ATQD/P00AqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBN - AP9ATQD/QE0A/0BNAP9CTwD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9tgAD/orsA/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6K8AP9ugQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9CTwD/QE0A/0BNAP9ATQD/QE0A/z9NAKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAEFNAKpATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0ta - AP+LogD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/46mAP9OXQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP8/TQCpAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQCqQE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/2JzAP+etwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/oLkA/2h6AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/P00AqQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU0AqkBNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/RlQA/4KXAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/iJ4A/0pYAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/z9NAKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFN - AKpATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/XG0A/5u0AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+dtgD/X3AA/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP8/TQCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAA/TgChQE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/R1UA/5KpAP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/5KpAP9HVQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0AoAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQU4AUkBNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9CTwD/dIgA/6O9AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/o70A/3SIAP9CTwD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0FO - AFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/TQBxP00A+UBN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9XZwD/lq4A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/l68A/1dnAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/P00A+T9NAHEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAEBLACxATQDOQE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0RRAP95jgD/pL4A/6W/ - AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/gJUA/0VSAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A1EJNADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2YABUBOAIBATQD8QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/1tsAP+bswD/pb8A/6W/AP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/AP+ctQD/X3AA/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD+P00AkUlJAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0wAOUBN - ANtATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/RlQA/4CWAP+lvwD/pb8A/6W/AP+lvwD/pb8A/6W/ - AP+EmgD/SFYA/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQDgQEwAQAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAA7TgANP00AmUBNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/YnMA/563 - AP+lvwD/pb8A/6C5AP9oegD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9BTQCqPEsAEQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/TQBJQE0A5kBNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9KWAD/iJ4A/46lAP9NXAD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AOo/TABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZR - ABY/TACxQE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0FOAP9BTgD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNALJDTgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9OAFVATQDvQE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/P00A9UBOAG8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkoAH0BNAL9ATQD/QE0A/0BN - AP9ATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD/QE0Axz5MACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABQE4Ab0BNAPhATQD/QE0A/0BNAP9ATQD/QE0A/0BNAP9ATQD6QE4AgFVVAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBTQArQE0AzkBNAP9ATQD/QE0A/0BNAP9ATQDUPk4AMQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJAAdBTQCCQE0A60BN - AOtATgCDSUkABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////+B/////////wD////////8AD////////gAH///////4AAP///////AAAP//////wAAAf - /////+AAAAf/////gAAAA/////8AAAAA/////AAAAAB////4AAAAAD////gAAAAAH///+AAAAAAf///4 - AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAA - H///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4 - AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAA - H///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4 - AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAAH///+AAAAAAf///4AAAAAB////gAAAAA - H////AAAAAA////+AAAAAH////8AAAAA/////8AAAAP/////4AAAB//////4AAAf//////wAAD////// - /wAAf///////gAH////////AA/////////AP////////+B////8= - - - \ No newline at end of file diff --git a/BasicBlockChain/Program.cs b/BasicBlockChain/Program.cs deleted file mode 100644 index 59cc372..0000000 --- a/BasicBlockChain/Program.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Windows.Forms; - -namespace BasicBlockChain -{ - internal class Program - { - [STAThread] - private static void Main(string[] args) - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new FrmMain()); - } - } -} diff --git a/BasicBlockChain/Properties/AssemblyInfo.cs b/BasicBlockChain/Properties/AssemblyInfo.cs deleted file mode 100644 index 03b87f6..0000000 --- a/BasicBlockChain/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("BasicBlockChain")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("BasicBlockChain")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("34581a96-29be-4ab6-9298-bc1ad3e78369")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BasicBlockChain/blocks.ico b/BasicBlockChain/blocks.ico deleted file mode 100644 index 8df318e04a1363fe5fadf98e61a9f1ca2b0eda1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 zcmZQzU}RuqaBu+83Je-f3=Con3=A3!3=9qo3=9nn5OD?&aA064V}f81cc8F?0|SSH zA49W)FT*PkcJyUv^7Le2A1L?G(_Tj(27L!#h6@h94FA#a6+1r$LwdS}o^~0hF|a!L zGL$>`GWTIg$cM4!o zcJO03gyu#xKQR7x_fPvD81(snP|$yz{s+kg2EF|6>gR{1AET}C&)%0|;()f98W@;B z<+Hsn!&iKMck)&E?-#fi>~E0&Ko}I)=z2h6AUPQJ30U~w(U*r%I9ze^WiX;jM3P{L zuP+0agD=BAbU&c-L2;e|k8_y6Ks3m&sA?I&X#ymNj01x1{CDxQ!W#yly4Bv7p^yaU zQ>@h9kD(IX{m6VLKe_+DfxA)S9NAyQ`X8d_&wsCg*8dK^Y;*E1Be}@0XZ4Cbt ziZJ~jo5%1!tA^n}p|An@9h4r>!wgg=5m|gutPErqy8VRsfe8%%C#+!jzjQyt|D<9} z|0fnhgyjf-gZu`<_~IWV55vtf8UDM65*H32H&N^{A`Jl9 zh0ot0xr{1?|BH5G`W@sqV*L+NJ9`Vme^A)~G7}#Lxrs>UQ>+YR7cRH>#xVTvU4q@; zApd|cDgFnkU$T$kf9)iO|1Lqe(*np%6nl(F13-46`yW(pgW`PQF8qE6`G-{hgY6Ms%hoyzo za)$r&cM=WY;R7-QWERLwSQrdu|4-jQnx8=a0{IW*Pf(cP!l1C4z8+F83|9X)OlA1*il>hP z@*A!+O-x>K31s+R*~jo7)K&zUg^UNf{3jHDAh+f=;O-NH(l%&}B(D*FegK(+&8~s= zKgeCUFfnx+$p0`*Y+Z?L-(dAWD6h`j4#~GL{}Drj+Df205ZRCT*n`dgZXpc+o2HZQ zZ}hO~n8)znD}r#I7)<_;$z}Kt8n;6C3%UHc+Zg_1>oXvy2YUJ+wAKjOZe%uSymHb? z%Hth9tUzXh%tp2gjlF>4fgK_Z0IfAcvm0gJ15`ejbTIq}jn$z0gH%4q43JqMGx6C8 zauboxr;0MrnnTdqLws%mwOOXEBR?&G+B+aK@Yw-!1IR5@@f3-MfY*By*w+DTvw+%p zq{KZjZ7By|h5=dsiX2SfeLa2*4Gz8xfAGaqbPmJ+*_#Qcg*jUZmvs)l3M zZR>!>-EF)X1d;6=jBI;f22TfHhG!tZ;=-Ud4XAC?x0K;OXwC?iI;i-N*#CkY7jA(J zV)i}^8=>w;sUKltpm81$hVgOGo1Fa^#F5P&N^E;ShENAzhW9x9hBaJ3YQg&|{221V z+jobOhq1WT$%{eW!Ixn_$X`U_<90p_s#uH~%0i3|ehm2p_DBuO{jbQ8=IG0yjbktD zu-^ZS90s6$TcADf4!#Vp!Pt+X86<|RhFRtO diff --git a/BasicBlockChain/packages.config b/BasicBlockChain/packages.config deleted file mode 100644 index 7528811..0000000 --- a/BasicBlockChain/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/issues/.keep b/issues/.keep new file mode 100644 index 0000000..e69de29