├── .bowerrc ├── .gitignore ├── Controllers └── HomeController.cs ├── Models ├── BankContext.cs ├── LoginUser.cs ├── Transaction.cs └── User.cs ├── Program.cs ├── Properties └── launchSettings.json ├── README.md ├── Startup.cs ├── Views ├── Home │ ├── Account.cshtml │ ├── Login.cshtml │ └── Register.cshtml ├── Shared │ └── _Layout.cshtml ├── _ViewImports.cshtml └── _ViewStart.cshtml ├── appsettings.json ├── bankaccount.csproj ├── bower.json └── wwwroot ├── _references.js ├── css └── site.css ├── favicon.ico └── js └── site.js /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "wwwroot/lib" 3 | } 4 | 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################### 2 | # compiled source # 3 | ################### 4 | *.com 5 | *.class 6 | *.dll 7 | *.exe 8 | *.pdb 9 | *.dll.config 10 | *.cache 11 | *.suo 12 | # Include dlls if they’re in the NuGet packages directory 13 | !/packages/*/lib/*.dll 14 | !/packages/*/lib/*/*.dll 15 | # Include dlls if they're in the CommonReferences directory 16 | !*CommonReferences/*.dll 17 | #################### 18 | # VS Upgrade stuff # 19 | #################### 20 | UpgradeLog.XML 21 | _UpgradeReport_Files/ 22 | ############### 23 | # Directories # 24 | ############### 25 | bin/ 26 | obj/ 27 | .vscode/ 28 | wwwroot/lib/ 29 | TestResults/ 30 | ################### 31 | # Web publish log # 32 | ################### 33 | *.Publish.xml 34 | ############# 35 | # Resharper # 36 | ############# 37 | /_ReSharper.* 38 | *.ReSharper.* 39 | ############ 40 | # Packages # 41 | ############ 42 | # it’s better to unpack these files and commit the raw source 43 | # git has its own built in compression methods 44 | *.7z 45 | *.dmg 46 | *.gz 47 | *.iso 48 | *.jar 49 | *.rar 50 | *.tar 51 | *.zip 52 | ###################### 53 | # Logs and databases # 54 | ###################### 55 | *.log 56 | *.sqlite 57 | # OS generated files # 58 | ###################### 59 | .DS_Store? 60 | ehthumbs.db 61 | Icon? 62 | Thumbs.db 63 | [Bb]in 64 | [Oo]bj 65 | [Tt]est[Rr]esults 66 | *.suo 67 | *.user 68 | *.[Cc]ache 69 | *[Rr]esharper* 70 | packages 71 | NuGet.exe 72 | _[Ss]cripts 73 | *.exe 74 | *.dll 75 | *.nupkg 76 | *.ncrunchsolution 77 | *.dot[Cc]over 78 | -------------------------------------------------------------------------------- /Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | // Adding all requirements. 2 | using System; 3 | using System.Linq; 4 | using System.Diagnostics; 5 | using System.Collections.Generic; 6 | using System.Threading.Tasks; 7 | using Microsoft.AspNetCore.Mvc; 8 | using Microsoft.AspNetCore.Http; 9 | using Microsoft.AspNetCore.Identity; 10 | using Microsoft.EntityFrameworkCore; 11 | using Newtonsoft.Json; 12 | using bankaccount.Models; 13 | 14 | namespace bankaccount.Controllers 15 | { 16 | public class HomeController : Controller 17 | { 18 | private BankContext dbContext; 19 | 20 | public HomeController(BankContext context) 21 | { 22 | // Link the variable dbContext to my model variable "context" so I can communicate with MySQL. 23 | dbContext = context; 24 | } 25 | 26 | [HttpGet("")] 27 | [HttpGet("Register")] 28 | 29 | // User will first come to this page and be prompted to register or redirect to the login page. 30 | public IActionResult Register() 31 | { 32 | // Render the Cshtml file titled "Register." 33 | return View("Register"); 34 | } 35 | 36 | [HttpPost("Register")] 37 | 38 | // Post request sent when user submits the registration form. 39 | public IActionResult Register(User user) 40 | { 41 | // First check to see whether the form submitted was valid and meets all Model requirements. 42 | 43 | if (ModelState.IsValid) 44 | { 45 | // If the form was valid but the email submitted is already in the Db, this will catch the error. 46 | 47 | if (dbContext.Users.Any(u => u.Email == user.Email)) 48 | { 49 | ModelState.AddModelError("Email", "Email already in use!"); 50 | // Return the "Register" cshtml file with error messages displayed. 51 | return View("Register"); 52 | } 53 | 54 | // If the form is valid and email is not already in the Db. A new user will be created. 55 | else 56 | { 57 | // First the user's password will be hashed for security purposes. 58 | PasswordHasher Hasher = new PasswordHasher(); 59 | user.Password = Hasher.HashPassword(user, user.Password); 60 | // Open the Db connection and add the user object to the database. 61 | dbContext.Add(user); 62 | // Save the changes to the Db and close the connection. 63 | dbContext.SaveChanges(); 64 | // Set the User's custom UserID in session thus allowing them to enter the app without having to login each time. 65 | HttpContext.Session.SetInt32("UserId", user.UserId); 66 | // Redirect to the User's custom account method with their UserID as the parameter. 67 | return RedirectToAction($"Account/{user.UserId}"); 68 | } 69 | } 70 | // If the model state is invalid the "Register" cshtml file will be rendered with error messages displayed. 71 | else 72 | { 73 | return View("Register"); 74 | } 75 | } 76 | 77 | [HttpGet("Login")] 78 | 79 | // The "Login" cshtml file will render a login page. 80 | public IActionResult Login() 81 | { 82 | return View("Login"); 83 | } 84 | 85 | [HttpPost("Login")] 86 | 87 | // Post request sent when user submits the Login form. 88 | public IActionResult Login(LoginUser user) 89 | { 90 | // First check to see whether the form submitted was valid and meets all Model requirements. 91 | if (ModelState.IsValid) 92 | { 93 | // Create a variable called userInDB to check if the submitted email is in the Db. 94 | var userInDb = dbContext.Users.FirstOrDefault(u => u.Email == user.Email); 95 | if (userInDb == null) 96 | { 97 | // If the email submitted is not in the Db "userInDb == null" then it will render the "Login" view with errors displayed. 98 | ModelState.AddModelError("Email", "Invalid Email/Password"); 99 | return View("Login"); 100 | } 101 | // Hash the submitted password. 102 | var hasher = new PasswordHasher(); 103 | // Check the submitted password to the password belonging to the submitted email. 104 | var result = hasher.VerifyHashedPassword(user, userInDb.Password, user.Password); 105 | if (result == 0) 106 | { 107 | // If result == 0, the passwords do not match and the "Login" view will be rendered with error messages. 108 | ModelState.AddModelError("Password", "Password does not exist!"); 109 | return View("Login"); 110 | } 111 | else 112 | { 113 | // If the password submitted matches the Db. The user's UserID will be stored in session and they will be granted access to their account. 114 | HttpContext.Session.SetInt32("UserId", userInDb.UserId); 115 | return Redirect($"Account/{userInDb.UserId}"); 116 | } 117 | } 118 | // Else if the model state is invalid the "Login" page will be rendered with error messages. 119 | else 120 | { 121 | return View("Login"); 122 | } 123 | } 124 | 125 | [HttpGet("Account/{User_Id}")] 126 | 127 | // Account info page of the user. Takes a User's UserId as the parameter. 128 | public IActionResult Account(int User_Id) 129 | { 130 | // If the user's UserID is not in session, this means they are not logged in and do not have access to the account. They will be redirected to the Login page. 131 | if (HttpContext.Session.GetInt32("UserId") == null) 132 | { 133 | return RedirectToAction("Login"); 134 | } 135 | // If the user tires to access someone else's account page. This will check the UserId in session and deny access to them before redirecting them to the Login page. 136 | if (HttpContext.Session.GetInt32("UserId") != User_Id) 137 | { 138 | int? UserId = HttpContext.Session.GetInt32("UserId"); 139 | return RedirectToAction("Login"); 140 | } 141 | // Db query which assigns a single user and their transactions to a User Object called "Current User" 142 | User CurrentUser = dbContext.Users.Include(user => user.Transactions).Where(user => user.UserId == User_Id).SingleOrDefault(); 143 | if (CurrentUser.Transactions != null) 144 | { 145 | // If the user has any posted transactions, they will be listed in descending order. 146 | CurrentUser.Transactions = CurrentUser.Transactions.OrderByDescending(trans => trans.CreatedAt).ToList(); 147 | } 148 | // Store the Current User object in a ViewBag and return the "Account" cshtml view. 149 | ViewBag.User = CurrentUser; 150 | return View("Account"); 151 | } 152 | 153 | [HttpPost("Transaction")] 154 | 155 | // Post request when a user submits a transaction. This method takes a decimal amount as a parameter to deposit. 156 | public IActionResult Transaction(decimal amount) 157 | { 158 | // Retrieve the Current User from the Db using their UserID which is stored in session. 159 | User CurrentUser = dbContext.Users.SingleOrDefault(u => u.UserId == HttpContext.Session.GetInt32("UserId")); 160 | if (amount > 0) 161 | { 162 | // If the amount deposited is greater than 0. The amount will be added to the user's balance. 163 | CurrentUser.Balance += amount; 164 | // Create a new transaction object. 165 | Transaction NewTransaction = new Transaction 166 | { 167 | Amount = amount, 168 | CreatedAt = DateTime.Now, 169 | UserId = CurrentUser.UserId 170 | }; 171 | // Add and save the transaction to the Db. 172 | dbContext.Add(NewTransaction); 173 | dbContext.SaveChanges(); 174 | // Notify the user that their deposit was successful. 175 | ModelState.AddModelError("Amount", "Your deposit was successful!"); 176 | // Redirect the user to their custom account page. 177 | return Redirect($"Account/{CurrentUser.UserId}"); 178 | } 179 | 180 | // If the amount deposited is less than 0 (i.e. a negative number), this is handled as a withdrawal. 181 | else 182 | { 183 | // If the User's balance PLUS the withdrawal amount (a negative number) is less than 0 then the user does not have sufficient funds to withdraw. 184 | if (CurrentUser.Balance + amount < 0) 185 | { 186 | // The user will be redirected to their account page with this error message displayed. 187 | ModelState.AddModelError("Amount", "Balance is insufficient"); 188 | return Redirect($"Account/{CurrentUser.UserId}"); 189 | } 190 | else 191 | { 192 | // If the user's balance is sufficient, the amount will be subtracted (added because it is a negative) from their balance. 193 | CurrentUser.Balance += amount; 194 | // A new transaction is created. 195 | Transaction NewTransaction = new Transaction 196 | { 197 | Amount = amount, 198 | CreatedAt = DateTime.Now, 199 | UserId = CurrentUser.UserId 200 | }; 201 | // The transaction is added and saved to the Db. 202 | dbContext.Add(NewTransaction); 203 | dbContext.SaveChanges(); 204 | // Notify the user that they have successfully withdrawn, and redirect them to their account page. 205 | ModelState.AddModelError("Amount", "Your withdrawal was a success!"); 206 | return Redirect($"Account/{CurrentUser.UserId}"); 207 | } 208 | } 209 | } 210 | 211 | [HttpGet("Logout")] 212 | // logout get method, no information is submited via post request. 213 | public IActionResult Logout() 214 | { 215 | // The UserID stored in session is cleared. 216 | HttpContext.Session.Clear(); 217 | // The user is redirected to the Login page. 218 | return RedirectToAction("Login"); 219 | } 220 | } 221 | } -------------------------------------------------------------------------------- /Models/BankContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | namespace bankaccount.Models 4 | { 5 | public class BankContext : DbContext 6 | { 7 | // Created a BankContex to encompass all of the models into one Context which can be linked to the Db. 8 | public BankContext(DbContextOptions options) : base(options) {} 9 | public DbSet Users { get; set;} 10 | public DbSet Transactions { get; set;} 11 | } 12 | } -------------------------------------------------------------------------------- /Models/LoginUser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace bankaccount.Models 6 | { 7 | public class LoginUser 8 | { 9 | // No other fields! 10 | [Display(Name = "Email:")] 11 | [Required] 12 | public string Email { get; set; } 13 | 14 | [DataType(DataType.Password)] 15 | [Required] 16 | [Display(Name = "Password:")] 17 | [MinLength(8, ErrorMessage = "Password must be 8 characters or longer!")] 18 | public string Password { get; set; } 19 | } 20 | } -------------------------------------------------------------------------------- /Models/Transaction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace bankaccount.Models 6 | { 7 | public class Transaction 8 | { 9 | [Key] 10 | public int TransactionId { get; set; } 11 | 12 | [Display(Name = "Amount:")] 13 | public decimal Amount { get; set; } 14 | 15 | public DateTime CreatedAt { get; set; } = DateTime.Now; 16 | 17 | // Each transaction has a UserID and belongs to a User object. 18 | 19 | public int UserId {get; set;} 20 | public User User{get; set;} 21 | } 22 | } -------------------------------------------------------------------------------- /Models/User.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Collections.Generic; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace bankaccount.Models 7 | { 8 | public class User 9 | { 10 | // This model is checked when a user registers. 11 | [Key] 12 | public int UserId { get; set; } 13 | 14 | // Each user has a list of transactions. 15 | 16 | public List Transactions {get; set;} 17 | 18 | 19 | [Required] 20 | [Display(Name = "First Name:")] 21 | [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "First Name must contain letters only")] 22 | [MinLength(2, ErrorMessage = "First Name must be 2 characters or longer!")] 23 | public string FirstName { get; set; } 24 | 25 | 26 | [Required] 27 | [Display(Name = "Last Name:")] 28 | [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Last Name must contain letters only")] 29 | [MinLength(2, ErrorMessage = "Last Name must be 2 characters or longer!")] 30 | public string LastName { get; set; } 31 | 32 | 33 | [Required] 34 | [EmailAddress(ErrorMessage = "Invalid Email Address!")] 35 | [Display(Name = "Email Address:")] 36 | public string Email { get; set; } 37 | 38 | [Required] 39 | [DataType(DataType.Password)] 40 | [Display(Name = "Password:")] 41 | [MinLength(8, ErrorMessage = "Password must be 8 characters or longer!")] 42 | public string Password { get; set; } 43 | 44 | public decimal Balance {get; set;} 45 | 46 | 47 | public DateTime CreatedAt { get; set; } = DateTime.Now; 48 | 49 | 50 | // Confirm password is not saved to the User table. 51 | [NotMapped] 52 | [Display(Name = "Password Confirm:")] 53 | [Compare("Password", ErrorMessage = "Passwords do not match!")] 54 | [DataType(DataType.Password)] 55 | public string Confirm { get; set; } 56 | } 57 | } -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore; 7 | using Microsoft.AspNetCore.Hosting; 8 | using Microsoft.Extensions.Configuration; 9 | using Microsoft.Extensions.Logging; 10 | 11 | namespace bankaccount 12 | { 13 | public class Program 14 | { 15 | public static void Main(string[] args) 16 | { 17 | CreateWebHostBuilder(args).Build().Run(); 18 | } 19 | 20 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 21 | WebHost.CreateDefaultBuilder(args) 22 | .UseStartup(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:3839", 7 | "sslPort": 44357 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "bankaccount": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "applicationUrl": "http://localhost:5000", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # C-Sharp-BankAccount 2 | ASP.NET C# Entity Framework using MySQL db. Bank account interface login & registration required. Users may deposit, withdraw, and view their balance. This application mimics what is commonly used by banking corporations mobile and desktop applications. 3 | -------------------------------------------------------------------------------- /Startup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.AspNetCore.Builder; 3 | using Microsoft.Extensions.DependencyInjection; 4 | using Microsoft.Extensions.Logging; 5 | using Microsoft.Extensions.Hosting; 6 | using Microsoft.Extensions.Configuration; 7 | using Microsoft.EntityFrameworkCore; 8 | using bankaccount.Models; 9 | 10 | namespace bankaccount 11 | { 12 | public class Startup 13 | { 14 | public IConfiguration Configuration {get;} 15 | public Startup(IConfiguration configuration) 16 | { 17 | Configuration = configuration; 18 | } 19 | // This method gets called by the runtime. Use this method to add services to the container. 20 | public void ConfigureServices(IServiceCollection services) 21 | { 22 | // Add framework services. 23 | services.AddMvc(); 24 | services.AddSession(); 25 | // This configures the app to use MySQL, it gets the Json Data about the Db from the Connection String in appsettings.json. 26 | services.AddDbContext(options => options.UseMySql(Configuration["DBInfo:ConnectionString"])); 27 | } 28 | 29 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 30 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 31 | { 32 | if(env.IsDevelopment()) 33 | { 34 | app.UseDeveloperExceptionPage(); 35 | } 36 | app.UseStaticFiles(); 37 | app.UseSession(); 38 | app.UseMvc(); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /Views/Home/Account.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | @model bankaccount.Models.Transaction 5 |

Welcome, @ViewBag.User.FirstName @ViewBag.User.LastName!

6 | Logout 7 |
8 |

Current Balance:

@ViewBag.User.Balance

9 |
10 |
11 |
12 | 13 | 14 | 15 |
16 | 17 |
18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | @foreach(var transaction in @ViewBag.User.Transactions) 28 | { 29 | 30 | 31 | 32 | 33 | } 34 | 35 |
AmountDate
$@transaction.Amount@transaction.CreatedAt
36 |
-------------------------------------------------------------------------------- /Views/Home/Login.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | @model bankaccount.Models.LoginUser 5 | 9 |
10 |
11 |
12 |

Login

13 | 14 | 15 | 16 |
17 |
18 | 19 | 20 | 21 |
22 | 23 |
24 |
-------------------------------------------------------------------------------- /Views/Home/Register.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | @model bankaccount.Models.User 5 | 9 |
10 |
11 |
12 | 13 | 14 | 15 |
16 |
17 | 18 | 19 | 20 |
21 |
22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 |
31 |
32 | 33 | 34 | 35 |
36 | 37 |
38 |
-------------------------------------------------------------------------------- /Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - loginreg 7 | 8 | 11 | 12 | 13 | 14 | 15 |
16 | @RenderBody() 17 |
18 | 19 | 20 | 21 | 22 | @RenderSection("scripts", required: false) 23 | 24 | 25 | -------------------------------------------------------------------------------- /Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using bankaccount 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "DBInfo": 3 | { 4 | "Name": "MySQLconnect", 5 | "ConnectionString": "server=localhost;userid=root;password=root;port=3306;database=bankaccount;SslMode=None" 6 | } 7 | } -------------------------------------------------------------------------------- /bankaccount.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bankaccount", 3 | "private": true, 4 | "dependencies": { 5 | 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /wwwroot/_references.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | 5 | -------------------------------------------------------------------------------- /wwwroot/css/site.css: -------------------------------------------------------------------------------- 1 | .big_form{ 2 | padding: 15px; 3 | margin-top: 50px; 4 | border-style: solid; 5 | border-width: 5px; 6 | border-radius: 8px; 7 | width: 450px; 8 | } 9 | .header{ 10 | text-align: center; 11 | } 12 | .error{ 13 | color: red; 14 | } 15 | #button{ 16 | margin-top: 10px; 17 | } 18 | #registration{ 19 | display: inline-block; 20 | float: left; 21 | } 22 | #login{ 23 | display: inline-block; 24 | float: right; 25 | } 26 | #balance{ 27 | border: solid black; 28 | } -------------------------------------------------------------------------------- /wwwroot/favicon.ico: -------------------------------------------------------------------------------- 1 |  hF ��00 �%V@@ (B�:(  @��у��̅��˅��˅��ʅ��ʅ��Ʌ�������������������������������۶�����������������������������������������������������������������������۳u�НL�Ыn�����������������������������������������������������ܵx�ҢV�Щm�����������������������������������������������������ܶ{�ӣX�Ъn�����������������������������������������������������޸�ե\�Ѭq�����������������������������������������������������຃�רa�Ӯu�����������������������������������������������������Ệ�ةd�ԯx������������������������������������������������S����⽉�ګi�հ{������������������������������������������������E����㾌�ܯq�ص�������������������������������������������������E����侎�ܭo�ײ�������������������������������������������������E����俏�ݮq�س�������������������������������������������������E����忑�ޯu�ܻ�������������������������������������������������C�����ϭ������ġ�������������������������������������������ҟ����������������������������������������������������������������������������A����������������������������������ן�����������������������������������������( @ � ((()������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ʠ��ˡ��ʞ��ɞ��л����������������������������������������������������������������������������������������������������������ˢ�ΘC�ϛG�͙A�͙B�ϴ�����������������������������������������������������������������������������������������������������������̥�ЛJ�џP�ӤX�ӤX�Ѻ�����������������������������������������������������������������������������������������������������������ͥ�ϛI�Ԧ\�ўN�НK�ж�����������������������������������������������������������������������������������������������������������Χ�ѝL�է^�ўN�МL�ж�����������������������������������������������������������������������������������������������������������Ϩ�ўN�ը`�џP�НM�з�����������������������������������������������������������������������������������������������������������ϩ�ѝM�֨`�џP�НM�ж�����������������������������������������������������������������������������������������������������������ѫ�ӡU�׫f�ӢV�ҠS�Ѹ�����������������������������������������������������������������������������������������������������������Ѭ�ҟQ�שc�ӠS�ҟP�Ѹ�����������������������������������������������������������������������������������������������������������Ү�գY�٭j�եZ�ԣX�Һ�����������������������������������������������������������������������������������������������������������Ү�բW�٬i�դY�ԢW�ҹ�����������������������������������������������������������������������������������������������������������Ӱ�֤\�ڮm�צ^�դ[�һ����������������������������������������������������������������������������������������������...#���������ӱ�֣[�ڭk�֤\�գY�Ӻ�������������������������������������������������������������������������������������������������������ճ�٧b�ܰr�٧c�ئ`�Ի�������������������������������������������������������������������������������������������������������Բ�פ^�ۮo�إ`�פ]�Ӻ�������������������������������������������������������������������������������������������������������յ�ڨe�޲w�޴y�޲w��Ĩ������������������������������������������������������������������������������������������������������Դ�٦a�ݯr�٦a�إ_�Ժ�������������������������������������������������������������������������������������������������������ն�۩g�޲w�۪i�کg�ս�������������������������������������������������������������������������������������������������������յ�ڧd�ޱu�کf�ڧd�ռ�������������������������������������������������������������������������������������������������������շ�ۨg�޲w�۪j�۩g�ս�������������������������������������������������������������������������������������������������������ַ�۩i�߲y�ܫk�۪i�ս��������������������������������������������������������������������������������������������‡���������շ�ۨi�߲y�ݬn�ܫm��¥�������������������������������������������������������������������������������������������Ç���������ָ�ܪl�ޮr�߲y��~��˵��������������������������������������������������������������������������������������������������������ַ�ܨi�ݫl�ܩi�ܩj�ս����������������������������������������������������������������������������������������ۿ�������������������շ��ָ��ַ��ָ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ܿ���������������������(0` �%��� ihhi��������������������������������~��~��~��~}��~}���������������~��~��~��~��~��~��~�JIH_��ԁ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������zwv����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������۵w�۳u�۴u�۴v�ڳs�ڲs�ڳu��̼�����������������������������������������������������������������������������������������������������������������������������������������������������������������ϛH�ΘC�ΙD�ϛF�͘@�͘@�ΚE��­�����������������������������������������������������������������������������������������������������������������������������������������������������������������ЛI�ΙD�ΚE�ΚF�͗@�͗@�ΙD��¬�����������������������������������������������������������������������������������������������������������������������������������������������������������������џP�МL�ўO�֩c�֪c�ժc�֫e��Ƶ�����������������������������������������������������������������������������������������������������������������������������������������������������������������ѝM�ϛI�џP�׫f�ўN�ОL�џP��ï�����������������������������������������������������������������������������������������������������������������������������������������������������������������ѝL�ϛH�ўO�ըa�ϚG�ΙE�ϜJ��®�����������������������������������������������������������������������������������������������������������������������������������������������������������������ҠQ�ўN�ҢT�׫f�ўM�НL�ўO��ï�����������������������������������������������������������������������������������������������������������������������������������������������������������������ҠS�ўO�ҢU�׬g�ўN�НL�џP��ï�����������������������������������������������������������������������������������������������������������������������������������������������������������������ҟP�ѝL�ҡR�֪d�НK�ϛI�ѝN��ï�����������������������������������������������������������������������������������������������������������������������������������������������������������������ҠR�ѝM�ӢU�׫f�ОM�НK�ўO��ï�����������������������������������������������������������������������������������������������������������������������������������������������������������������ԤZ�ӢW�զ]�ٯm�ӡU�ҠS�ӢW��ı�����������������������������������������������������������������������������������������������������������������������������������������������������������������ӢV�ҟQ�ӣW�جh�ўP�ўN�ҟQ��ð���������������������������������������������������������������������������������������������������������������������������������������������{zz�����������������ԢV�ҟQ�ԢX�٬i�ҟP�ўO�ҠR��İ���������������������������������������������������������������������������������������������������������������������������������������������~}�����������������֥^�դZ�֨`�ڱq�դY�ԣX�ԤZ��Ų�����������������������������������������������������������������������������������������������������������������������������������������������������������������֣Z�աV�֥\�گm�ӢU�ӠT�ԣW��ı�����������������������������������������������������������������������������������������������������������������������������������������������������������������֤\�բX�צ^�ڰp�ԣX�ԢV�գZ��IJ�����������������������������������������������������������������������������������������������������������������������������������������������������������������اa�֥]�بd�ܲt�ץ]�դ[�է^��ų�����������������������������������������������������������������������������������������������������������������������������������������999K$$$)����������������ץ^�֢Y�צ_�ۯp�բX�ԡV�դZ��IJ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ץ_�֣[�ק`�ܰq�գY�բW�֤[��Ų����������������������������������������������������������������������������������������������������������������������������������������� ����������������کf�٨c�ګi�޳x�ئa�ئ`�بc��ƴ����������������������������������������������������������������������������������������������������������������������������������������� ����������������٧b�إ_�٩e�ݱu�פ^�פ\�צ`��ų����������������������������������������������������������������������������������������������������������������������������������������� ����������������٧b�פ^�بe�ݱu�ף]�֣\�פ^��IJ����������������������������������������������������������������������������������������������������������������������������������������� ����������������کg�٧c�۫i�ก�ܮp�ܭn�޳y��ʼ����������������������������������������������������������������������������������������������������������������������������������������� ����������������کh�ڨe�۫k�ข�ܯq�ۮp�ܯr��Ǹ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ڨe�٦b�کh�޲w�٥`�ؤ_�٦b��Ŵ����������������������������������������������������������������������������������������������������������������������������������������� ����������������۩h�ڨe�۫k�ߴz�ڧd�٧c�کf��Ƶ����������������������������������������������������������������������������������������������������������������������������������������� ����������������۪k�۩h�ܭn��~�کh�کf�۫i��ƶ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ڨh�ڧd�۫k�ߴz�ڧd�٦c�کf��Ƶ����������������������������������������������������������������������������������������������������������������������������������������� ����������������۩j�ۨf�۫l�ߵ|�ڨf�ڧd�۪h��Ƶ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ܬn�ܪk�ݮq�ᶀ�۪k�۪j�ܬl��Ƕ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ܪk�ۨh�ܬn��}�۩g�ڨf�۪j��ƶ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ܪl�ۨh�ܬn��~�ܩi�ۨh�ܬn��Ƿ����������������������������������������������������������������������������������������������������������������������������������������� ����������������ݬp�ܫm�ޮr�⺇������ƛ����������������������������������������������������������������������������������������������������������������������������������������������������������������ݫm�ܩj�ܪl�ݮr�ݬn�ܭo����ʽ��������������������������������������������������������������������������������������������������������������������������������������������������������������ܪl�ܨi�ܪj�ݫm�ܨi�ۨi�ܪk��ƶ��������������������������������������������������������������������������������������������������������������������������������������������������������������ݫo�ܪl�ݫm�ݬp�ܪl�ܪl�ݬo��Ƿ�����������������������������������������������������������������������������������������������������������������������������������!����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��������������������������������������������������������Ͽ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������п������������������������������������������������������������������������������������������������������߿���!��������������������������������������������������������������ֿ�������������������������������������������������������������������������������������������������������!������������������������������������������������������������������������������������������������������������������������������(@� B������ +>>>u===w===u===u===u===u===u===u===u<<>>q>>>q>>>q>>>q>>>q>>>q===q===q===q===q===q===q===q===q???s9���<<>>��������������������ОM�ΘB�ΘC�ΘA�НK�ΙB�͘?�͗>�ΛF�ΙD�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ўN�ϙE�ϚE�ΙD�ОL�ΚD�ΙB�͘@�ϛG�ΚE�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������џN�ϙD�ϙE�ΙD�ϜJ�͗A�͖>�̕=�ΙD�͘A�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ҡV�џP�ўO�МK�حj�ڲr�ٱo�ٰn�ٳs�ڲp�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ҠR�МJ�ЛJ�ΙD�۵x�ԤY�џN�џM�ҢT�ҠR�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ҠQ�ЛH�ϛH�ΘC�ڲs�џO�ΘD�ΘC�МJ�ϛH�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ҠR�ЛH�МI�ΘD�ڲs�ѠP�ϙE�ΘE�НL�ϜJ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ԣW�ҟP�ҟP�НK�ܶy�ӣW�ўM�ўM�ҠR�џP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������>>>��������������������ԣX�ҟQ�ҟQ�НL�ܶy�ӤX�ўM�ОM�ҠR�џQ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������ӡU�ѝK�ѝL�ЛF�۴u�ҡS�ЛH�ϛG�ўN�ѝL�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������ԣW�ўM�ѝM�МH�۴v�ӢU�НJ�ЛI�џP�ѝN�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������ԣW�ўN�ҞN�ќJ�ܴx�ӢV�НK�НJ�ҟQ�ўO�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������֧^�գY�ԤZ�ӡU�޹��֨_�ӡU�ӡT�ԤZ�ԣX�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������դZ�ҟQ�ҟQ�ѝK�ܶy�ԢW�ўM�ѝL�ҠR�ҟP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������ե[�ӠR�ҠR�ўN�޶z�գY�ѝO�ўN�ӡS�ҠR�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������???��������������������֥[�ԟQ�ҠR�ќM�޶z�դY�ҞN�ѝN�ӡS�ӡQ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@@@��������������������רb�֥\�֥\�ԣW�߻��שb�գX�ԣX�զ]�եZ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@@@��������������������צ_�բW�բW�ԠR�޹�ק^�ԡS�ԠS�ԣY�գW�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BBB��������������������צ^�աU�աU�ӟP�޸~�֦\�ҠR�ӠR�գX�ԣV�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BBB��������������������اa�֣Z�գZ�աU�߹��רa�բW�բV�֥\�֣Z�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BBB��������������������ڪf�ק`�צ`�֤\�༆�٫g�צ]�֥]�֨a�֨`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������999a>>>]'��������������������اa�֢X�עX�՟T�߹��ا`�ՠU�ԠT�֤[�դY����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������بd�֣[�֣Z�աV�แ�اa�բW�բV�֥\�֤[����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������٨d�ף[�֣\�աV�ṁ�קa�բW�բV�֥\�֤[����������������������������������������������������������������������������������������������������������������������������������������������Ŀ����������������������������������������� �����������������������۬j�ڨd�کe�ئ`�⽉�۬j�ئ`�ئ`�٩e�٩c����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������۪g�٦`�٦`�ؤ\�ễ�کg�פ\�פ]�٧a�צ`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ڪf�إ^�פ^�֢Z�ễ�٨e�ף[�֣Z�ئa�ץ^����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������۪g�إ_�ؤ_�֢[�⻅�٨e�ע[�֢[�٦a�֣Z����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������۫i�٦b�٧b�ؤ]�㽉�ܯp�ڨf�کf�۫j�฀����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ܭn�۫i�۪i�ڧc��“�⾌�ễ�ẃ�⼉�ṃ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������۪i�٥a�٦a�أ]�⺆�ڨe�עZ�֢Z�إ`�פ^����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������۫j�ڦb�ڧc�ؤ^�⼈�۫i�٥_�٤_�کe�٦c����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������۫k�ڦc�ڧc�٤_�㼈�۫i�٤`�ئ`�ڨf�٨d����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ݮq�ܫl�ܬl�۪h�����ݰs�۫j�۫i�ܭn�ܭl����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ܫl�ڧd�ڧe�٥`�㽊�ܬk�٦b�٦b�۩g�کf����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ܫm�ڧe�ڧe�٥a�㽊�ܬl�ڦb�٦b�۩h�کf����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ܫm�ۧe�ۨe�٥a�㽊�ܬl�ڦc�ڦb�۪h�۩f����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ޭq�ܪj�ܪk�ۨf�俎�ݮq�۩h�۩h�ܬm�ܫk����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ݮr�ܫl�ܫl�۩h�忐�ޯs�۪j�۪j�ܭn�ܭm����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ݬn�ۧf�ۨg�ڦc�佋�ݬn�ڧd�ڧd�۪j�۪i����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ݬo�ۨh�ۨh�ڦd�佌�ݬn�ۧe�ۧe�۩i�ڧd����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������ݭq�ܩj�ܪj�ۧf�����߲w�ݭo�ݫm��{�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������߯u�ެp�ݭp�ݫm�㻈�忐�位�㼉��ɡ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ݭp�ܨh�ܩh�ܨh�ܫn�ۧf�ۦd�ڦc�ܪk�ްt����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ݭp�ܨi�ܩj�ܩi�ޭq�ܪk�ܨi�ۨh�ݫm�۪j���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ݭp�ܧh�ܨi�ܩh�ޭq�ܪj�ܨh�ۨg�ݬm�ܫl��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ޯt�ݬp�ݭp�ݭp�߯u�ݭq�ޭp�ݬo�ޮs�ޮr�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | --------------------------------------------------------------------------------