Index: ditorconfig
===================================================================
--- .editorconfig	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,4 +1,0 @@
-﻿[*.cs]
-
-# CS1705: Assembly 'FarmatikoData' with identity 'FarmatikoData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'Microsoft.EntityFrameworkCore, Version=3.1.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' which has a higher version than referenced assembly 'Microsoft.EntityFrameworkCore' with identity 'Microsoft.EntityFrameworkCore, Version=3.1.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
-dotnet_diagnostic.CS1705.severity = none
Index: itignore
===================================================================
--- .gitignore	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,231 +1,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-
-# User-specific files
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-build/
-bld/
-bin/
-Bin/
-obj/
-Obj/
-
-# Visual Studio 2015 cache/options directory
-.vs/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# 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
-# TODO: 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
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/packages/*
-# except build/, which is used as an MSBuild target.
-!**/packages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Microsoft Azure ApplicationInsights config file
-ApplicationInsights.config
-
-# Windows Store app package directory
-AppPackages/
-BundleArtifacts/
-
-# 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
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-/node_modules
-
-# 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
-
-# SQL Server files
-*.mdf
-*.ldf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# 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
-
-# FAKE - F# Make
-.fake/
Index: Farmatiko.sln
===================================================================
--- Farmatiko.sln	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko.sln	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -2,16 +2,9 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
-VisualStudioVersion = 16.0.30309.148
+VisualStudioVersion = 16.0.30011.22
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Farmatiko", "Farmatiko\Farmatiko.csproj", "{36086D69-E8B8-4F14-8F25-D262410306EB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Farmatiko", "Farmatiko\Farmatiko.csproj", "{ECDC48EB-C53D-4407-B5D8-BC75A1EB7A54}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FarmatikoData", "FarmatikoData\FarmatikoData.csproj", "{5BC55BDD-A064-4CE7-8606-D2FF42699EBF}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FarmatikoServices", "FarmatikoServices\FarmatikoServices.csproj", "{D207CD1B-4C31-4414-9EF4-DC18F219CBF6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F354500C-6124-4A4D-AEC2-A38CF3F436CF}"
-	ProjectSection(SolutionItems) = preProject
-		.editorconfig = .editorconfig
-	EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FarmatikoData", "FarmatikoData\FarmatikoData.csproj", "{97770E90-A2FA-43A6-BA75-7FCB519AEA5B}"
 EndProject
 Global
@@ -21,16 +14,12 @@
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{36086D69-E8B8-4F14-8F25-D262410306EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{36086D69-E8B8-4F14-8F25-D262410306EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{36086D69-E8B8-4F14-8F25-D262410306EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{36086D69-E8B8-4F14-8F25-D262410306EB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5BC55BDD-A064-4CE7-8606-D2FF42699EBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5BC55BDD-A064-4CE7-8606-D2FF42699EBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5BC55BDD-A064-4CE7-8606-D2FF42699EBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5BC55BDD-A064-4CE7-8606-D2FF42699EBF}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D207CD1B-4C31-4414-9EF4-DC18F219CBF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D207CD1B-4C31-4414-9EF4-DC18F219CBF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D207CD1B-4C31-4414-9EF4-DC18F219CBF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D207CD1B-4C31-4414-9EF4-DC18F219CBF6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{ECDC48EB-C53D-4407-B5D8-BC75A1EB7A54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{ECDC48EB-C53D-4407-B5D8-BC75A1EB7A54}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{ECDC48EB-C53D-4407-B5D8-BC75A1EB7A54}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{ECDC48EB-C53D-4407-B5D8-BC75A1EB7A54}.Release|Any CPU.Build.0 = Release|Any CPU
+		{97770E90-A2FA-43A6-BA75-7FCB519AEA5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{97770E90-A2FA-43A6-BA75-7FCB519AEA5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{97770E90-A2FA-43A6-BA75-7FCB519AEA5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{97770E90-A2FA-43A6-BA75-7FCB519AEA5B}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
@@ -38,5 +27,5 @@
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {E81BF7BE-E3D2-4643-9AFE-4F22D37BD223}
+		SolutionGuid = {B2BBAF92-EA0E-49C5-BEF2-A005491327D2}
 	EndGlobalSection
 EndGlobal
Index: rmatiko/.config/dotnet-tools.json
===================================================================
--- Farmatiko/.config/dotnet-tools.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,12 +1,0 @@
-{
-  "version": 1,
-  "isRoot": true,
-  "tools": {
-    "dotnet-ef": {
-      "version": "3.1.6",
-      "commands": [
-        "dotnet-ef"
-      ]
-    }
-  }
-}
Index: Farmatiko/ClientApp/angular.json
===================================================================
--- Farmatiko/ClientApp/angular.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/angular.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -21,12 +21,8 @@
             "polyfills": "src/polyfills.ts",
             "tsConfig": "src/tsconfig.app.json",
-            "assets": [
-              "src/assets"
-            ],
+            "assets": ["src/assets"],
             "styles": [
-              "src/custom-theme.scss",
               "node_modules/bootstrap/dist/css/bootstrap.min.css",
-              "src/styles.css",
-              "./node_modules/leaflet/dist/leaflet.css"
+              "src/styles.css"
             ],
             "scripts": []
@@ -55,6 +51,5 @@
           "builder": "@angular-devkit/build-angular:dev-server",
           "options": {
-            "browserTarget": "Farmatiko:build",
-            "port": 80
+            "browserTarget": "Farmatiko:build"
           },
           "configurations": {
@@ -77,11 +72,7 @@
             "tsConfig": "src/tsconfig.spec.json",
             "karmaConfig": "src/karma.conf.js",
-            "styles": [
-              "src/styles.css"
-            ],
+            "styles": ["src/styles.css"],
             "scripts": [],
-            "assets": [
-              "src/assets"
-            ]
+            "assets": ["src/assets"]
           }
         },
@@ -89,11 +80,6 @@
           "builder": "@angular-devkit/build-angular:tslint",
           "options": {
-            "tsConfig": [
-              "src/tsconfig.app.json",
-              "src/tsconfig.spec.json"
-            ],
-            "exclude": [
-              "**/node_modules/**"
-            ]
+            "tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"],
+            "exclude": ["**/node_modules/**"]
           }
         },
@@ -141,7 +127,5 @@
           "options": {
             "tsConfig": "e2e/tsconfig.e2e.json",
-            "exclude": [
-              "**/node_modules/**"
-            ]
+            "exclude": ["**/node_modules/**"]
           }
         }
Index: Farmatiko/ClientApp/package-lock.json
===================================================================
--- Farmatiko/ClientApp/package-lock.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/package-lock.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -6,10 +6,10 @@
   "dependencies": {
     "@angular-devkit/architect": {
-      "version": "0.803.26",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.26.tgz",
-      "integrity": "sha512-mCynDvhGLElmuiaK5I6hVleMuZ1Svn7o5NnMW1ItiDlVZu1v49JWOxPS1A7C/ypGmhjl9jMorVtz2IumtLgCXw==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "8.3.26",
+      "version": "0.803.24",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.24.tgz",
+      "integrity": "sha512-ONY/Ppzyvtb0tqgwnzQvlGlexb5nTyy58ljgL1aQLTO3cNTkpl4IQYUCTdvn61gGA+FWPAXMCCbNqOPZMsOZCQ==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "8.3.24",
         "rxjs": "6.4.0"
       },
@@ -27,21 +27,21 @@
     },
     "@angular-devkit/build-angular": {
-      "version": "0.803.26",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.26.tgz",
-      "integrity": "sha512-SoeUbl928QgYWZjDNSMs9m/9wslKjqkFXeZpOI398i5/ZbrsjXcbxicLphVCPndhfR6qETV7pCqQnVmAf4zYjA==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.803.26",
-        "@angular-devkit/build-optimizer": "0.803.26",
-        "@angular-devkit/build-webpack": "0.803.26",
-        "@angular-devkit/core": "8.3.26",
-        "@babel/core": "7.8.7",
-        "@babel/preset-env": "7.8.7",
-        "@ngtools/webpack": "8.3.26",
+      "version": "0.803.24",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.24.tgz",
+      "integrity": "sha512-uA789spMVghXehwAhl5zK0loY/wfxblUiL+y21T24LMCJc15a9QX5dwbXH72ioHz7qdzb/agXk7AK+foc2/0Hw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.803.24",
+        "@angular-devkit/build-optimizer": "0.803.24",
+        "@angular-devkit/build-webpack": "0.803.24",
+        "@angular-devkit/core": "8.3.24",
+        "@babel/core": "7.8.3",
+        "@babel/preset-env": "7.8.3",
+        "@ngtools/webpack": "8.3.24",
         "ajv": "6.10.2",
         "autoprefixer": "9.6.1",
-        "browserslist": "4.10.0",
+        "browserslist": "4.8.3",
         "cacache": "12.0.2",
-        "caniuse-lite": "1.0.30001035",
+        "caniuse-lite": "1.0.30001019",
         "circular-dependency-plugin": "5.2.0",
         "clean-css": "4.2.1",
@@ -164,7 +164,7 @@
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.803.26",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.26.tgz",
-      "integrity": "sha512-rVcMV/HaWK1g1XVbB1Hj0F6icNbguQETxilhbEn2Ut48hT4iywam6a2tz5w33YlH0uspPHwtFrz7EaLbiWUrPw==",
+      "version": "0.803.24",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.24.tgz",
+      "integrity": "sha512-Z+d7M+WpBq7AWWRwbxzb1l9O9qkylxnDRKxXvq3Tzjn43g+2WyspE91dMyrg1ISc+p8jgX6xKSblRLvtWqpA8w==",
       "dev": true,
       "requires": {
@@ -181,21 +181,15 @@
           "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
           "dev": true
-        },
-        "typescript": {
-          "version": "3.5.3",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
-          "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
-          "dev": true
         }
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.803.26",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.26.tgz",
-      "integrity": "sha512-lMmNUza+Qb1/XgVMpj2A2jFr7APvJdX57aLxNPnDg/pM0rWbAMXLUvrphqxZuyqjOwfQcHWmnuVxfLpT0qJSAw==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.803.26",
-        "@angular-devkit/core": "8.3.26",
+      "version": "0.803.24",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.24.tgz",
+      "integrity": "sha512-Bbd5KUGaE+edN0sp8K3azuqS/JTBmeWXIumdBEtqWyL6VsohX7fL+toJlSvRkj8lg02LVyozAFetXKnyaBkfCQ==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.803.24",
+        "@angular-devkit/core": "8.3.24",
         "rxjs": "6.4.0"
       },
@@ -213,7 +207,7 @@
     },
     "@angular-devkit/core": {
-      "version": "8.3.26",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.26.tgz",
-      "integrity": "sha512-b1ng9091o33s55/cwQYh1kboiJtj8y8z8xQWATDI9kRmNIQkWYVwVa/MzgPRJ4bzbEGG3zIUHCsp52A6vuGr2A==",
+      "version": "8.3.24",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.24.tgz",
+      "integrity": "sha512-xpT5yg+ddGDnifryBv2sRSYtq5F3iZIS+lN/K2AhhEa50B7Z+QaCVlEzoV/IfrGd6sLArdnKYwjLHFZ0LElUuw==",
       "dev": true,
       "requires": {
@@ -276,34 +270,33 @@
     },
     "@angular-devkit/schematics": {
-      "version": "10.0.3",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.3.tgz",
-      "integrity": "sha512-TjA2ZSPCgUK9l4FiRTIQY7DceXMAvNzOMWffy9o3kv2HPtxG9kuBrQXk++Z99zpylK0cAsugV7t/5ANpUkrIiA==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "10.0.3",
-        "ora": "4.0.4",
-        "rxjs": "6.5.5"
+      "version": "8.3.14",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.14.tgz",
+      "integrity": "sha512-5gPmTBN85a2gTxz/FsM5fO9Bxw4KG6uJNLMDAWfPG8vvSQEl7J64ujyqxPz39TernQTEKeuhRC4I5H1aaW9I/Q==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "8.3.14",
+        "rxjs": "6.4.0"
       },
       "dependencies": {
         "@angular-devkit/core": {
-          "version": "10.0.3",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.3.tgz",
-          "integrity": "sha512-m27ogjq44j80x64RnEswSvy8UewUqeCVJBbEuY6fzrWoaiCf12sgPlrSCwjwfhtQrLgl1e/i9zYA7U6ulGRXyg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.2",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.5.5",
+          "version": "8.3.14",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.14.tgz",
+          "integrity": "sha512-+IYLbtCxwIpaieRj0wurEXBzZ/fDSdWbyrCfajzDerzsxqghNcafAXSazHXWwISqtbr/pAOuqUNR+mEk2XBz3Q==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.10.2",
+            "fast-json-stable-stringify": "2.0.0",
+            "magic-string": "0.25.3",
+            "rxjs": "6.4.0",
             "source-map": "0.7.3"
           }
         },
         "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
+          "version": "6.10.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+          "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
             "fast-json-stable-stringify": "^2.0.0",
             "json-schema-traverse": "^0.4.1",
@@ -311,8 +304,29 @@
           }
         },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+          "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.3",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz",
+          "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
         "rxjs": {
-          "version": "6.5.5",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-          "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
+          "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
           "dev": true,
           "requires": {
@@ -329,98 +343,69 @@
     },
     "@angular/animations": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.0.4.tgz",
-      "integrity": "sha512-UzQiWhDHY6wixS1Nh+Jwpzq1weiLGXJPt3Pa4pETpt3Hg7MIUu62dik6OFWuGYQPbn9DJYH+CH+sRxN1GCVjww==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
-      }
-    },
-    "@angular/cdk": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-10.1.0.tgz",
-      "integrity": "sha512-zSZcpsfhRWdNAzNXnKZIlaX1uAWY+8W2zV7ktQNJoNypo9X02rY0YtmPBzlPjT0ITjM4EqohZ07nfd+5bLUw4A==",
-      "requires": {
-        "parse5": "^5.0.0",
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "parse5": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
-          "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
-          "optional": true
-        },
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.12.tgz",
+      "integrity": "sha512-QVtZUw5J9c0RcDaJntIoeWVk/q9dhjDFxh+yw/uPl9Z4upWASdsOpZU2lfjqyU0myfg8dnQyZa1+Ce7n/DaClQ==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/cli": {
-      "version": "10.0.3",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.0.3.tgz",
-      "integrity": "sha512-ONK8YG20KuakQetY0lPKDAOA3uBoLurdpSfFspFkcECyDimwJYSEydi3FUnCxEexeoKvrQWcol+q+u9YPoHCyg==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.1000.3",
-        "@angular-devkit/core": "10.0.3",
-        "@angular-devkit/schematics": "10.0.3",
-        "@schematics/angular": "10.0.3",
-        "@schematics/update": "0.1000.3",
+      "version": "8.3.14",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.14.tgz",
+      "integrity": "sha512-cOP2UvnnYocx1U1aiNkuLCcBxSktIXkadzrY7UlWJtQiCPGWm3Y87BfrQXub9Nsh79iyV8k8uKZKEax2ayESSg==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.803.14",
+        "@angular-devkit/core": "8.3.14",
+        "@angular-devkit/schematics": "8.3.14",
+        "@schematics/angular": "8.3.14",
+        "@schematics/update": "0.803.14",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
-        "debug": "4.1.1",
+        "debug": "^4.1.1",
         "ini": "1.3.5",
-        "inquirer": "7.1.0",
-        "npm-package-arg": "8.0.1",
-        "npm-pick-manifest": "6.1.0",
-        "open": "7.0.4",
-        "pacote": "9.5.12",
+        "inquirer": "6.5.1",
+        "npm-package-arg": "6.1.0",
+        "npm-pick-manifest": "3.0.2",
+        "open": "6.4.0",
+        "pacote": "9.5.5",
         "read-package-tree": "5.3.1",
-        "rimraf": "3.0.2",
-        "semver": "7.3.2",
+        "rimraf": "3.0.0",
+        "semver": "6.3.0",
         "symbol-observable": "1.2.0",
-        "universal-analytics": "0.4.20",
-        "uuid": "8.1.0"
+        "universal-analytics": "^0.4.20",
+        "uuid": "^3.3.2"
       },
       "dependencies": {
         "@angular-devkit/architect": {
-          "version": "0.1000.3",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1000.3.tgz",
-          "integrity": "sha512-8ZszTAkRvGGMXERFvyLT6SJPfJXjNNfHamA76uDPTBXy+EijJ1XVTUr1+SYEe73E4ovtxqxAnsApEFxS7/Ni5w==",
-          "dev": true,
-          "requires": {
-            "@angular-devkit/core": "10.0.3",
-            "rxjs": "6.5.5"
+          "version": "0.803.14",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.14.tgz",
+          "integrity": "sha512-CPDDNTpM/9XWCFxCRL1/mYB54ivZcmWaVSjUgN2zcHWBc0gW3lrJrmmb+cJ1KSlOI7hoZaMTV1gWoX2QXd4JrA==",
+          "dev": true,
+          "requires": {
+            "@angular-devkit/core": "8.3.14",
+            "rxjs": "6.4.0"
           }
         },
         "@angular-devkit/core": {
-          "version": "10.0.3",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.3.tgz",
-          "integrity": "sha512-m27ogjq44j80x64RnEswSvy8UewUqeCVJBbEuY6fzrWoaiCf12sgPlrSCwjwfhtQrLgl1e/i9zYA7U6ulGRXyg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.2",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.5.5",
+          "version": "8.3.14",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.14.tgz",
+          "integrity": "sha512-+IYLbtCxwIpaieRj0wurEXBzZ/fDSdWbyrCfajzDerzsxqghNcafAXSazHXWwISqtbr/pAOuqUNR+mEk2XBz3Q==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.10.2",
+            "fast-json-stable-stringify": "2.0.0",
+            "magic-string": "0.25.3",
+            "rxjs": "6.4.0",
             "source-map": "0.7.3"
           }
         },
         "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
+          "version": "6.10.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+          "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
             "fast-json-stable-stringify": "^2.0.0",
             "json-schema-traverse": "^0.4.1",
@@ -443,27 +428,44 @@
           }
         },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+          "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+          "dev": true
+        },
         "is-wsl": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-          "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-          "dev": true,
-          "requires": {
-            "is-docker": "^2.0.0"
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+          "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.3",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz",
+          "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
           }
         },
         "open": {
-          "version": "7.0.4",
-          "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz",
-          "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==",
-          "dev": true,
-          "requires": {
-            "is-docker": "^2.0.0",
-            "is-wsl": "^2.1.1"
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+          "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+          "dev": true,
+          "requires": {
+            "is-wsl": "^1.1.0"
           }
         },
         "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
+          "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
           "dev": true,
           "requires": {
@@ -472,7 +474,7 @@
         },
         "rxjs": {
-          "version": "6.5.5",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-          "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
+          "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
           "dev": true,
           "requires": {
@@ -481,7 +483,7 @@
         },
         "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         },
@@ -491,78 +493,90 @@
           "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
           "dev": true
-        },
-        "uuid": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.1.0.tgz",
-          "integrity": "sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==",
-          "dev": true
         }
       }
     },
     "@angular/common": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.4.tgz",
-      "integrity": "sha512-9DJMD8GgHz7i2fMz0f1IHZlDSIz83uE6fcH8SIq1iCSWT2dubRRpCX000VpIyhAgfkCgdNCYXQ7VGNsZceoagQ==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.12.tgz",
+      "integrity": "sha512-BNz1lo+PP+lwIX3sErRGBRnkMzT5yT8CJ5o/M29AanCdcx9dpoJG2WKgpIgw8UBcj9QlP0CkSmzPtUNtcNMthA==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/compiler": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.0.4.tgz",
-      "integrity": "sha512-1rnEmSHJtrKC1QD+PyF36xwMnSqG4Slgi5+PYk3BxIa5vbWBibrYijtd/uCNhscfPSpfb06MVM2mRsrc+BmbQg==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.12.tgz",
+      "integrity": "sha512-V5mDWioGmSZ4cJJ2THo8qHYKwj3sUI7dpJ0oab2Al0FQAN8JCimWO6AQKRtjmnr78ZkMy9Xe/KK6ebl40ewL5Q==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/compiler-cli": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.0.4.tgz",
-      "integrity": "sha512-uZKk6Ab4Pw8qcaXhpORuEoCbPSHWx3TWcs9OXIKIhzOOoMMe9OSt2SzOkHCrySSaik1IhQODnHww7sGRw5mxwQ==",
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.2.12.tgz",
+      "integrity": "sha512-OrNnkJ7OrpbcOtB4TWFBF6D3dtEfUuOQgfc3HBjizZuL8EuX0pU5dv4VTvLTRkmyUT/7fmmWdkEXJL+UQtXqPg==",
       "dev": true,
       "requires": {
         "canonical-path": "1.0.0",
-        "chokidar": "^3.0.0",
+        "chokidar": "^2.1.1",
         "convert-source-map": "^1.5.1",
         "dependency-graph": "^0.7.2",
-        "fs-extra": "4.0.2",
         "magic-string": "^0.25.0",
         "minimist": "^1.2.0",
         "reflect-metadata": "^0.1.2",
-        "semver": "^6.3.0",
         "source-map": "^0.6.1",
-        "sourcemap-codec": "^1.4.8",
-        "tslib": "^2.0.0",
-        "yargs": "15.3.0"
+        "tslib": "^1.9.0",
+        "yargs": "13.1.0"
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
-          "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
-          "dev": true,
-          "requires": {
-            "@types/color-name": "^1.1.1",
-            "color-convert": "^2.0.1"
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
           }
         },
@@ -573,49 +587,639 @@
           "dev": true
         },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
         "cliui": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-          "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-          "dev": true,
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.0",
-            "wrap-ansi": "^6.2.0"
-          }
-        },
-        "color-convert": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
+          },
+          "dependencies": {
+            "string-width": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+              "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+              "dev": true,
+              "requires": {
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^4.0.0"
+              }
+            }
+          }
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+          "dev": true
+        },
+        "extend-shallow": {
           "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          }
         },
         "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "fs-extra": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
-          "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "fsevents": {
+          "version": "1.2.11",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+          "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "bindings": "^1.5.0",
+            "nan": "^2.12.1",
+            "node-pre-gyp": "*"
+          },
+          "dependencies": {
+            "abbrev": {
+              "version": "1.1.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "ansi-regex": {
+              "version": "2.1.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "aproba": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "are-we-there-yet": {
+              "version": "1.1.5",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "delegates": "^1.0.0",
+                "readable-stream": "^2.0.6"
+              }
+            },
+            "balanced-match": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "brace-expansion": {
+              "version": "1.1.11",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+              }
+            },
+            "chownr": {
+              "version": "1.1.3",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "code-point-at": {
+              "version": "1.1.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "concat-map": {
+              "version": "0.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "console-control-strings": {
+              "version": "1.1.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "core-util-is": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "debug": {
+              "version": "3.2.6",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "deep-extend": {
+              "version": "0.6.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "delegates": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "detect-libc": {
+              "version": "1.0.3",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "fs-minipass": {
+              "version": "1.2.7",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "minipass": "^2.6.0"
+              }
+            },
+            "fs.realpath": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "gauge": {
+              "version": "2.7.4",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "aproba": "^1.0.3",
+                "console-control-strings": "^1.0.0",
+                "has-unicode": "^2.0.0",
+                "object-assign": "^4.1.0",
+                "signal-exit": "^3.0.0",
+                "string-width": "^1.0.1",
+                "strip-ansi": "^3.0.1",
+                "wide-align": "^1.1.0"
+              }
+            },
+            "glob": {
+              "version": "7.1.6",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.0.4",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              }
+            },
+            "has-unicode": {
+              "version": "2.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "iconv-lite": {
+              "version": "0.4.24",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "safer-buffer": ">= 2.1.2 < 3"
+              }
+            },
+            "ignore-walk": {
+              "version": "3.0.3",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "minimatch": "^3.0.4"
+              }
+            },
+            "inflight": {
+              "version": "1.0.6",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+              }
+            },
+            "inherits": {
+              "version": "2.0.4",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "ini": {
+              "version": "1.3.5",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "is-fullwidth-code-point": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "number-is-nan": "^1.0.0"
+              }
+            },
+            "isarray": {
+              "version": "1.0.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "minimatch": {
+              "version": "3.0.4",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "brace-expansion": "^1.1.7"
+              }
+            },
+            "minimist": {
+              "version": "0.0.8",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "minipass": {
+              "version": "2.9.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "safe-buffer": "^5.1.2",
+                "yallist": "^3.0.0"
+              }
+            },
+            "minizlib": {
+              "version": "1.3.3",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "minipass": "^2.9.0"
+              }
+            },
+            "mkdirp": {
+              "version": "0.5.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "minimist": "0.0.8"
+              }
+            },
+            "ms": {
+              "version": "2.1.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "needle": {
+              "version": "2.4.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "debug": "^3.2.6",
+                "iconv-lite": "^0.4.4",
+                "sax": "^1.2.4"
+              }
+            },
+            "node-pre-gyp": {
+              "version": "0.14.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "detect-libc": "^1.0.2",
+                "mkdirp": "^0.5.1",
+                "needle": "^2.2.1",
+                "nopt": "^4.0.1",
+                "npm-packlist": "^1.1.6",
+                "npmlog": "^4.0.2",
+                "rc": "^1.2.7",
+                "rimraf": "^2.6.1",
+                "semver": "^5.3.0",
+                "tar": "^4.4.2"
+              }
+            },
+            "nopt": {
+              "version": "4.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "abbrev": "1",
+                "osenv": "^0.1.4"
+              }
+            },
+            "npm-bundled": {
+              "version": "1.1.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "npm-normalize-package-bin": "^1.0.1"
+              }
+            },
+            "npm-normalize-package-bin": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "npm-packlist": {
+              "version": "1.4.7",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "ignore-walk": "^3.0.1",
+                "npm-bundled": "^1.0.1"
+              }
+            },
+            "npmlog": {
+              "version": "4.1.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "are-we-there-yet": "~1.1.2",
+                "console-control-strings": "~1.1.0",
+                "gauge": "~2.7.3",
+                "set-blocking": "~2.0.0"
+              }
+            },
+            "number-is-nan": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "object-assign": {
+              "version": "4.1.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "once": {
+              "version": "1.4.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "wrappy": "1"
+              }
+            },
+            "os-homedir": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "os-tmpdir": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "osenv": {
+              "version": "0.1.5",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "os-homedir": "^1.0.0",
+                "os-tmpdir": "^1.0.0"
+              }
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "process-nextick-args": {
+              "version": "2.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "rc": {
+              "version": "1.2.8",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "deep-extend": "^0.6.0",
+                "ini": "~1.3.0",
+                "minimist": "^1.2.0",
+                "strip-json-comments": "~2.0.1"
+              },
+              "dependencies": {
+                "minimist": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "dev": true,
+                  "optional": true
+                }
+              }
+            },
+            "readable-stream": {
+              "version": "2.3.6",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+              }
+            },
+            "rimraf": {
+              "version": "2.7.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "glob": "^7.1.3"
+              }
+            },
+            "safe-buffer": {
+              "version": "5.1.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "safer-buffer": {
+              "version": "2.1.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "sax": {
+              "version": "1.2.4",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "semver": {
+              "version": "5.7.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "set-blocking": {
+              "version": "2.0.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "signal-exit": {
+              "version": "3.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "string-width": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+              }
+            },
+            "string_decoder": {
+              "version": "1.1.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "safe-buffer": "~5.1.0"
+              }
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "strip-json-comments": {
+              "version": "2.0.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "tar": {
+              "version": "4.4.13",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "chownr": "^1.1.1",
+                "fs-minipass": "^1.2.5",
+                "minipass": "^2.8.6",
+                "minizlib": "^1.2.1",
+                "mkdirp": "^0.5.0",
+                "safe-buffer": "^5.1.2",
+                "yallist": "^3.0.3"
+              }
+            },
+            "util-deprecate": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "wide-align": {
+              "version": "1.1.3",
+              "bundled": true,
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "string-width": "^1.0.2 || 2"
+              }
+            },
+            "wrappy": {
+              "version": "1.0.2",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            },
+            "yallist": {
+              "version": "3.1.1",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
           }
         },
@@ -626,33 +1230,73 @@
           "dev": true
         },
+        "invert-kv": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+          "dev": true
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
         "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "is-number": {
           "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
-        "p-locate": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-          "dev": true
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        },
+        "lcid": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^2.0.0"
+          }
+        },
+        "os-locale": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+          "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "lcid": "^2.0.0",
+            "mem": "^4.0.0"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
         },
         "require-main-filename": {
@@ -662,10 +1306,4 @@
           "dev": true
         },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        },
         "source-map": {
           "version": "0.6.1",
@@ -675,28 +1313,49 @@
         },
         "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
           }
         },
         "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        },
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==",
-          "dev": true
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
         },
         "which-module": {
@@ -706,15 +1365,4 @@
           "dev": true
         },
-        "wrap-ansi": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
         "y18n": {
           "version": "4.0.0",
@@ -724,26 +1372,26 @@
         },
         "yargs": {
-          "version": "15.3.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz",
-          "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==",
-          "dev": true,
-          "requires": {
-            "cliui": "^6.0.0",
-            "decamelize": "^1.2.0",
-            "find-up": "^4.1.0",
+          "version": "13.1.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz",
+          "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "find-up": "^3.0.0",
             "get-caller-file": "^2.0.1",
+            "os-locale": "^3.1.0",
             "require-directory": "^2.1.1",
             "require-main-filename": "^2.0.0",
             "set-blocking": "^2.0.0",
-            "string-width": "^4.2.0",
+            "string-width": "^3.0.0",
             "which-module": "^2.0.0",
             "y18n": "^4.0.0",
-            "yargs-parser": "^18.1.0"
+            "yargs-parser": "^13.0.0"
           }
         },
         "yargs-parser": {
-          "version": "18.1.3",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "version": "13.1.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+          "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
           "dev": true,
           "requires": {
@@ -755,120 +1403,58 @@
     },
     "@angular/core": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.0.4.tgz",
-      "integrity": "sha512-lA8RDagJ/O0gUX95h00+nnUZs/1QmmhAVWVtHcuI12ueC836tJhLtPGnEx9ib9NXrgRyNwb8lO1xJPmmuQgdQQ==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.12.tgz",
+      "integrity": "sha512-wEFwhHCuuXynXAMeA1G+0KIYY0jqXYs7I8p+GO+ufKoUmzWHFTvtMJ6nvKgy+LmZTByO2gf9oVAAlRodNb8ttQ==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/forms": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.0.4.tgz",
-      "integrity": "sha512-SJSYZCfHua9fi/dks1q+ad9OGBblRUn3Q1V4B7r99fJYr39qRiIHcegikhY4h8H3Wk1bJRGJG7iXmxJhjWXK3Q==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.12.tgz",
+      "integrity": "sha512-y1UObndCGbTYwLSzUWzCiX7th+mb4n712asApooGmfmIQmgTyHbKxYUJ9Ep1pgd0pqLBBnK249MQLH15NDpbyQ==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/language-service": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.0.4.tgz",
-      "integrity": "sha512-m5dWL1Lg9M4kDA/kjpdyKsrx9arbIebrgsSzr/QG7cPon6SQMRs9ECZBM+3GalkQghrPO1mLgnrUwFBUH2QNPw==",
-      "dev": true
-    },
-    "@angular/material": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-10.1.0.tgz",
-      "integrity": "sha512-zHJxMHYAyfJbhXGhsWUFTABBBQVzWNexuJGWh19MQx0jQn7aLek5nYQ0oLG00+ArISVAg/XMOtnbdRaemFWVzw==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
-      }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.2.12.tgz",
+      "integrity": "sha512-uXGVSC4ugkyBt7pYdI8qaKNV0TIxfjSWb3dWNuhD6b9riPtaa+xJFQrfMu7OX/tVX642aFxca4jkUHBLCyWptA==",
+      "dev": true
     },
     "@angular/platform-browser": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.0.4.tgz",
-      "integrity": "sha512-iaZ8pFS5XUgPCO6/C47TzSFPzlzgleayq099cVOOx9z0t/SwUCSKt4AdAVhyQ8RTnx6l1JmmwBgRaXpScZlqzg==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.12.tgz",
+      "integrity": "sha512-VBvMjmFJapZ2pFlmxZiHtfPwbHp79RRi5mrdMhETjKMaLaC2tAR/99ijCpx2urDMqb/VDm7YHOtoLEpBFVDulg==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.4.tgz",
-      "integrity": "sha512-RoUMqYhUwF6+Mvk/aH0IZQ1D0SDEi9k5EZlx9CJ3RvNuKygk7to+S4vMWVpGxFQlwdS3bytRLKi+Kki6f4nLkg==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.12.tgz",
+      "integrity": "sha512-O4krb+9tj028JOQHPgLk/87lyUlHt8dpNxzuYCT0G6kEmknjpyZBaxhvDPygGjGHXV3LDqlYVH+bh8ygJUhwmw==",
+      "requires": {
+        "tslib": "^1.9.0"
       }
     },
     "@angular/platform-server": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-10.0.4.tgz",
-      "integrity": "sha512-4vPk4ifNmyDJRaQq9+1TDeufZtD4uhtQ6XoorDSCZqBW5krT60cwW2ZB7kf/NWq+Sox1WgqKdhohaWZFbRjWTA==",
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-8.2.12.tgz",
+      "integrity": "sha512-NQvfW3YnM2FBdNpfIAKBnGjit/ZimtWEt60xskoQ+GcusJIbsB6m78XTYZru1S7CBHW3TeUztKMNZmI2MjU6Cw==",
       "requires": {
         "domino": "^2.1.2",
-        "tslib": "^2.0.0",
-        "xhr2": "^0.2.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
+        "tslib": "^1.9.0",
+        "xhr2": "^0.1.4"
       }
     },
     "@angular/router": {
-      "version": "10.0.4",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.0.4.tgz",
-      "integrity": "sha512-iDLWdmltU5pZ6M/fBKC5Kg2o9Aqb1YJ+oHXFu186BQAl2RNeNCmMQ0VaCxjpMgD/MoSxpuRuGQ6rRrCSFCxtcQ==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
-          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
-        }
-      }
-    },
-    "@asymmetrik/ngx-leaflet": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@asymmetrik/ngx-leaflet/-/ngx-leaflet-8.1.0.tgz",
-      "integrity": "sha512-lq7LduBP/vXcaSEmKnx7mzCR8WsoYqh9pB6BNnq53yeCwsqRbG3GdKye1/i8VvoRzjDsmQBPQsIFZ9uclXrtgg=="
+      "version": "8.2.12",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.12.tgz",
+      "integrity": "sha512-mq1FethFpYosSVzChstMpxZlL+oUFeaA+FrzZQL7zJP/mm61yFkkhoYGVG6pG0NWSzpJE4NY6YvGCvHgN4ZECw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
     },
     "@babel/code-frame": {
@@ -881,27 +1467,46 @@
     },
     "@babel/compat-data": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz",
-      "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.9.1",
+      "version": "7.8.5",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz",
+      "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.8.5",
         "invariant": "^2.2.4",
         "semver": "^5.5.0"
+      },
+      "dependencies": {
+        "browserslist": {
+          "version": "4.8.7",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.7.tgz",
+          "integrity": "sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA==",
+          "dev": true,
+          "requires": {
+            "caniuse-lite": "^1.0.30001027",
+            "electron-to-chromium": "^1.3.349",
+            "node-releases": "^1.1.49"
+          }
+        },
+        "caniuse-lite": {
+          "version": "1.0.30001028",
+          "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001028.tgz",
+          "integrity": "sha512-Vnrq+XMSHpT7E+LWoIYhs3Sne8h9lx9YJV3acH3THNCwU/9zV93/ta4xVfzTtnqd3rvnuVpVjE3DFqf56tr3aQ==",
+          "dev": true
+        }
       }
     },
     "@babel/core": {
-      "version": "7.8.7",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz",
-      "integrity": "sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz",
+      "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.8.3",
-        "@babel/generator": "^7.8.7",
-        "@babel/helpers": "^7.8.4",
-        "@babel/parser": "^7.8.7",
-        "@babel/template": "^7.8.6",
-        "@babel/traverse": "^7.8.6",
-        "@babel/types": "^7.8.7",
+        "@babel/generator": "^7.8.3",
+        "@babel/helpers": "^7.8.3",
+        "@babel/parser": "^7.8.3",
+        "@babel/template": "^7.8.3",
+        "@babel/traverse": "^7.8.3",
+        "@babel/types": "^7.8.3",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
@@ -915,69 +1520,13 @@
       "dependencies": {
         "@babel/generator": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-          "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.9.5",
+          "version": "7.8.4",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+          "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.8.3",
             "jsesc": "^2.5.1",
             "lodash": "^4.17.13",
             "source-map": "^0.5.0"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
-          "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-get-function-arity": "^7.8.3",
-            "@babel/template": "^7.8.3",
-            "@babel/types": "^7.9.5"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.9.4",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-          "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.8.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-          "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.8.3",
-            "@babel/parser": "^7.8.6",
-            "@babel/types": "^7.8.6"
-          }
-        },
-        "@babel/traverse": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-          "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.8.3",
-            "@babel/generator": "^7.9.5",
-            "@babel/helper-function-name": "^7.9.5",
-            "@babel/helper-split-export-declaration": "^7.8.3",
-            "@babel/parser": "^7.9.0",
-            "@babel/types": "^7.9.5",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0",
-            "lodash": "^4.17.13"
-          }
-        },
-        "@babel/types": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-          "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.9.5",
-            "lodash": "^4.17.13",
-            "to-fast-properties": "^2.0.0"
           }
         },
@@ -992,10 +1541,10 @@
         },
         "json5": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
-          "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.5"
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+          "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
           }
         },
@@ -1047,26 +1596,55 @@
       }
     },
+    "@babel/helper-call-delegate": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz",
+      "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.8.3",
+        "@babel/traverse": "^7.8.3",
+        "@babel/types": "^7.8.3"
+      }
+    },
     "@babel/helper-compilation-targets": {
-      "version": "7.8.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz",
-      "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.8.6",
-        "browserslist": "^4.9.1",
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz",
+      "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.8.4",
+        "browserslist": "^4.8.5",
         "invariant": "^2.2.4",
         "levenary": "^1.1.1",
         "semver": "^5.5.0"
+      },
+      "dependencies": {
+        "browserslist": {
+          "version": "4.8.7",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.7.tgz",
+          "integrity": "sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA==",
+          "dev": true,
+          "requires": {
+            "caniuse-lite": "^1.0.30001027",
+            "electron-to-chromium": "^1.3.349",
+            "node-releases": "^1.1.49"
+          }
+        },
+        "caniuse-lite": {
+          "version": "1.0.30001028",
+          "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001028.tgz",
+          "integrity": "sha512-Vnrq+XMSHpT7E+LWoIYhs3Sne8h9lx9YJV3acH3THNCwU/9zV93/ta4xVfzTtnqd3rvnuVpVjE3DFqf56tr3aQ==",
+          "dev": true
+        }
       }
     },
     "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.8.8",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz",
-      "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.8.3",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz",
+      "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==",
+      "dev": true,
+      "requires": {
         "@babel/helper-regex": "^7.8.3",
-        "regexpu-core": "^4.7.0"
+        "regexpu-core": "^4.6.0"
       }
     },
@@ -1140,46 +1718,15 @@
     },
     "@babel/helper-module-transforms": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
-      "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz",
+      "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==",
       "dev": true,
       "requires": {
         "@babel/helper-module-imports": "^7.8.3",
-        "@babel/helper-replace-supers": "^7.8.6",
         "@babel/helper-simple-access": "^7.8.3",
         "@babel/helper-split-export-declaration": "^7.8.3",
-        "@babel/template": "^7.8.6",
-        "@babel/types": "^7.9.0",
+        "@babel/template": "^7.8.3",
+        "@babel/types": "^7.8.3",
         "lodash": "^4.17.13"
-      },
-      "dependencies": {
-        "@babel/parser": {
-          "version": "7.9.4",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-          "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.8.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
-          "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.8.3",
-            "@babel/parser": "^7.8.6",
-            "@babel/types": "^7.8.6"
-          }
-        },
-        "@babel/types": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-          "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.9.5",
-            "lodash": "^4.17.13",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
@@ -1222,87 +1769,13 @@
     },
     "@babel/helper-replace-supers": {
-      "version": "7.8.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
-      "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz",
+      "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==",
       "dev": true,
       "requires": {
         "@babel/helper-member-expression-to-functions": "^7.8.3",
         "@babel/helper-optimise-call-expression": "^7.8.3",
-        "@babel/traverse": "^7.8.6",
-        "@babel/types": "^7.8.6"
-      },
-      "dependencies": {
-        "@babel/generator": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-          "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.9.5",
-            "jsesc": "^2.5.1",
-            "lodash": "^4.17.13",
-            "source-map": "^0.5.0"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
-          "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-get-function-arity": "^7.8.3",
-            "@babel/template": "^7.8.3",
-            "@babel/types": "^7.9.5"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.9.4",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-          "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-          "dev": true
-        },
-        "@babel/traverse": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-          "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.8.3",
-            "@babel/generator": "^7.9.5",
-            "@babel/helper-function-name": "^7.9.5",
-            "@babel/helper-split-export-declaration": "^7.8.3",
-            "@babel/parser": "^7.9.0",
-            "@babel/types": "^7.9.5",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0",
-            "lodash": "^4.17.13"
-          }
-        },
-        "@babel/types": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-          "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.9.5",
-            "lodash": "^4.17.13",
-            "to-fast-properties": "^2.0.0"
-          }
-        },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        }
+        "@babel/traverse": "^7.8.3",
+        "@babel/types": "^7.8.3"
       }
     },
@@ -1326,10 +1799,4 @@
       }
     },
-    "@babel/helper-validator-identifier": {
-      "version": "7.9.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
-      "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
-      "dev": true
-    },
     "@babel/helper-wrap-function": {
       "version": "7.8.3",
@@ -1345,86 +1812,12 @@
     },
     "@babel/helpers": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
-      "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
+      "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
       "dev": true,
       "requires": {
         "@babel/template": "^7.8.3",
-        "@babel/traverse": "^7.9.0",
-        "@babel/types": "^7.9.0"
-      },
-      "dependencies": {
-        "@babel/generator": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
-          "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.9.5",
-            "jsesc": "^2.5.1",
-            "lodash": "^4.17.13",
-            "source-map": "^0.5.0"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
-          "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-get-function-arity": "^7.8.3",
-            "@babel/template": "^7.8.3",
-            "@babel/types": "^7.9.5"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.9.4",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-          "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
-          "dev": true
-        },
-        "@babel/traverse": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
-          "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.8.3",
-            "@babel/generator": "^7.9.5",
-            "@babel/helper-function-name": "^7.9.5",
-            "@babel/helper-split-export-declaration": "^7.8.3",
-            "@babel/parser": "^7.9.0",
-            "@babel/types": "^7.9.5",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0",
-            "lodash": "^4.17.13"
-          }
-        },
-        "@babel/types": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-          "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.9.5",
-            "lodash": "^4.17.13",
-            "to-fast-properties": "^2.0.0"
-          }
-        },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
-        }
+        "@babel/traverse": "^7.8.4",
+        "@babel/types": "^7.8.3"
       }
     },
@@ -1515,12 +1908,11 @@
     },
     "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.9.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz",
-      "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==",
       "dev": true,
       "requires": {
         "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-        "@babel/plugin-transform-parameters": "^7.9.5"
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.0"
       }
     },
@@ -1536,7 +1928,7 @@
     },
     "@babel/plugin-proposal-optional-chaining": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz",
-      "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==",
       "dev": true,
       "requires": {
@@ -1546,10 +1938,10 @@
     },
     "@babel/plugin-proposal-unicode-property-regex": {
-      "version": "7.8.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz",
-      "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.8.8",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz",
+      "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3"
       }
@@ -1667,41 +2059,17 @@
     },
     "@babel/plugin-transform-classes": {
-      "version": "7.9.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz",
-      "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz",
+      "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==",
       "dev": true,
       "requires": {
         "@babel/helper-annotate-as-pure": "^7.8.3",
         "@babel/helper-define-map": "^7.8.3",
-        "@babel/helper-function-name": "^7.9.5",
+        "@babel/helper-function-name": "^7.8.3",
         "@babel/helper-optimise-call-expression": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-replace-supers": "^7.8.6",
+        "@babel/helper-replace-supers": "^7.8.3",
         "@babel/helper-split-export-declaration": "^7.8.3",
         "globals": "^11.1.0"
-      },
-      "dependencies": {
-        "@babel/helper-function-name": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
-          "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-get-function-arity": "^7.8.3",
-            "@babel/template": "^7.8.3",
-            "@babel/types": "^7.9.5"
-          }
-        },
-        "@babel/types": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-          "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.9.5",
-            "lodash": "^4.17.13",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
@@ -1716,7 +2084,7 @@
     },
     "@babel/plugin-transform-destructuring": {
-      "version": "7.9.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz",
-      "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz",
+      "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==",
       "dev": true,
       "requires": {
@@ -1754,7 +2122,7 @@
     },
     "@babel/plugin-transform-for-of": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz",
-      "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==",
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz",
+      "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==",
       "dev": true,
       "requires": {
@@ -1791,10 +2159,10 @@
     },
     "@babel/plugin-transform-modules-amd": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
-      "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.9.0",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz",
+      "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3",
         "babel-plugin-dynamic-import-node": "^2.3.0"
@@ -1802,10 +2170,10 @@
     },
     "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz",
-      "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.9.0",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz",
+      "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3",
         "@babel/helper-simple-access": "^7.8.3",
@@ -1814,11 +2182,11 @@
     },
     "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
-      "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz",
+      "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==",
       "dev": true,
       "requires": {
         "@babel/helper-hoist-variables": "^7.8.3",
-        "@babel/helper-module-transforms": "^7.9.0",
+        "@babel/helper-module-transforms": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3",
         "babel-plugin-dynamic-import-node": "^2.3.0"
@@ -1826,10 +2194,10 @@
     },
     "@babel/plugin-transform-modules-umd": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
-      "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-transforms": "^7.9.0",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz",
+      "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3"
       }
@@ -1864,9 +2232,10 @@
     },
     "@babel/plugin-transform-parameters": {
-      "version": "7.9.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz",
-      "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==",
-      "dev": true,
-      "requires": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz",
+      "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-call-delegate": "^7.8.3",
         "@babel/helper-get-function-arity": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3"
@@ -1883,10 +2252,10 @@
     },
     "@babel/plugin-transform-regenerator": {
-      "version": "7.8.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
-      "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
-      "dev": true,
-      "requires": {
-        "regenerator-transform": "^0.14.2"
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz",
+      "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==",
+      "dev": true,
+      "requires": {
+        "regenerator-transform": "^0.14.0"
       }
     },
@@ -1958,11 +2327,11 @@
     },
     "@babel/preset-env": {
-      "version": "7.8.7",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.7.tgz",
-      "integrity": "sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.8.6",
-        "@babel/helper-compilation-targets": "^7.8.7",
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz",
+      "integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.8.0",
+        "@babel/helper-compilation-targets": "^7.8.3",
         "@babel/helper-module-imports": "^7.8.3",
         "@babel/helper-plugin-utils": "^7.8.3",
@@ -1987,5 +2356,5 @@
         "@babel/plugin-transform-block-scoped-functions": "^7.8.3",
         "@babel/plugin-transform-block-scoping": "^7.8.3",
-        "@babel/plugin-transform-classes": "^7.8.6",
+        "@babel/plugin-transform-classes": "^7.8.3",
         "@babel/plugin-transform-computed-properties": "^7.8.3",
         "@babel/plugin-transform-destructuring": "^7.8.3",
@@ -1993,5 +2362,5 @@
         "@babel/plugin-transform-duplicate-keys": "^7.8.3",
         "@babel/plugin-transform-exponentiation-operator": "^7.8.3",
-        "@babel/plugin-transform-for-of": "^7.8.6",
+        "@babel/plugin-transform-for-of": "^7.8.3",
         "@babel/plugin-transform-function-name": "^7.8.3",
         "@babel/plugin-transform-literals": "^7.8.3",
@@ -2004,7 +2373,7 @@
         "@babel/plugin-transform-new-target": "^7.8.3",
         "@babel/plugin-transform-object-super": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.8.7",
+        "@babel/plugin-transform-parameters": "^7.8.3",
         "@babel/plugin-transform-property-literals": "^7.8.3",
-        "@babel/plugin-transform-regenerator": "^7.8.7",
+        "@babel/plugin-transform-regenerator": "^7.8.3",
         "@babel/plugin-transform-reserved-words": "^7.8.3",
         "@babel/plugin-transform-shorthand-properties": "^7.8.3",
@@ -2012,42 +2381,12 @@
         "@babel/plugin-transform-sticky-regex": "^7.8.3",
         "@babel/plugin-transform-template-literals": "^7.8.3",
-        "@babel/plugin-transform-typeof-symbol": "^7.8.4",
+        "@babel/plugin-transform-typeof-symbol": "^7.8.3",
         "@babel/plugin-transform-unicode-regex": "^7.8.3",
-        "@babel/types": "^7.8.7",
-        "browserslist": "^4.8.5",
+        "@babel/types": "^7.8.3",
+        "browserslist": "^4.8.2",
         "core-js-compat": "^3.6.2",
         "invariant": "^2.2.2",
-        "levenary": "^1.1.1",
+        "levenary": "^1.1.0",
         "semver": "^5.5.0"
-      },
-      "dependencies": {
-        "@babel/types": {
-          "version": "7.9.5",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
-          "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.9.5",
-            "lodash": "^4.17.13",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
-      }
-    },
-    "@babel/runtime": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
-      "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
-      "dev": true,
-      "requires": {
-        "regenerator-runtime": "^0.13.4"
-      },
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.13.5",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
-          "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
-          "dev": true
-        }
       }
     },
@@ -2127,10 +2466,10 @@
     },
     "@ngtools/webpack": {
-      "version": "8.3.26",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.26.tgz",
-      "integrity": "sha512-w28u3Akvn37hE0HYwy/l6YrDBWxzh7TceYJz+5hRLmJu+BevSY/rNjZ22AlpVD8ZWqhFfvzJS9cuvAqDgH9rtw==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "8.3.26",
+      "version": "8.3.24",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.24.tgz",
+      "integrity": "sha512-OpR7t/99qNOpADayCuM67agBVdYkdbFyEEcOLaDFYh3LsefHOSSxtAGv8M77e7dguvtaljHTiVkMxgcXFsZM0Q==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "8.3.24",
         "enhanced-resolve": "4.1.0",
         "rxjs": "6.4.0",
@@ -2156,33 +2495,33 @@
     },
     "@schematics/angular": {
-      "version": "10.0.3",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.0.3.tgz",
-      "integrity": "sha512-Or2pCqjpPbAvmbxtfMosGwQbNbSL4xodK5Key7678ZAPGB+rcxrVkBI9yxEJ/qzF/LrmMoKqy0JCmVLK7Grpog==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "10.0.3",
-        "@angular-devkit/schematics": "10.0.3"
+      "version": "8.3.14",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.14.tgz",
+      "integrity": "sha512-1XXBh9+lowvltRlcCjDJa4GEr5Xq+uNJcxULHBaNY7YfQSwZ5KuyhTBWjCdKmMaTOV3pEcIHwyuNh26mpn98Bw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "8.3.14",
+        "@angular-devkit/schematics": "8.3.14"
       },
       "dependencies": {
         "@angular-devkit/core": {
-          "version": "10.0.3",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.3.tgz",
-          "integrity": "sha512-m27ogjq44j80x64RnEswSvy8UewUqeCVJBbEuY6fzrWoaiCf12sgPlrSCwjwfhtQrLgl1e/i9zYA7U6ulGRXyg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.2",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.5.5",
+          "version": "8.3.14",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.14.tgz",
+          "integrity": "sha512-+IYLbtCxwIpaieRj0wurEXBzZ/fDSdWbyrCfajzDerzsxqghNcafAXSazHXWwISqtbr/pAOuqUNR+mEk2XBz3Q==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.10.2",
+            "fast-json-stable-stringify": "2.0.0",
+            "magic-string": "0.25.3",
+            "rxjs": "6.4.0",
             "source-map": "0.7.3"
           }
         },
         "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
+          "version": "6.10.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+          "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
             "fast-json-stable-stringify": "^2.0.0",
             "json-schema-traverse": "^0.4.1",
@@ -2190,8 +2529,29 @@
           }
         },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+          "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.3",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz",
+          "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
         "rxjs": {
-          "version": "6.5.5",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-          "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
+          "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
           "dev": true,
           "requires": {
@@ -2208,40 +2568,39 @@
     },
     "@schematics/update": {
-      "version": "0.1000.3",
-      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1000.3.tgz",
-      "integrity": "sha512-Nncdklmzi1tyzkoAh7GlSslxriRhftlmfqPVmFHrrPRttYACtT/QH5qcWsrPgTPpHGINYEHrPjpeljsMoMchBQ==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "10.0.3",
-        "@angular-devkit/schematics": "10.0.3",
+      "version": "0.803.14",
+      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.14.tgz",
+      "integrity": "sha512-1erj7oaR2vKXo1DLE0s4BbbouBmgeAHEkPHQM7FPtyroZ18kytlT+qjTbsSnlRCwcFsjxmRkbRjXaXDz7ttsYQ==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "8.3.14",
+        "@angular-devkit/schematics": "8.3.14",
         "@yarnpkg/lockfile": "1.1.0",
         "ini": "1.3.5",
-        "npm-package-arg": "^8.0.0",
-        "pacote": "9.5.12",
-        "rxjs": "6.5.5",
-        "semver": "7.3.2",
+        "pacote": "9.5.5",
+        "rxjs": "6.4.0",
+        "semver": "6.3.0",
         "semver-intersect": "1.4.0"
       },
       "dependencies": {
         "@angular-devkit/core": {
-          "version": "10.0.3",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.3.tgz",
-          "integrity": "sha512-m27ogjq44j80x64RnEswSvy8UewUqeCVJBbEuY6fzrWoaiCf12sgPlrSCwjwfhtQrLgl1e/i9zYA7U6ulGRXyg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.2",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.5.5",
+          "version": "8.3.14",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.14.tgz",
+          "integrity": "sha512-+IYLbtCxwIpaieRj0wurEXBzZ/fDSdWbyrCfajzDerzsxqghNcafAXSazHXWwISqtbr/pAOuqUNR+mEk2XBz3Q==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.10.2",
+            "fast-json-stable-stringify": "2.0.0",
+            "magic-string": "0.25.3",
+            "rxjs": "6.4.0",
             "source-map": "0.7.3"
           }
         },
         "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
+          "version": "6.10.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+          "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
             "fast-json-stable-stringify": "^2.0.0",
             "json-schema-traverse": "^0.4.1",
@@ -2249,8 +2608,29 @@
           }
         },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+          "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.3",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz",
+          "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
         "rxjs": {
-          "version": "6.5.5",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-          "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
+          "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
           "dev": true,
           "requires": {
@@ -2259,7 +2639,7 @@
         },
         "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         },
@@ -2272,10 +2652,4 @@
       }
     },
-    "@types/color-name": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
-      "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
-      "dev": true
-    },
     "@types/events": {
       "version": "3.0.0",
@@ -2341,7 +2715,7 @@
     },
     "@types/webpack-sources": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz",
-      "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==",
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz",
+      "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==",
       "dev": true,
       "requires": {
@@ -2580,7 +2954,7 @@
     },
     "acorn": {
-      "version": "6.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
-      "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz",
+      "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==",
       "dev": true
     },
@@ -2642,13 +3016,4 @@
       "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
     },
-    "angular-rename": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/angular-rename/-/angular-rename-1.0.7.tgz",
-      "integrity": "sha512-exQd1ASkjHENW+b3dfF90Vsik4GQdiaGxhUKx8/EHPcWOeGDDSCHslWxcehYgQb7YfOe47Z4f22PBIIvldesxg==",
-      "requires": {
-        "fs": "0.0.1-security",
-        "path": "^0.12.7"
-      }
-    },
     "ansi-colors": {
       "version": "3.2.4",
@@ -2658,10 +3023,10 @@
     },
     "ansi-escapes": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
-      "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
-      "dev": true,
-      "requires": {
-        "type-fest": "^0.11.0"
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
+      "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
+      "dev": true,
+      "requires": {
+        "type-fest": "^0.8.1"
       }
     },
@@ -2989,7 +3354,7 @@
     },
     "babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+      "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
       "dev": true,
       "requires": {
@@ -3102,9 +3467,4 @@
         "callsite": "1.0.0"
       }
-    },
-    "big-integer": {
-      "version": "1.6.48",
-      "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
-      "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
     },
     "big.js": {
@@ -3328,13 +3688,12 @@
     },
     "browserslist": {
-      "version": "4.10.0",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz",
-      "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==",
-      "dev": true,
-      "requires": {
-        "caniuse-lite": "^1.0.30001035",
-        "electron-to-chromium": "^1.3.378",
-        "node-releases": "^1.1.52",
-        "pkg-up": "^3.1.0"
+      "version": "4.8.3",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz",
+      "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30001017",
+        "electron-to-chromium": "^1.3.322",
+        "node-releases": "^1.1.44"
       }
     },
@@ -3358,4 +3717,26 @@
         "isarray": "^1.0.0"
       }
+    },
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+      "dev": true,
+      "requires": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+      "dev": true
+    },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+      "dev": true
     },
     "buffer-from": {
@@ -3510,7 +3891,7 @@
     },
     "caniuse-lite": {
-      "version": "1.0.30001035",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz",
-      "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==",
+      "version": "1.0.30001019",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz",
+      "integrity": "sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g==",
       "dev": true
     },
@@ -3652,14 +4033,8 @@
       }
     },
-    "cli-spinners": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz",
-      "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==",
-      "dev": true
-    },
     "cli-width": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
-      "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
       "dev": true
     },
@@ -3988,7 +4363,7 @@
       "dependencies": {
         "cacache": {
-          "version": "12.0.4",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+          "version": "12.0.3",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+          "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
           "dev": true,
           "requires": {
@@ -4070,10 +4445,10 @@
     },
     "core-js-compat": {
-      "version": "3.6.5",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz",
-      "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.8.5",
+      "version": "3.6.4",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
+      "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.8.3",
         "semver": "7.0.0"
       },
@@ -4116,9 +4491,4 @@
       }
     },
-    "countup.js": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.0.6.tgz",
-      "integrity": "sha512-pcOaDNjW8dz3V5hCZTIwQpRDGm6tdxz0BRbcKEgCAr+j6jbJcdDdnumr4DpCSjhih7s1m/cWYZNC5MuFeSflFA=="
-    },
     "coverage-istanbul-loader": {
       "version": "2.0.3",
@@ -4134,23 +4504,11 @@
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
         "schema-utils": {
-          "version": "2.6.6",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz",
-          "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.12.0",
+          "version": "2.6.4",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz",
+          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.10.2",
             "ajv-keywords": "^3.4.1"
           }
@@ -4402,21 +4760,4 @@
       }
     },
-    "defaults": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
-      "dev": true,
-      "requires": {
-        "clone": "^1.0.2"
-      },
-      "dependencies": {
-        "clone": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-          "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
-          "dev": true
-        }
-      }
-    },
     "define-properties": {
       "version": "1.1.3",
@@ -4647,7 +4988,7 @@
     },
     "domino": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz",
-      "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ=="
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.4.tgz",
+      "integrity": "sha512-l70mlQ7IjPKC8kT7GljQXJZmt5OqFL+RE91ik5y5WWQtsd9wP8R7gpFnNu96fK5MqAAZRXfLLsnzKtkty5fWGQ=="
     },
     "duplexify": {
@@ -4679,7 +5020,7 @@
     },
     "electron-to-chromium": {
-      "version": "1.3.423",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.423.tgz",
-      "integrity": "sha512-jXdnLcawJ/EMdN+j77TC3YyeAWiIjo1U63DFCKrjtLv4cu8ToyoF4HYXtFvkVVHhEtIl7lU1uDd307Xj1/YDjw==",
+      "version": "1.3.354",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.354.tgz",
+      "integrity": "sha512-24YMkNiZWOUeF6YeoscWfIGP0oMx+lJpU/miwI+lcu7plIDpyZn8Gx0lx0qTDlzGoz7hx+lpyD8QkbkX5L2Pqw==",
       "dev": true
     },
@@ -5335,23 +5676,11 @@
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
         "schema-utils": {
-          "version": "2.6.6",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz",
-          "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.12.0",
+          "version": "2.6.4",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz",
+          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.10.2",
             "ajv-keywords": "^3.4.1"
           }
@@ -5448,7 +5777,7 @@
         },
         "make-dir": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
+          "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
           "dev": true,
           "requires": {
@@ -5499,7 +5828,7 @@
     },
     "flatted": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
-      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+      "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
       "dev": true
     },
@@ -5575,9 +5904,4 @@
       }
     },
-    "fs": {
-      "version": "0.0.1-security",
-      "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
-      "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
-    },
     "fs-extra": {
       "version": "7.0.1",
@@ -5589,13 +5913,4 @@
         "jsonfile": "^4.0.0",
         "universalify": "^0.1.0"
-      }
-    },
-    "fs-minipass": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
-      "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
-      "dev": true,
-      "requires": {
-        "minipass": "^2.6.0"
       }
     },
@@ -5784,7 +6099,7 @@
     },
     "handle-thing": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
-      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
+      "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
       "dev": true
     },
@@ -5962,7 +6277,7 @@
     },
     "html-entities": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
-      "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
       "dev": true
     },
@@ -6235,11 +6550,11 @@
     },
     "inquirer": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz",
-      "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==",
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz",
+      "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==",
       "dev": true,
       "requires": {
         "ansi-escapes": "^4.2.1",
-        "chalk": "^3.0.0",
+        "chalk": "^2.4.2",
         "cli-cursor": "^3.1.0",
         "cli-width": "^2.0.0",
@@ -6248,8 +6563,8 @@
         "lodash": "^4.17.15",
         "mute-stream": "0.0.8",
-        "run-async": "^2.4.0",
-        "rxjs": "^6.5.3",
+        "run-async": "^2.2.0",
+        "rxjs": "^6.4.0",
         "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0",
+        "strip-ansi": "^5.1.0",
         "through": "^2.3.6"
       },
@@ -6262,43 +6577,22 @@
         },
         "ansi-styles": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
-          "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
-          "dev": true,
-          "requires": {
-            "@types/color-name": "^1.1.1",
-            "color-convert": "^2.0.1"
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
         },
         "is-fullwidth-code-point": {
@@ -6317,22 +6611,41 @@
             "is-fullwidth-code-point": "^3.0.0",
             "strip-ansi": "^6.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
           }
         },
         "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            }
           }
         },
         "supports-color": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
-          "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
           }
         }
@@ -6377,7 +6690,7 @@
     },
     "ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+      "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
       "dev": true
     },
@@ -6490,10 +6803,4 @@
       "dev": true
     },
-    "is-docker": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz",
-      "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==",
-      "dev": true
-    },
     "is-extendable": {
       "version": "0.1.1",
@@ -6531,10 +6838,4 @@
       }
     },
-    "is-interactive": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
-      "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
-      "dev": true
-    },
     "is-number": {
       "version": "7.0.0",
@@ -6582,4 +6883,10 @@
       }
     },
+    "is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+      "dev": true
+    },
     "is-regex": {
       "version": "1.0.5",
@@ -6634,8 +6941,11 @@
     },
     "isbinaryfile": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz",
-      "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==",
-      "dev": true
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+      "dev": true,
+      "requires": {
+        "buffer-alloc": "^1.2.0"
+      }
     },
     "isexe": {
@@ -6997,9 +7307,10 @@
     },
     "karma": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.2.tgz",
-      "integrity": "sha512-RpUuCuGJfN3WnjYPGIH+VBF8023Lfm3TQH6D1kcNL+FxtEPc2UUz/nVjbVAGXH4Pm+Q7FVOAQjdAeFUpXpQ3IA==",
-      "dev": true,
-      "requires": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz",
+      "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.3.0",
         "body-parser": "^1.16.1",
         "braces": "^3.0.2",
@@ -7013,98 +7324,20 @@
         "graceful-fs": "^4.1.2",
         "http-proxy": "^1.13.0",
-        "isbinaryfile": "^4.0.2",
+        "isbinaryfile": "^3.0.0",
         "lodash": "^4.17.14",
         "log4js": "^4.0.0",
         "mime": "^2.3.1",
         "minimatch": "^3.0.2",
+        "optimist": "^0.6.1",
         "qjobs": "^1.1.4",
         "range-parser": "^1.2.0",
         "rimraf": "^2.6.0",
+        "safe-buffer": "^5.0.1",
         "socket.io": "2.1.1",
         "source-map": "^0.6.1",
         "tmp": "0.0.33",
-        "ua-parser-js": "0.7.21",
-        "yargs": "^15.3.1"
+        "useragent": "2.3.0"
       },
       "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
-          "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
-          "dev": true,
-          "requires": {
-            "@types/color-name": "^1.1.1",
-            "color-convert": "^2.0.1"
-          }
-        },
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        },
-        "cliui": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-          "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
-          "dev": true,
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.0",
-            "wrap-ansi": "^6.2.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "get-caller-file": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
         "mime": {
           "version": "2.4.4",
@@ -7113,25 +7346,4 @@
           "dev": true
         },
-        "p-locate": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-          "dev": true
-        },
-        "require-main-filename": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-          "dev": true
-        },
         "source-map": {
           "version": "0.6.1",
@@ -7140,24 +7352,4 @@
           "dev": true
         },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        },
         "tmp": {
           "version": "0.0.33",
@@ -7167,56 +7359,4 @@
           "requires": {
             "os-tmpdir": "~1.0.2"
-          }
-        },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-          "dev": true
-        },
-        "wrap-ansi": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "y18n": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
-          "dev": true
-        },
-        "yargs": {
-          "version": "15.3.1",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz",
-          "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==",
-          "dev": true,
-          "requires": {
-            "cliui": "^6.0.0",
-            "decamelize": "^1.2.0",
-            "find-up": "^4.1.0",
-            "get-caller-file": "^2.0.1",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^2.0.0",
-            "set-blocking": "^2.0.0",
-            "string-width": "^4.2.0",
-            "which-module": "^2.0.0",
-            "y18n": "^4.0.0",
-            "yargs-parser": "^18.1.1"
-          }
-        },
-        "yargs-parser": {
-          "version": "18.1.3",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-          "dev": true,
-          "requires": {
-            "camelcase": "^5.0.0",
-            "decamelize": "^1.2.0"
           }
         }
@@ -7273,7 +7413,7 @@
         },
         "source-map-support": {
-          "version": "0.5.19",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-          "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+          "version": "0.5.16",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+          "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
           "dev": true,
           "requires": {
@@ -7304,9 +7444,4 @@
         "invert-kv": "^1.0.0"
       }
-    },
-    "leaflet": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz",
-      "integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw=="
     },
     "less": {
@@ -7448,44 +7583,4 @@
       "dev": true
     },
-    "log-symbols": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
-      "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        },
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
     "log4js": {
       "version": "4.5.1",
@@ -7513,7 +7608,7 @@
     },
     "loglevel": {
-      "version": "1.6.8",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz",
-      "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==",
+      "version": "1.6.7",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz",
+      "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==",
       "dev": true
     },
@@ -7541,5 +7636,4 @@
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
       "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "optional": true,
       "requires": {
         "pseudomap": "^1.0.2",
@@ -7548,7 +7642,7 @@
     },
     "magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "version": "0.25.4",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
+      "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
       "dev": true,
       "requires": {
@@ -7599,4 +7693,27 @@
       },
       "dependencies": {
+        "cacache": {
+          "version": "12.0.3",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+          "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
         "lru-cache": {
           "version": "5.1.1",
@@ -7607,4 +7724,19 @@
             "yallist": "^3.0.2"
           }
+        },
+        "ssri": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "dev": true,
+          "requires": {
+            "figgy-pudding": "^3.5.1"
+          }
+        },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "dev": true
         },
         "yallist": {
@@ -7916,18 +8048,27 @@
     },
     "minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
-    "minipass": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-      "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.0"
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+    },
+    "minizlib": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+      "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+      "dev": true,
+      "requires": {
+        "minipass": "^2.9.0"
       },
       "dependencies": {
+        "minipass": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
+          }
+        },
         "yallist": {
           "version": "3.1.1",
@@ -7936,13 +8077,4 @@
           "dev": true
         }
-      }
-    },
-    "minizlib": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
-      "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
-      "dev": true,
-      "requires": {
-        "minipass": "^2.9.0"
       }
     },
@@ -7987,9 +8119,16 @@
     },
     "mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "requires": {
-        "minimist": "^1.2.5"
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+        }
       }
     },
@@ -8072,13 +8211,4 @@
       "dev": true
     },
-    "ngx-countup": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/ngx-countup/-/ngx-countup-7.3.1.tgz",
-      "integrity": "sha512-+nw3Axg/5R/09hjG1uOyOItdIxAxv8V1GNz0oR8MlB27tB5sH9aknCUPJiEfdPAGSCfMfG7nsURlz4WAoIDrhA==",
-      "requires": {
-        "countup.js": "^2.0.5",
-        "tslib": "^1.9.0"
-      }
-    },
     "nice-try": {
       "version": "1.0.5",
@@ -8097,7 +8227,7 @@
     },
     "node-fetch-npm": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
-      "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
+      "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==",
       "dev": true,
       "requires": {
@@ -8181,8 +8311,19 @@
     },
     "node-releases": {
-      "version": "1.1.53",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
-      "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==",
-      "dev": true
+      "version": "1.1.49",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.49.tgz",
+      "integrity": "sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg==",
+      "dev": true,
+      "requires": {
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
     },
     "node-sass": {
@@ -8264,21 +8405,4 @@
       }
     },
-    "npm-install-checks": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz",
-      "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==",
-      "dev": true,
-      "requires": {
-        "semver": "^7.1.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-          "dev": true
-        }
-      }
-    },
     "npm-normalize-package-bin": {
       "version": "1.0.1",
@@ -8288,44 +8412,13 @@
     },
     "npm-package-arg": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz",
-      "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^3.0.2",
-        "semver": "^7.0.0",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz",
+      "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.6.0",
+        "osenv": "^0.1.5",
+        "semver": "^5.5.0",
         "validate-npm-package-name": "^3.0.0"
-      },
-      "dependencies": {
-        "hosted-git-info": {
-          "version": "3.0.5",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz",
-          "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-          "dev": true
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-          "dev": true
-        }
       }
     },
@@ -8342,26 +8435,18 @@
     },
     "npm-pick-manifest": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz",
-      "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==",
-      "dev": true,
-      "requires": {
-        "npm-install-checks": "^4.0.0",
-        "npm-package-arg": "^8.0.0",
-        "semver": "^7.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-          "dev": true
-        }
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
+      "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
+      "dev": true,
+      "requires": {
+        "figgy-pudding": "^3.5.1",
+        "npm-package-arg": "^6.0.0",
+        "semver": "^5.4.1"
       }
     },
     "npm-registry-fetch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz",
-      "integrity": "sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz",
+      "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==",
       "dev": true,
       "requires": {
@@ -8384,20 +8469,8 @@
           }
         },
-        "npm-package-arg": {
-          "version": "6.1.1",
-          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
-          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
-          "dev": true,
-          "requires": {
-            "hosted-git-info": "^2.7.1",
-            "osenv": "^0.1.5",
-            "semver": "^5.6.0",
-            "validate-npm-package-name": "^3.0.0"
-          }
-        },
         "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
+          "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
           "dev": true
         },
@@ -8496,33 +8569,8 @@
     },
     "object-is": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
-      "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.5"
-      },
-      "dependencies": {
-        "es-abstract": {
-          "version": "1.17.5",
-          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
-          "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
-          "dev": true,
-          "requires": {
-            "es-to-primitive": "^1.2.1",
-            "function-bind": "^1.1.1",
-            "has": "^1.0.3",
-            "has-symbols": "^1.0.1",
-            "is-callable": "^1.1.5",
-            "is-regex": "^1.0.5",
-            "object-inspect": "^1.7.0",
-            "object-keys": "^1.1.1",
-            "object.assign": "^4.1.0",
-            "string.prototype.trimleft": "^2.1.1",
-            "string.prototype.trimright": "^2.1.1"
-          }
-        }
-      }
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz",
+      "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==",
+      "dev": true
     },
     "object-keys": {
@@ -8650,5 +8698,4 @@
       "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
       "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-      "optional": true,
       "requires": {
         "minimist": "~0.0.1",
@@ -8659,89 +8706,5 @@
           "version": "0.0.10",
           "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-          "optional": true
-        }
-      }
-    },
-    "ora": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz",
-      "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==",
-      "dev": true,
-      "requires": {
-        "chalk": "^3.0.0",
-        "cli-cursor": "^3.1.0",
-        "cli-spinners": "^2.2.0",
-        "is-interactive": "^1.0.0",
-        "log-symbols": "^3.0.0",
-        "mute-stream": "0.0.8",
-        "strip-ansi": "^6.0.0",
-        "wcwidth": "^1.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
-          "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
-          "dev": true,
-          "requires": {
-            "@types/color-name": "^1.1.1",
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
-          "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
+          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
         }
       }
@@ -8848,12 +8811,11 @@
     },
     "pacote": {
-      "version": "9.5.12",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz",
-      "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==",
+      "version": "9.5.5",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.5.tgz",
+      "integrity": "sha512-jAEP+Nqj4kyMWyNpfTU/Whx1jA7jEc5cCOlurm0/0oL+v8TAp1QSsK83N7bYe+2bEdFzMAtPG5TBebjzzGV0cA==",
       "dev": true,
       "requires": {
         "bluebird": "^3.5.3",
         "cacache": "^12.0.2",
-        "chownr": "^1.1.2",
         "figgy-pudding": "^3.5.1",
         "get-stream": "^4.1.0",
@@ -8867,8 +8829,7 @@
         "mkdirp": "^0.5.1",
         "normalize-package-data": "^2.4.0",
-        "npm-normalize-package-bin": "^1.0.0",
         "npm-package-arg": "^6.1.0",
         "npm-packlist": "^1.1.12",
-        "npm-pick-manifest": "^3.0.0",
+        "npm-pick-manifest": "^2.2.3",
         "npm-registry-fetch": "^4.0.0",
         "osenv": "^0.1.5",
@@ -8880,9 +8841,41 @@
         "semver": "^5.6.0",
         "ssri": "^6.0.1",
-        "tar": "^4.4.10",
+        "tar": "^4.4.8",
         "unique-filename": "^1.1.1",
         "which": "^1.3.1"
       },
       "dependencies": {
+        "cacache": {
+          "version": "12.0.3",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+          "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "fs-minipass": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+          "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+          "dev": true,
+          "requires": {
+            "minipass": "^2.6.0"
+          }
+        },
         "lru-cache": {
           "version": "5.1.1",
@@ -8894,20 +8887,18 @@
           }
         },
-        "npm-package-arg": {
-          "version": "6.1.1",
-          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
-          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
-          "dev": true,
-          "requires": {
-            "hosted-git-info": "^2.7.1",
-            "osenv": "^0.1.5",
-            "semver": "^5.6.0",
-            "validate-npm-package-name": "^3.0.0"
+        "minipass": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
           }
         },
         "npm-pick-manifest": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
-          "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz",
+          "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==",
           "dev": true,
           "requires": {
@@ -8915,4 +8906,13 @@
             "npm-package-arg": "^6.0.0",
             "semver": "^5.4.1"
+          }
+        },
+        "ssri": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "dev": true,
+          "requires": {
+            "figgy-pudding": "^3.5.1"
           }
         },
@@ -8932,4 +8932,10 @@
           }
         },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "dev": true
+        },
         "yallist": {
           "version": "3.1.1",
@@ -9014,28 +9020,4 @@
       "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
       "dev": true
-    },
-    "path": {
-      "version": "0.12.7",
-      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
-      "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
-      "requires": {
-        "process": "^0.11.1",
-        "util": "^0.10.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-        },
-        "util": {
-          "version": "0.10.4",
-          "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
-          "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
-          "requires": {
-            "inherits": "2.0.3"
-          }
-        }
-      }
     },
     "path-browserify": {
@@ -9160,24 +9142,4 @@
       }
     },
-    "pkg-up": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
-      "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
-      "dev": true,
-      "requires": {
-        "find-up": "^3.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        }
-      }
-    },
     "popper.js": {
       "version": "1.16.1",
@@ -9186,7 +9148,7 @@
     },
     "portfinder": {
-      "version": "1.0.26",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz",
-      "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==",
+      "version": "1.0.25",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
+      "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
       "dev": true,
       "requires": {
@@ -9304,7 +9266,7 @@
     },
     "postcss-value-parser": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
-      "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
+      "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
       "dev": true
     },
@@ -9324,5 +9286,6 @@
       "version": "0.11.10",
       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
     },
     "process-nextick-args": {
@@ -9419,11 +9382,11 @@
     },
     "proxy-addr": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
-      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+      "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
       "dev": true,
       "requires": {
         "forwarded": "~0.1.2",
-        "ipaddr.js": "1.9.1"
+        "ipaddr.js": "1.9.0"
       }
     },
@@ -9437,6 +9400,5 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "optional": true
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
     },
     "psl": {
@@ -9597,23 +9559,11 @@
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
         "schema-utils": {
-          "version": "2.6.6",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz",
-          "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.12.0",
+          "version": "2.6.4",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz",
+          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.10.2",
             "ajv-keywords": "^3.4.1"
           }
@@ -9733,7 +9683,7 @@
     },
     "regenerate-unicode-properties": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
-      "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+      "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
       "dev": true,
       "requires": {
@@ -9748,11 +9698,10 @@
     },
     "regenerator-transform": {
-      "version": "0.14.4",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
-      "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==",
-      "dev": true,
-      "requires": {
-        "@babel/runtime": "^7.8.4",
-        "private": "^0.1.8"
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+      "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+      "dev": true,
+      "requires": {
+        "private": "^0.1.6"
       }
     },
@@ -9778,15 +9727,15 @@
     },
     "regexpu-core": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz",
-      "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==",
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
+      "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
       "dev": true,
       "requires": {
         "regenerate": "^1.4.0",
-        "regenerate-unicode-properties": "^8.2.0",
-        "regjsgen": "^0.5.1",
-        "regjsparser": "^0.6.4",
+        "regenerate-unicode-properties": "^8.1.0",
+        "regjsgen": "^0.5.0",
+        "regjsparser": "^0.6.0",
         "unicode-match-property-ecmascript": "^1.0.4",
-        "unicode-match-property-value-ecmascript": "^1.2.0"
+        "unicode-match-property-value-ecmascript": "^1.1.0"
       }
     },
@@ -9798,7 +9747,7 @@
     },
     "regjsparser": {
-      "version": "0.6.4",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz",
-      "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==",
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz",
+      "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==",
       "dev": true,
       "requires": {
@@ -9960,8 +9909,11 @@
     },
     "run-async": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
-      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
-      "dev": true
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+      "dev": true,
+      "requires": {
+        "is-promise": "^2.1.0"
+      }
     },
     "run-queue": {
@@ -9975,7 +9927,7 @@
     },
     "rxjs": {
-      "version": "6.6.0",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz",
-      "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==",
+      "version": "6.5.4",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+      "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
       "requires": {
         "tslib": "^1.9.0"
@@ -10766,7 +10718,7 @@
     },
     "spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
+      "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
       "dev": true,
       "requires": {
@@ -11078,23 +11030,11 @@
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
-          "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
         "schema-utils": {
-          "version": "2.6.6",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz",
-          "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.12.0",
+          "version": "2.6.4",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz",
+          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.10.2",
             "ajv-keywords": "^3.4.1"
           }
@@ -11205,7 +11145,7 @@
         },
         "source-map-support": {
-          "version": "0.5.19",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-          "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+          "version": "0.5.16",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+          "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
           "dev": true,
           "requires": {
@@ -11287,5 +11227,4 @@
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
       "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
-      "optional": true,
       "requires": {
         "os-tmpdir": "~1.0.1"
@@ -11504,7 +11443,7 @@
     },
     "type-fest": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
-      "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
       "dev": true
     },
@@ -11526,13 +11465,7 @@
     },
     "typescript": {
-      "version": "3.9.7",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz",
-      "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==",
-      "dev": true
-    },
-    "ua-parser-js": {
-      "version": "0.7.21",
-      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz",
-      "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==",
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
+      "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
       "dev": true
     },
@@ -11560,13 +11493,13 @@
     },
     "unicode-match-property-value-ecmascript": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
-      "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+      "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
       "dev": true
     },
     "unicode-property-aliases-ecmascript": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
-      "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+      "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
       "dev": true
     },
@@ -11718,4 +11651,14 @@
       "dev": true
     },
+    "useragent": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
+      "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
+      "dev": true,
+      "requires": {
+        "lru-cache": "4.1.x",
+        "tmp": "0.0.x"
+      }
+    },
     "util": {
       "version": "0.11.1",
@@ -11807,10 +11750,10 @@
     },
     "watchpack": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz",
-      "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==",
-      "dev": true,
-      "requires": {
-        "chokidar": "^2.1.8",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+      "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+      "dev": true,
+      "requires": {
+        "chokidar": "^2.0.2",
         "graceful-fs": "^4.1.2",
         "neo-async": "^2.5.0"
@@ -11904,7 +11847,7 @@
         },
         "fsevents": {
-          "version": "1.2.12",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
-          "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
+          "version": "1.2.11",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+          "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
           "dev": true,
           "optional": true,
@@ -11960,5 +11903,5 @@
             },
             "chownr": {
-              "version": "1.1.4",
+              "version": "1.1.3",
               "bundled": true,
               "dev": true,
@@ -12132,5 +12075,5 @@
             },
             "minimist": {
-              "version": "1.2.5",
+              "version": "0.0.8",
               "bundled": true,
               "dev": true,
@@ -12157,10 +12100,10 @@
             },
             "mkdirp": {
-              "version": "0.5.3",
+              "version": "0.5.1",
               "bundled": true,
               "dev": true,
               "optional": true,
               "requires": {
-                "minimist": "^1.2.5"
+                "minimist": "0.0.8"
               }
             },
@@ -12172,5 +12115,5 @@
             },
             "needle": {
-              "version": "2.3.3",
+              "version": "2.4.0",
               "bundled": true,
               "dev": true,
@@ -12201,5 +12144,5 @@
             },
             "nopt": {
-              "version": "4.0.3",
+              "version": "4.0.1",
               "bundled": true,
               "dev": true,
@@ -12226,5 +12169,5 @@
             },
             "npm-packlist": {
-              "version": "1.4.8",
+              "version": "1.4.7",
               "bundled": true,
               "dev": true,
@@ -12232,6 +12175,5 @@
               "requires": {
                 "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1",
-                "npm-normalize-package-bin": "^1.0.1"
+                "npm-bundled": "^1.0.1"
               }
             },
@@ -12313,8 +12255,16 @@
                 "minimist": "^1.2.0",
                 "strip-json-comments": "~2.0.1"
+              },
+              "dependencies": {
+                "minimist": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "dev": true,
+                  "optional": true
+                }
               }
             },
             "readable-stream": {
-              "version": "2.3.7",
+              "version": "2.3.6",
               "bundled": true,
               "dev": true,
@@ -12511,13 +12461,4 @@
       "requires": {
         "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "wcwidth": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
-      "dev": true,
-      "requires": {
-        "defaults": "^1.0.3"
       }
     },
@@ -12797,7 +12738,7 @@
         },
         "fsevents": {
-          "version": "1.2.12",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
-          "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
+          "version": "1.2.11",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+          "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
           "dev": true,
           "optional": true,
@@ -12853,5 +12794,5 @@
             },
             "chownr": {
-              "version": "1.1.4",
+              "version": "1.1.3",
               "bundled": true,
               "dev": true,
@@ -13025,5 +12966,5 @@
             },
             "minimist": {
-              "version": "1.2.5",
+              "version": "0.0.8",
               "bundled": true,
               "dev": true,
@@ -13050,10 +12991,10 @@
             },
             "mkdirp": {
-              "version": "0.5.3",
+              "version": "0.5.1",
               "bundled": true,
               "dev": true,
               "optional": true,
               "requires": {
-                "minimist": "^1.2.5"
+                "minimist": "0.0.8"
               }
             },
@@ -13065,5 +13006,5 @@
             },
             "needle": {
-              "version": "2.3.3",
+              "version": "2.4.0",
               "bundled": true,
               "dev": true,
@@ -13094,5 +13035,5 @@
             },
             "nopt": {
-              "version": "4.0.3",
+              "version": "4.0.1",
               "bundled": true,
               "dev": true,
@@ -13119,5 +13060,5 @@
             },
             "npm-packlist": {
-              "version": "1.4.8",
+              "version": "1.4.7",
               "bundled": true,
               "dev": true,
@@ -13125,6 +13066,5 @@
               "requires": {
                 "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1",
-                "npm-normalize-package-bin": "^1.0.1"
+                "npm-bundled": "^1.0.1"
               }
             },
@@ -13206,8 +13146,16 @@
                 "minimist": "^1.2.0",
                 "strip-json-comments": "~2.0.1"
+              },
+              "dependencies": {
+                "minimist": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "dev": true,
+                  "optional": true
+                }
               }
             },
             "readable-stream": {
-              "version": "2.3.7",
+              "version": "2.3.6",
               "bundled": true,
               "dev": true,
@@ -13658,6 +13606,5 @@
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-      "optional": true
+      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
     },
     "worker-farm": {
@@ -13703,7 +13650,7 @@
     },
     "xhr2": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.0.tgz",
-      "integrity": "sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA=="
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz",
+      "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8="
     },
     "xml2js": {
@@ -13743,6 +13690,5 @@
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "optional": true
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
     },
     "yargs": {
@@ -13805,7 +13751,7 @@
     },
     "zone.js": {
-      "version": "0.10.3",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz",
-      "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg=="
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz",
+      "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag=="
     }
   }
Index: Farmatiko/ClientApp/package.json
===================================================================
--- Farmatiko/ClientApp/package.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/package.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -13,35 +13,28 @@
   "private": true,
   "dependencies": {
-    "@angular/animations": "10.0.4",
-    "@angular/cdk": "~10.1.0",
-    "@angular/common": "10.0.4",
-    "@angular/compiler": "10.0.4",
-    "@angular/core": "10.0.4",
-    "@angular/forms": "10.0.4",
-    "@angular/material": "^10.1.0",
-    "@angular/platform-browser": "10.0.4",
-    "@angular/platform-browser-dynamic": "10.0.4",
-    "@angular/platform-server": "10.0.4",
-    "@angular/router": "10.0.4",
-    "@asymmetrik/ngx-leaflet": "^8.1.0",
+    "@angular/animations": "8.2.12",
+    "@angular/common": "8.2.12",
+    "@angular/compiler": "8.2.12",
+    "@angular/core": "8.2.12",
+    "@angular/forms": "8.2.12",
+    "@angular/platform-browser": "8.2.12",
+    "@angular/platform-browser-dynamic": "8.2.12",
+    "@angular/platform-server": "8.2.12",
+    "@angular/router": "8.2.12",
     "@nguniversal/module-map-ngfactory-loader": "8.1.1",
-    "angular-rename": "^1.0.7",
     "aspnet-prerendering": "^3.0.1",
-    "big-integer": "^1.6.48",
     "bootstrap": "^4.3.1",
     "core-js": "^3.3.3",
     "jquery": "3.4.1",
-    "leaflet": "^1.7.1",
-    "ngx-countup": "^7.3.1",
     "oidc-client": "^1.9.1",
     "popper.js": "^1.16.0",
-    "rxjs": "^6.6.0",
-    "zone.js": "0.10.3"
+    "rxjs": "^6.5.3",
+    "zone.js": "0.9.1"
   },
   "devDependencies": {
-    "@angular-devkit/build-angular": "^0.803.26",
-    "@angular/cli": "^10.0.3",
-    "@angular/compiler-cli": "^10.0.4",
-    "@angular/language-service": "^10.0.4",
+    "@angular-devkit/build-angular": "^0.803.24",
+    "@angular/cli": "8.3.14",
+    "@angular/compiler-cli": "8.2.12",
+    "@angular/language-service": "8.2.12",
     "@types/jasmine": "~3.4.4",
     "@types/jasminewd2": "~2.0.8",
@@ -50,10 +43,10 @@
     "jasmine-core": "~3.5.0",
     "jasmine-spec-reporter": "~4.2.1",
-    "karma": "^5.0.2",
+    "karma": "^4.4.1",
     "karma-chrome-launcher": "~3.1.0",
     "karma-coverage-istanbul-reporter": "~2.1.0",
     "karma-jasmine": "~2.0.1",
     "karma-jasmine-html-reporter": "^1.4.2",
-    "typescript": "3.9.7"
+    "typescript": "3.5.3"
   },
   "optionalDependencies": {
Index: rmatiko/ClientApp/src/app/admin/admin.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/admin/admin.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,17 +1,0 @@
-a.navbar-brand img {
-    width: 200px;
-}
-
-.createform {
-    text-align: center;
-    padding: 20px;
-}
-
-mat-form-field {
-    width: 30vh;
-}
-
-h2 {
-    text-align: center;
-    padding: 50px;
-}
Index: rmatiko/ClientApp/src/app/admin/admin.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/admin/admin.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,83 +1,0 @@
-<header>
-    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
-      <div class="container">
-        <a class="navbar-brand" [routerLink]="['/']"><img src="../../assets/logo.png"></a>
-        <button class="navbar-toggler"
-                type="button"
-                data-toggle="collapse"
-                data-target=".navbar-collapse"
-                aria-label="Toggle navigation">
-          <span class="navbar-toggler-icon"></span>
-        </button>
-        <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
-          <ul class="navbar-nav flex-grow">
-            <li>Administration panel:</li> 
-            <li>&nbsp;Logged as <p *ngIf="head">{{adminHead.Name}}</p> </li>
-            <li (click)="logout()" class="btn btn-link"><a>Logout</a></li>
-          </ul>
-        </div>
-      </div>
-    </nav>
-</header>
-<mat-tab-group mat-stretch-tabs dynamicHeight>
-      <mat-tab label="Claiming requests"> 
-        <div class="wrapper">
-          <div>
-            <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="requests">
-              <thead>
-                <tr>
-                  <th>Account</th>
-                  <th>Pharmacy</th>
-                  <th>Action</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr *ngFor="let request of requests">
-                  <td>{{request.PharmacyHead.Name}} | {{request.PharmacyHead.Email}}</td>
-                  <td><a (click)="openPharmacyDialog(request.Pharmacy)">{{request.Pharmacy.name}}</a></td>
-                  <td><a (click)="approveRequest(request)">Approve</a> | <a (click)="rejectRequest(request)">Reject</a></td>
-                </tr>
-              </tbody>
-            </table>
-        </div>
-        </div>
-      </mat-tab>
-      <mat-tab label="Manage accounts">
-        <div class="wrapper">
-          <div>
-            <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="heads">
-              <thead>
-                <tr>
-                  <th>Account</th>
-                  <th>Actions</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr *ngFor="let head of heads">
-                  <td><a (click)="openPharmacyHeadDialog(head)">{{head.Name}}</a> | {{head.Email}}</td>
-                  <td><a (click)="deletePharmacyHead(head)" *ngIf="head.Name !== 'Admin'">Delete</a><span *ngIf="head.Name == 'Admin'">Can't delete Admin</span> | <a (click)="openEditPharmacyHeadDialog(head)">Change</a></td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-        </div>
-      </mat-tab>
-        <mat-tab label="Create new account">
-          <h2 *ngIf="!this.head">Loading form...</h2>
-          <div class="createform" *ngIf="this.head">
-          <mat-form-field appearance="fill">
-            <mat-label>Name</mat-label>
-            <input matInput [(ngModel)]="this.head.Name">
-          </mat-form-field><br>
-          <mat-form-field appearance="fill">
-            <mat-label>Email</mat-label>
-            <input matInput [(ngModel)]="this.head.Email">
-          </mat-form-field><br>
-          <mat-form-field appearance="fill">
-            <mat-label>Password</mat-label>
-            <input matInput [(ngModel)]="this.head.Passwd">
-          </mat-form-field><br>
-            <button (click)="createHead()" mat-raised-button color="primary">Create</button>
-          </div>
-        </mat-tab>
-</mat-tab-group>
Index: rmatiko/ClientApp/src/app/admin/admin.component.spec.ts
===================================================================
--- Farmatiko/ClientApp/src/app/admin/admin.component.spec.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { AdminComponent } from './admin.component';
-
-describe('AdminComponent', () => {
-  let component: AdminComponent;
-  let fixture: ComponentFixture<AdminComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ AdminComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(AdminComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: rmatiko/ClientApp/src/app/admin/admin.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/admin/admin.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,163 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-import { MatDialog } from '@angular/material/dialog';
-import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar';
-import { Router } from '@angular/router';
-import { IPharmacyHead, IPharmacyHeadRequest, IPharmacy } from '../shared/interfaces';
-import { DataService } from '../shared/data.service';
-import { EditPharmacyHeadDialogComponent } from '../dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component';
-import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component';
-import { PharmacyHeadDialogComponent } from '../dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component';
-import { AuthService } from '../shared/services/auth.service';
-
-
-@Component({
-  selector: 'app-admin',
-  templateUrl: './admin.component.html',
-  styleUrls: ['./admin.component.css']
-})
-export class AdminComponent implements OnInit {
-  public heads: IPharmacyHead[] = [];
-  public requests: IPharmacyHeadRequest[] = [];
-  public head: IPharmacyHead = {
-    Email: '',
-    Passwd: '',
-    Name: ''
-  };
-  public adminHead: IPharmacyHead;
-
-  constructor(private dataService: DataService, private authService: AuthService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) {
-
-  }
-
-  ngOnInit(): void {
-    this.authService.getUser()
-        .subscribe((data) => {
-          console.log(data);
-          this.adminHead = data;
-        },
-        (err: any) => console.log(err),
-        () => console.log('User data retrieved'));
-
-    this.dataService.getPharmacyHeads()
-        .subscribe((pHeads: IPharmacyHead[]) => {
-          this.heads = pHeads;
-        },
-        (err: any) => console.log(err),
-        () => console.log("PharmacyHead data retrieved"));
-
-    this.dataService.getClaimingRequests()
-        .subscribe((pRequests: IPharmacyHeadRequest[]) => {
-          this.requests = pRequests;
-        },
-        (err: any) => console.log(err),
-        () => console.log("PharmacyHead data retrieved"));
-  }
-
-  createHead() {
-    this.dataService.insertPharmacyHead(this.head)
-        .subscribe((cHead) => {
-            this.heads.push(cHead);
-            this.openSnackBar("New head created!","OK");
-        },
-        (err: any) => console.log(err),
-        () => console.log("PharmacyHead inserted"));
-    this.head = {
-      Email: '',
-      Passwd: '',
-      Name: ''
-    };
-  }
-
-  deletePharmacyHead(dHead: IPharmacyHead) {
-    this.dataService.deletePharmacyHead(dHead.id)
-        .subscribe((status: boolean) => {
-          if(status) {
-            this.openSnackBar("Head deleted!","OK");
-          }
-        },
-        (err: any) => console.log(err),
-        () => {
-          console.log("PharmacyHead deleted");
-          location.reload();
-        });
-  }
-
-  openEditPharmacyHeadDialog(eHead: IPharmacyHead) {
-    let dialogRef = this.dialog.open(EditPharmacyHeadDialogComponent, {
-      width: '450px',
-      data: eHead
-    });
-    dialogRef.afterClosed().subscribe((editedHead: IPharmacyHead) => {
-      if(editedHead) {
-          console.log(editedHead);
-          this.heads = this.heads.filter(x => x !== eHead);
-          this.heads.push(editedHead);
-          this.dataService.updatePharmacyHead(editedHead)
-              .subscribe((hd: IPharmacyHead) => {
-                  this.openSnackBar("Success! PharmacyHead edited", "OK").onAction().subscribe(() => {
-                    location.reload();
-                  });
-              },
-              (err: any) => console.log(err),
-              () => console.log('PharmacyHead data updated'));
-      }
-    });
-  }
-
-  openPharmacyDialog(pharmacy: IPharmacy): void {
-    this.dialog.open(PharmacyDialogComponent, {
-      width: '450px',
-      data: pharmacy
-    });
-  }
-
-  openPharmacyHeadDialog(hd: IPharmacyHead): void {
-    this.dialog.open(PharmacyHeadDialogComponent, {
-      width: '450px',
-      data: hd
-    });
-  }
-
-  rejectRequest(req: IPharmacyHeadRequest) {
-    this.dataService.deleteClaimingRequest(req)
-        .subscribe((status: boolean) => {
-          if(status) {
-            this.openSnackBar("Request processed!","OK");
-          }
-        },
-        (err: any) => console.log(err),
-        () => {
-          console.log("PharmacyHeadRequest deleted");
-          location.reload();
-        });
-  }
-
-  approveRequest(req: IPharmacyHeadRequest) {
-    if(req) {
-      if (req.PharmacyHead.Pharmacy == null){
-        req.PharmacyHead.Pharmacy = [];
-      }
-    req.PharmacyHead.Pharmacy.push(req.Pharmacy);
-    this.dataService.updatePharmacyHead(req.PharmacyHead)
-        .subscribe(() => {
-          this.rejectRequest(req);
-        },
-        (err: any) => console.log(err),
-        () => {
-          console.log("PharmacyHead updated");
-          location.reload();
-        })
-    }
-  }
-
-  logout() {
-    this.authService.logout();
-  }
-
-  openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> {
-    return this.snackBar.open(message, action, {
-      duration: 5000,
-    });
-  }
-
-}
Index: Farmatiko/ClientApp/src/app/app.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/app.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/app.component.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,3 +1,4 @@
 <body>
+  <app-nav-menu></app-nav-menu>
   <div class="container">
     <router-outlet></router-outlet>
Index: Farmatiko/ClientApp/src/app/app.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/app.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/app.component.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,4 +1,3 @@
 import { Component } from '@angular/core';
-import { MaterialModule } from './shared/material.module'
 
 @Component({
Index: Farmatiko/ClientApp/src/app/app.module.ts
===================================================================
--- Farmatiko/ClientApp/src/app/app.module.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/app.module.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -4,30 +4,10 @@
 import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
 import { RouterModule } from '@angular/router';
-import { MaterialModule } from './shared/material.module';
-import { ReactiveFormsModule } from '@angular/forms';
-import { LeafletModule } from '@asymmetrik/ngx-leaflet';
 
-import { CoreModule } from './shared/core.module';
-
-import { AuthGuard } from './shared/guards/auth.guard';
-import { DataService } from './shared/data.service';
 import { AppComponent } from './app.component';
 import { NavMenuComponent } from './nav-menu/nav-menu.component';
 import { HomeComponent } from './home/home.component';
 import { CounterComponent } from './counter/counter.component';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { KoronaComponent } from './korona/korona.component';
-import { AdminComponent } from './admin/admin.component';
-import { DashboardComponent } from './dashboard/dashboard.component';
-import { LoginComponent } from './login/login.component';
-import { MedicineDialogComponent } from './dialogs/medicine-dialog/medicine-dialog.component';
-import { PharmacyDialogComponent } from './dialogs/pharmacy-dialog/pharmacy-dialog.component';
-import { FacilityDialogComponent } from './dialogs/facility-dialog/facility-dialog.component';
-import { WorkerDialogComponent } from './dialogs/worker-dialog/worker-dialog.component';
-import { EditPharmacyDialogComponent } from './dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component';
-import { EditPharmacyHeadDialogComponent } from './dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component';
-import { PharmacyHeadDialogComponent } from './dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component';
-import { AddMedicineDialogComponent } from './dialogs/add-medicine-dialog/add-medicine-dialog.component';
-import { ListMedicinesDialogComponent } from './dialogs/list-medicines-dialog/list-medicines-dialog.component';
+import { FetchDataComponent } from './fetch-data/fetch-data.component';
 
 @NgModule({
@@ -37,17 +17,5 @@
     HomeComponent,
     CounterComponent,
-    KoronaComponent,
-    AdminComponent,
-    DashboardComponent,
-    LoginComponent,
-    MedicineDialogComponent,
-    PharmacyDialogComponent,
-    FacilityDialogComponent,
-    WorkerDialogComponent,
-    EditPharmacyDialogComponent,
-    EditPharmacyHeadDialogComponent,
-    PharmacyHeadDialogComponent,
-    AddMedicineDialogComponent,
-    ListMedicinesDialogComponent
+    FetchDataComponent
   ],
   imports: [
@@ -57,19 +25,9 @@
     RouterModule.forRoot([
       { path: '', component: HomeComponent, pathMatch: 'full' },
-      { path: 'mapa', component: CounterComponent },
-      { path: 'koronavirus', component: KoronaComponent },
-      { path: 'admin', component: AdminComponent, canActivate: [AuthGuard] },
-      { path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
-      { path: 'login', component: LoginComponent }
-    ]),
-    BrowserAnimationsModule,
-    MaterialModule,
-    ReactiveFormsModule,
-    LeafletModule,
-    CoreModule
+      { path: 'counter', component: CounterComponent },
+      { path: 'fetch-data', component: FetchDataComponent },
+    ])
   ],
-  providers: [
-    DataService
-  ],
+  providers: [],
   bootstrap: [AppComponent]
 })
Index: Farmatiko/ClientApp/src/app/app.server.module.ts
===================================================================
--- Farmatiko/ClientApp/src/app/app.server.module.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/app.server.module.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -6,6 +6,6 @@
 
 @NgModule({
-  imports: [AppModule, ServerModule, ModuleMapLoaderModule],
-  bootstrap: [AppComponent]
+    imports: [AppModule, ServerModule, ModuleMapLoaderModule],
+    bootstrap: [AppComponent]
 })
 export class AppServerModule { }
Index: rmatiko/ClientApp/src/app/counter/counter.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/counter/counter.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,50 +1,0 @@
-.wrapper {
-    display: flex;
-    flex-direction: column;
-    min-width: 300px;
-}
-  
-.mat-table {
-    overflow: auto;
-    max-height: 500px;
-}
-  
-.header {
-    padding: 8px 24px 0;
-}
-  
-.mat-form-field {
-    font-size: 14px;
-    width: 100%;
-}
-
-table {
-  width: 100%;
-}
-
-h2 {
-    padding: 1em 0;
-}
-.tableRow:hover {
-    background-color: #D4F2CD;
-    transform: scale(1.0005);
-}
-
-h2 button {
-    float: right;
-    padding: 0 5em;
-}
-
-#map {
-    height: 100%;
-}
-
-.map-frame {
-    border: 2px solid black;
-    height: 100%;
-}
-
-.map-wrapper {
-    margin: 0 3em 3em 3em;
-    min-height: 400px;
-}
Index: Farmatiko/ClientApp/src/app/counter/counter.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/counter/counter.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/counter/counter.component.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,68 +1,7 @@
+<h1>Counter</h1>
 
-<app-nav-menu></app-nav-menu>
+<p>This is a simple example of an Angular component.</p>
 
-<mat-tab-group dynamicHeight mat-stretch-tabs>
-  <mat-tab class="tab" label="Здравствени установи">
-  <div class="wrapper">
-    <div class="header">
-    <h2>Здравствени установи 
-      <button mat-icon-button color="primary" (click)="refreshMap()" [disabled]="!showMap">
-        <mat-icon>refresh</mat-icon>Освежи
-      </button>
-      <button mat-icon-button color="accent" [disabled]="clicked" (click)="toggleMap(); clicked = true">
-        <mat-icon>map</mat-icon>Активирај
-      </button>
-    </h2>
-    <div class="map-wrapper" *ngIf="showMap">
-      <div class="map-frame">
-        <div id="map" style="height: 400px;" leaflet [leafletOptions]="options"></div>
-      </div>
-    </div>
+<p aria-live="polite">Current count: <strong>{{ currentCount }}</strong></p>
 
-  <mat-form-field>
-    <input matInput (keyup)="applyFilterFacilities($event.target.value)" placeholder="Пронајди установа">
-  </mat-form-field>
-    </div>    
-    <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true">
-      <thead>
-        <tr>
-      	  <th>Име</th>
-      	  <th>Општина</th>
-      	  <th>Тип</th>
-      	</tr>
-      </thead>
-      <tbody>
-      	<tr *ngFor="let facility of filteredFacilities" (click)="openFacilityDialog(facility)" class="tableRow">
-      	  <td>{{ facility.name }}</td>
-      	  <td>{{ facility.municipality }}</td>
-      	  <td>{{ facility.type }}</td>
-      	</tr>
-    </tbody>
-  </table>
-  </div>
-  </mat-tab>
-  <mat-tab class="tab" label="Здравствени работници">
-  <div class="wrapper">
-    <div class="header">
-    <h2>Здравствени работници</h2>
-    <mat-form-field>
-      <input matInput (keyup)="applyFilterWorkers($event.target.value)" placeholder="Пронајди работник">
-    </mat-form-field>
-    </div>
-    <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true">
-      <thead>
-        <tr>
-      	  <th>Име</th>
-      	  <th>Гранка</th>
-      	</tr>
-      </thead>
-      <tbody>
-      	<tr *ngFor="let worker of filteredWorkers" (click)="openWorkerDialog(worker)" class="tableRow">
-      	  <td>{{ worker.name }}</td>
-      	  <td>{{ worker.branch }}</td>
-      	</tr>
-    </tbody>
-  </table>
-    </div>
-    </mat-tab>
-  </mat-tab-group>
+<button class="btn btn-primary" (click)="incrementCounter()">Increment</button>
Index: Farmatiko/ClientApp/src/app/counter/counter.component.spec.ts
===================================================================
--- Farmatiko/ClientApp/src/app/counter/counter.component.spec.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/counter/counter.component.spec.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -9,7 +9,7 @@
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [CounterComponent]
+      declarations: [ CounterComponent ]
     })
-      .compileComponents();
+    .compileComponents();
   }));
 
Index: Farmatiko/ClientApp/src/app/counter/counter.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/counter/counter.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/counter/counter.component.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,166 +1,13 @@
-import { Component, OnInit } from '@angular/core';
-import { IHealthFacilities, IHealthcareWorkers } from '../shared/interfaces';
-import { DataService } from '../shared/data.service';
-import { MatDialog } from '@angular/material/dialog';
-import { FacilityDialogComponent } from '../dialogs/facility-dialog/facility-dialog.component';
-import { WorkerDialogComponent } from '../dialogs/worker-dialog/worker-dialog.component';
-import { latLng, LatLng, tileLayer, marker, icon } from 'leaflet';
-import { HttpClient } from '@angular/common/http';
+import { Component } from '@angular/core';
 
 @Component({
   selector: 'app-counter-component',
-  templateUrl: './counter.component.html',
-  styleUrls: ['./counter.component.css']
+  templateUrl: './counter.component.html'
 })
-export class CounterComponent implements OnInit {
-  public facilities: IHealthFacilities[] = [];
-  public workers: IHealthcareWorkers[] = [];
-  public filteredFacilities: IHealthFacilities[] = [];
-  public filteredWorkers: IHealthcareWorkers[] = [];
-  public lat;
-  public lng;
-  clicked = false;
-  showMap: boolean = false;
-  options = {
-    layers: [
-      tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' })
-    ],
-    zoom: 8,
-    center: latLng(41.61807, 21.74348)
+export class CounterComponent {
+  public currentCount = 0;
+
+  public incrementCounter() {
+    this.currentCount++;
   }
-  
-  constructor(private dataService: DataService, private dialog: MatDialog, private http: HttpClient) {
-    
-  }
-
-  ngOnInit(): void {
-    this.dataService.getFacilities()
-        .subscribe((facility: IHealthFacilities[]) => {
-          this.facilities = this.filteredFacilities = facility;
-        },
-        (err: any) => console.log(err),
-        () => {
-          this.appendFacilityMarkers(this.facilities)
-          console.log('Facility data retrieved!');
-        });
-
-    this.dataService.getWorkers()
-        .subscribe((worker: IHealthcareWorkers[]) => {
-          this.workers = this.filteredWorkers = worker;
-        },
-        (err: any) => console.log(err),
-        () => console.log('Facility data retrieved!'));
-
-    if (navigator.geolocation) {
-      navigator.geolocation.getCurrentPosition((position) => {
-        if (position) {
-          this.lat = position.coords.latitude;
-          this.lng = position.coords.longitude;
-          let layer = marker([ this.lat, this.lng ], {
-            icon: icon({
-              iconSize: [ 25, 41 ],
-              iconAnchor: [ 13, 41 ],
-              iconUrl: 'assets/home-icon.png'
-            })
-          }).bindPopup("Вашата локација");
-          this.options.layers.push(layer);
-        }
-      });
-    }
-  }
-
-  appendFacilityMarkers(facils: IHealthFacilities[]) {
-    this.options.layers = [];
-    this.options.layers.push(tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}));
-    if(this.lat && this.lng) {
-      this.options.layers.push(marker([ this.lat, this.lng ], {
-        icon: icon({
-          iconSize: [ 25, 41 ],
-          iconAnchor: [ 13, 41 ],
-          iconUrl: 'assets/home-icon.png'
-        })
-      }).bindPopup("Вашата локација"));
-    }
-    facils.forEach((facil) => {
-      this.http.get<any>('https://jankuloski.xyz:8080/https://nominatim.openstreetmap.org/search/?country=Macedonia&city='+facil.municipality+'&street='+facil.address+'&format=json').subscribe(obj => {
-        console.log(obj);  
-        if(obj.length) {
-            let layer = marker([ obj[0]?.lat, obj[0]?.lon ], {
-              icon: icon({
-                iconSize: [ 25, 41 ],
-                iconAnchor: [ 13, 41 ],
-                iconUrl: 'assets/hospital-icon.png'
-              })
-            }).bindPopup(facil.name);
-            this.options.layers.push(layer);
-          }
-        }, error => console.error(error));
-    });
-  }
-
-  applyFilterFacilities(filterValue: string) {
-    console.log("applyFilterFacilities works!")
-    if(filterValue) {
-      this.dataService.searchFacilities(filterValue)
-          .subscribe((facility: IHealthFacilities[]) => {
-            this.filteredFacilities = facility;
-          },
-          (err: any) => console.log(err),
-          () => {
-            this.appendFacilityMarkers(this.filteredFacilities);
-            if(this.showMap) {
-              this.showMap = false;
-              setTimeout(() => this.showMap = true, 300);
-            }
-            console.log('Facility data retrieved!');
-          });
-    }
-    else {
-      this.filteredFacilities = this.facilities;
-      this.appendFacilityMarkers(this.facilities);
-      if(this.showMap) {
-        this.showMap = false;
-        setTimeout(() => this.showMap = true, 300);
-      }
-    }
-  }
-
-  applyFilterWorkers(filterValue: string) {
-    console.log("applyFilterWorkers works!")
-    if(filterValue) {
-      this.dataService.searchWorkers(filterValue)
-          .subscribe((worker: IHealthcareWorkers[]) => {
-            this.filteredWorkers = worker;
-          },
-          (err: any) => console.log(err),
-          () => console.log('Worker data retrieved!'));
-    }
-    else {
-      this.filteredWorkers = this.workers;
-    }
-  }
-
-  openFacilityDialog(facility: IHealthFacilities): void {
-    this.dialog.open(FacilityDialogComponent, {
-      width: '450px',
-      data: facility
-    });
-  }
-  
-  openWorkerDialog(worker: IHealthcareWorkers): void {
-    this.dialog.open(WorkerDialogComponent, {
-      width: '450px',
-      data: worker
-    });
-  }
-  
-  toggleMap() {
-    this.showMap = !this.showMap;
-  }
-
-  refreshMap() {
-    this.showMap = false;
-    setTimeout(() => this.showMap = true, 300);
-  }
-
 }
Index: rmatiko/ClientApp/src/app/dashboard/dashboard.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dashboard/dashboard.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,41 +1,0 @@
-a.navbar-brand img {
-    width: 200px;
-}
-.wrapper {
-    display: flex;
-    flex-direction: column;
-    max-height: 500px;
-    min-width: 300px;
-}
-  
-.mat-table {
-    overflow: auto;
-    max-height: 500px;
-}
-  
-.header {
-    padding: 8px 24px 0;
-}
-  
-.mat-form-field {
-    font-size: 14px;
-    width: 100%;
-}
-
-table {
-  width: 100%;
-}
-
-h2 {
-    padding: 1em 0;
-}
-
-.btns {
-    display: flex;
-    flex-direction: row;
-    justify-content: flex-start;
-}
-
-.btns button {
-    margin: 0.5em 0.5em 0.5em 0;
-}
Index: rmatiko/ClientApp/src/app/dashboard/dashboard.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dashboard/dashboard.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,138 +1,0 @@
-<header>
-    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
-      <div class="container">
-        <a class="navbar-brand" [routerLink]="['/dashboard']"><img src="../../assets/logo.png"></a>
-        <button class="navbar-toggler"
-                type="button"
-                data-toggle="collapse"
-                data-target=".navbar-collapse"
-                aria-label="Toggle navigation">
-          <span class="navbar-toggler-icon"></span>
-        </button>
-        <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
-          <ul class="navbar-nav flex-grow">
-            <li>Logged as <p *ngIf="head">{{head.Name}}</p> </li>
-          </ul>
-        </div>
-        
-        <button mat-button [matMenuTriggerFor]="menu"><mat-icon>more_vert</mat-icon></button>
-        <mat-menu #menu="matMenu">
-          <button mat-menu-item [routerLink]="['/']"><mat-icon>directions</mat-icon>Почетна</button>
-          <button mat-menu-item (click)="logout()"><mat-icon>exit_to_app</mat-icon>Одјави се</button>
-        </mat-menu>
-      </div>
-    </nav>
-</header>
-
-<mat-tab-group dynamicHeight mat-stretch-tabs>
-  <mat-tab class="tab" label="Мои аптеки"> 
-  <div class="wrapper">
-    <div class="header">
-    <h2>Мои аптеки</h2>
-    <p *ngIf="!head"><em>Loading...</em></p>
-    </div>
-    <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="head">
-      <thead>
-        <tr>
-          <th>Име</th>
-          <th>Локација</th>
-          <th>Адреса</th>
-          <th>Работи 24/7</th>
-          <th>Actions</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr *ngFor="let pharmacies of head.Pharmacy">
-          <td (click)="openPharmacyDialog(pharmacies)">{{pharmacies.name}}</td>
-          <td (click)="openPharmacyDialog(pharmacies)">{{pharmacies.location}}</td>
-          <td (click)="openPharmacyDialog(pharmacies)">{{pharmacies.address}}</td>
-          <td (click)="openPharmacyDialog(pharmacies)">{{pharmacies.workAllTime}}</td>
-          <td><a (click)="openEditPharmacyDialog(pharmacies)">Edit</a></td>
-        </tr>
-      </tbody>
-    </table>
-  </div>
-  </mat-tab>
-  <mat-tab class="tab" label="Сите аптеки"> 
-  <div class="wrapper">
-    <div class="header">
-    <h2>Сите аптеки</h2>
-    <mat-form-field>
-      <input matInput (keyup)="applyFilterPharmacies($event.target.value)" placeholder="Пронајди аптека">
-    </mat-form-field>
-  </div>
-    <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="pharmacies">
-      <thead>
-        <tr>
-      	  <th>Име</th>
-      	  <th>Локација</th>
-      	  <th>Адреса</th>
-      	  <th>Работи 27/7?</th>
-      	</tr>
-      </thead>
-      <tbody>
-      	<tr *ngFor="let pharmacy of filteredPharmacies">
-      	  <td (click)="openPharmacyDialog(pharmacy)">{{ pharmacy.name }}</td>
-      	  <td (click)="openPharmacyDialog(pharmacy)">{{ pharmacy.location }}</td>
-      	  <td (click)="openPharmacyDialog(pharmacy)">{{ pharmacy.address }}</td>
-          <td (click)="openPharmacyDialog(pharmacy)">{{ pharmacy.workAllTime }}</td>
-          <td><a (click)="claimPharmacy(pharmacy)" *ngIf="!pharmacy.headName">Claim</a> <span *ngIf="pharmacy.headName">Already claimed</span></td>
-      	</tr>
-    </tbody>
-  </table>
-    </div>
-    </mat-tab>
-  </mat-tab-group>
-
-<div class="wrapper">
-    <div class="header">
-    <h2>Достапни лекови</h2>
-    <div class="btns">
-      <button mat-raised-button color="primary" (click)="saveDeletedMedicines()" [disabled]="editedMedicine==false">Зачувај ги промените</button>
-      <button mat-raised-button color="accent" aria-label="Add medicine" (click)="addMedicine()">Додај нов лек</button>
-      <button mat-raised-button color="accent" aria-label="Add medicine" (click)="addMedicinesFromList()">Додај постоечки лекови</button>
-    </div><br/>
-    <mat-slide-toggle (click)="switchEditMedicineMode()">Edit mode</mat-slide-toggle>
-    
-    <mat-form-field *ngIf="!medicinesEditMode">
-      <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек">
-    </mat-form-field>
-    </div>
-      <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="head">
-        <thead>
-          <tr>
-            <th>Име</th>
-            <th>Јачина</th>
-            <th>Форма</th>
-            <th>Начин на издавање</th>
-            <th>Производител</th>
-            <th>Цена</th>
-            <th>Пакување</th>
-            <th>Контроли</th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr *ngFor="let medicine of filteredMedicines">
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.name }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.name" name="medname"></mat-form-field></td>
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.strength }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.strength" name="medstr"></mat-form-field></td>
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.form }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.form" name="medform"></mat-form-field></td>
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.wayOfIssuing }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.wayOfIssuing" name="medwayOfIssuing"></mat-form-field></td>
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.manufacturer }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.manufacturer" name="medmanufacturer"></mat-form-field></td>
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.price }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.price" name="medprice"></mat-form-field></td>
-            <td *ngIf="!medicinesEditMode" (click)="openMedicineDialog(medicine)">{{ medicine.packaging }}</td>
-            <td *ngIf="medicinesEditMode"><mat-form-field appearance="fill"><input matInput [(ngModel)]="medicine.packaging" name="medpackaging"></mat-form-field></td>
-            <td>
-              <button mat-mini-fab color="warn" aria-label="Delete medicine" (click)="deleteMedicine(medicine)">
-                <mat-icon>delete</mat-icon>
-              </button>
-            </td>
-          </tr>
-      </tbody>
-    </table>
-</div>
Index: rmatiko/ClientApp/src/app/dashboard/dashboard.component.spec.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dashboard/dashboard.component.spec.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { DashboardComponent } from './dashboard.component';
-
-describe('DashboardComponent', () => {
-  let component: DashboardComponent;
-  let fixture: ComponentFixture<DashboardComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ DashboardComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(DashboardComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: rmatiko/ClientApp/src/app/dashboard/dashboard.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dashboard/dashboard.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,226 +1,0 @@
-import { Component, OnInit} from '@angular/core';
-import { MatDialog } from '@angular/material/dialog';
-import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar';
-import { IPharmacy, IMedicine, IPharmacyHead, IPharmacyHeadRequest } from '../shared/interfaces';
-import { DataService } from '../shared/data.service';
-import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component';
-import { EditPharmacyDialogComponent } from '../dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component';
-import { MedicineDialogComponent } from '../dialogs/medicine-dialog/medicine-dialog.component';
-import { ActivatedRoute, Router } from '@angular/router';
-import { AuthService } from '../shared/services/auth.service';
-import { AddMedicineDialogComponent } from '../dialogs/add-medicine-dialog/add-medicine-dialog.component';
-import { ListMedicinesDialogComponent } from '../dialogs/list-medicines-dialog/list-medicines-dialog.component';
-
-@Component({
-  selector: 'app-dashboard',
-  templateUrl: './dashboard.component.html',
-  styleUrls: ['./dashboard.component.css']
-})
-export class DashboardComponent implements OnInit {
-  public pharmacies: IPharmacy[] = [];
-  public head: IPharmacyHead;
-  public filteredPharmacies: IPharmacy[] = [];
-  public filteredMedicines: IMedicine[] = [];
-  public request: IPharmacyHeadRequest;
-  editedMedicine: boolean = false;
-  medicinesEditMode: boolean = false;
-
-  constructor(private dataService: DataService, private authService: AuthService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute) {
-
-  }
-
-  ngOnInit(): void {
-    this.authService.getUser()
-        .subscribe((data) => {
-          console.log(data);
-          this.head = data;
-        },
-        (err: any) => console.log(err),
-        () => console.log('User data retrieved'));
-    this.dataService.getPharmacies()
-        .subscribe((pharmacy: IPharmacy[]) => {
-          this.pharmacies = this.filteredPharmacies = pharmacy;
-          // Iskluceno filtriranje na farmacies (Star metod)
-          // this.head.Pharmacy.forEach((pharma) => {
-          //   this.filteredPharmacies = this.pharmacies = this.pharmacies.filter(x => x == pharma);
-          // });
-        },
-        (err: any) => console.log(err),
-        () => console.log('Pharmacy data retrieved'));
-    this.filteredMedicines = this.head.PharmacyMedicines;
-  }
-  
-  claimPharmacy(pharmacy: IPharmacy) {
-    if(this.head.Pharmacy != null) {
-      if(pharmacy && !this.head.Pharmacy.find(x => x === pharmacy)) {
-        this.request = {};
-        this.request.Pharmacy = pharmacy;
-        this.request.PharmacyHead = this.head;
-        this.dataService.claimPharmacy(this.request)
-            .subscribe((req) => {
-              if(req) {
-                this.openSnackBar("Request sent!", "OK");
-              }
-            },
-            (err: any) => console.log(err),
-            () => console.log('Claiming request sent!'));
-      }
-    }
-    else {
-      if(pharmacy) {
-        this.request = {};
-        this.request.Pharmacy = pharmacy;
-        this.request.PharmacyHead = this.head;
-        this.dataService.claimPharmacy(this.request)
-            .subscribe((req) => {
-              if(req) {
-                this.openSnackBar("Request sent!", "OK");
-              }
-            },
-            (err: any) => console.log(err),
-            () => console.log('Claiming request sent!'));
-      }
-    }
-  }
-
-  deleteMedicine(medicine: IMedicine){
-    this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x !== medicine);
-    this.filteredMedicines = this.head.PharmacyMedicines;
-    this.editedMedicine = true;
-  }
-  
-  saveDeletedMedicines() {
-    this.dataService.updatePharmacyHead(this.head)
-      .subscribe(() => {
-          this.openSnackBar("Success!", "OK");
-          this.editedMedicine = false;
-      },
-      (err: any) => {
-        console.log(err);
-        this.openSnackBar("Failed!", "Try again");
-      },
-      () => console.log('Update sent!'));
-  }
-
-  applyFilterMedicines(filterValue: string) {
-    console.log("applyFilterMedicines works!")
-    if(filterValue) {
-      this.filteredMedicines = this.filteredMedicines.filter(x => x.name.toLocaleLowerCase().includes(filterValue.toLocaleLowerCase()));
-    }
-    else {
-      this.filteredMedicines = this.head.PharmacyMedicines;
-    }
-  }
-
-  addMedicine() {
-    let dialogRef = this.dialog.open(AddMedicineDialogComponent, {
-      width: 'auto'
-    });
-    dialogRef.afterClosed().subscribe((newMedicine: IMedicine) => {
-      if(newMedicine){
-        this.head.PharmacyMedicines.push(newMedicine);
-        this.filteredMedicines = this.head.PharmacyMedicines;
-        if(this.editedMedicine == false) {
-          this.editedMedicine = true;
-        }
-        this.openSnackBar("Success!", "OK");
-      }
-    }, () => this.openSnackBar("Failed! Please try again", "OK"));
-  }
-
-  addMedicinesFromList() {
-    let dialogRef = this.dialog.open(ListMedicinesDialogComponent, {
-      width: 'auto',
-      height: 'auto'
-    });
-    dialogRef.afterClosed().subscribe((listMedicines: IMedicine[]) => {
-      if(listMedicines){
-        listMedicines.forEach((medicine) => {
-          if(this.head.PharmacyMedicines) {
-            this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x != medicine);
-          }
-          else {
-            this.head.PharmacyMedicines = [];
-          }
-          this.head.PharmacyMedicines.push(medicine);
-          this.filteredMedicines = this.head.PharmacyMedicines;
-        });
-        if(this.editedMedicine == false) {
-          this.editedMedicine = true;
-        }
-        this.openSnackBar("Success!", "OK");
-      }
-    }, () => this.openSnackBar("Failed! Please try again", "OK"));
-  }
-
-  switchEditMedicineMode() {
-    this.medicinesEditMode = !this.medicinesEditMode;
-    if(this.editedMedicine == false) {
-      this.editedMedicine = true;
-    }
-  }
-  
-  applyFilterPharmacies(filterValue: string) {
-    console.log("applyFilterPharmacies works!")
-    if(filterValue) {
-      this.dataService.searchPharmacies(filterValue)
-          .subscribe((pharmacy: IPharmacy[]) => {
-            this.filteredPharmacies = pharmacy;
-            // this.head.Pharmacy.forEach((pharma) => {
-            //   this.filteredPharmacies = this.filteredPharmacies.filter(x => x == pharma);
-            // });
-          },
-          (err: any) => console.log(err),
-          () => console.log('Pharmacy data retrieved')); 
-    }
-    else {
-      this.filteredPharmacies = this.pharmacies;
-    }
-  }
-
-  logout() {
-    this.authService.logout();
-  }
-
-  openPharmacyDialog(pharmacy: IPharmacy): void {
-    this.dialog.open(PharmacyDialogComponent, {
-      width: '450px',
-      data: pharmacy
-    });
-  }
-
-  openEditPharmacyDialog(pharmacy: IPharmacy): void {
-    console.log(pharmacy);
-    let dialogRef = this.dialog.open(EditPharmacyDialogComponent, {
-      width: '450px',
-      data: pharmacy
-    });
-    dialogRef.afterClosed().subscribe((editedPharmacy: IPharmacy) => {
-      if(editedPharmacy) {
-        this.head.Pharmacy = this.head.Pharmacy.filter(x => x !== pharmacy);
-        this.head.Pharmacy.push(editedPharmacy);
-        this.dataService.updatePharmacyHead(this.head)
-            .subscribe((hd) => {
-                this.openSnackBar("Success!", "OK").onAction().subscribe(() => {
-                  window.location.reload();
-                });
-            },
-            (err: any) => console.log(err),
-            () => console.log('PharmacyHead data updated'));
-      };
-    });
-  }
-
-  openMedicineDialog(medicine: IMedicine): void {
-    this.dialog.open(MedicineDialogComponent, {
-      width: '450px',
-      data: medicine
-    });
-  }
-
-  openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> {
-    return this.snackBar.open(message, action, {
-      duration: 5000,
-    });
-  }
-}
Index: rmatiko/ClientApp/src/app/dialogs/add-medicine-dialog/add-medicine-dialog.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/add-medicine-dialog/add-medicine-dialog.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,6 +1,0 @@
-.wrapper {
-    display: block;
-    text-align: center;
-    align-items: center;
-    justify-content: center;
-}
Index: rmatiko/ClientApp/src/app/dialogs/add-medicine-dialog/add-medicine-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/add-medicine-dialog/add-medicine-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,34 +1,0 @@
-<div class="wrapper">
-<form [formGroup]="forma" (ngSubmit)="save()">
-  <mat-form-field appearance="fill">
-      <mat-label>Име</mat-label>
-      <input matInput type="text" formControlName="name" required>
-  </mat-form-field><br/>
-  <mat-form-field appearance="fill">
-      <mat-label>Јачина</mat-label>
-      <input matInput type="text" formControlName="strength" required>
-  </mat-form-field><br/>
-  <mat-form-field appearance="fill">
-      <mat-label>Форма</mat-label>
-      <input matInput type="text" formControlName="form" required>
-  </mat-form-field><br/>
-  <mat-form-field appearance="fill">
-    <mat-label>Начин на издавање</mat-label>
-    <input matInput type="text" formControlName="wayOfIssuing" required>
-  </mat-form-field><br/>
-  <mat-form-field appearance="fill">
-    <mat-label>Производител</mat-label>
-    <input matInput type="text" formControlName="manufacturer" required>
-  </mat-form-field><br/>
-  <mat-form-field appearance="fill">
-      <mat-label>Цена</mat-label>
-      <input matInput type="text" formControlName="price" required>
-  </mat-form-field><br/>
-  <mat-form-field appearance="fill">
-      <mat-label>Пакување</mat-label>
-      <input matInput type="text" formControlName="packaging" required>
-  </mat-form-field><br/>
-  <button type="reset" class="btn btn-default" (click)="close()">Cancel</button>&nbsp;&nbsp;
-  <button type="submit" class="btn btn-success" [disabled]="!forma.valid">Save</button>
-</form>
-</div>
Index: rmatiko/ClientApp/src/app/dialogs/add-medicine-dialog/add-medicine-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/add-medicine-dialog/add-medicine-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,42 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-import { MatDialogRef } from '@angular/material/dialog';
-import { IMedicine } from '../../shared';
-import { FormGroup, Validators, FormBuilder }  from '@angular/forms';
-
-@Component({
-  selector: 'app-add-medicine-dialog',
-  templateUrl: './add-medicine-dialog.component.html',
-  styleUrls: ['./add-medicine-dialog.component.css']
-})
-export class AddMedicineDialogComponent implements OnInit {
-  medicine: IMedicine;
-  forma: FormGroup;
-
-  constructor(private dialogRef: MatDialogRef<AddMedicineDialogComponent>, private formBuilder: FormBuilder) {
-
-  }
-
-  ngOnInit(): void {
-    this.forma = this.formBuilder.group({
-      name: ['', [Validators.required]],
-      strength: ['', [Validators.required]],
-      form: ['', [Validators.required]],
-      wayOfIssuing: ['', [Validators.required]],
-      manufacturer: ['', [Validators.required]],
-      price: ['', [Validators.required, Validators.min(0)]],
-      packaging: ['', [Validators.required]]
-    });
-  }
-
-  save() {
-    this.medicine = this.forma.value;
-    console.log(this.forma.value);
-    console.log(this.medicine);
-    this.forma.reset();
-    this.dialogRef.close(this.medicine);
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-}
Index: rmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,31 +1,0 @@
-
-  <form (ngSubmit)="save()" #pharmacyForm="ngForm" class="editForm" novalidate>
-    <div class="form-group">
-      <label>Name</label>
-      <input type="text" class="form-control" name="name" [(ngModel)]="pharmacy.name" #name="ngModel" required>
-      <div class="alert alert-danger" [hidden]="pharmacy.name">Name is required</div>
-    </div>
-    <div class="form-group">
-      <label>Address</label>
-      <input type="text" class="form-control" name="address" [(ngModel)]="pharmacy.address" #address="ngModel" required>
-      <div class="alert alert-danger" [hidden]="pharmacy.address">Address is required</div>
-    </div>
-    <div class="form-group">
-      <label>Location</label>
-      <input type="text" class="form-control" name="location" [(ngModel)]="pharmacy.location" #location="ngModel" required />
-      <div class="alert alert-danger" [hidden]="pharmacy.location">Location is required</div>
-    </div>
-    <div class="form-group">
-        <label>Work 24/7</label>
-        <div class="radio">
-          <label>
-            <input type="checkbox" name="workAllTime" [(ngModel)]="pharmacy.workAllTime" #workAllTime="ngModel" [value]="pharmacy.workAllTime"/>
-          </label>
-        </div>
-      </div>
-    <br />
-    <div class="pull-right">
-        <button class="btn btn-default" (click)="close()">Cancel</button>&nbsp;&nbsp;
-        <button type="submit" class="btn btn-success" [disabled]="!pharmacyForm.valid">Save</button>
-      </div>
-  </form>
Index: rmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,29 +1,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
-import { IPharmacy } from '../../shared/interfaces';
-
-@Component({
-  selector: 'app-edit-pharmacy-dialog',
-  templateUrl: './edit-pharmacy-dialog.component.html',
-  styleUrls: ['./edit-pharmacy-dialog.component.css']
-})
-export class EditPharmacyDialogComponent implements OnInit {
-  pharmacy: IPharmacy;
-
-  constructor(private dialogRef: MatDialogRef<EditPharmacyDialogComponent>, @Inject(MAT_DIALOG_DATA) data) {
-    this.pharmacy = data;
-  }
-
-  ngOnInit(): void {
-  }
-
-  save() {
-    console.log(this.pharmacy);
-    this.dialogRef.close(this.pharmacy);
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,28 +1,0 @@
-
-  <form (ngSubmit)="save()" #headForm="ngForm" class="editForm" novalidate>
-    <div class="form-group">
-      <label>ИД</label>
-      <input type="text" class="form-control" name="id" [(ngModel)]="head.id" #id="ngModel" required disabled>
-      <div class="alert alert-danger">ID is required</div>
-    </div>
-    <div class="form-group">
-      <label>Име</label>
-      <input type="text" class="form-control" name="name" [(ngModel)]="head.Name" #name="ngModel" required>
-      <div class="alert alert-danger">Name is required</div>
-    </div>
-    <div class="form-group">
-      <label>Е-пошта</label>
-      <input type="text" class="form-control" name="email" [(ngModel)]="head.Email" #email="ngModel" required />
-      <div class="alert alert-danger" [hidden]="head.Email">Email is required</div>
-    </div>
-    <div class="form-group">
-      <label>Лозинка</label>
-      <input type="text" class="form-control" name="passwd" [(ngModel)]="head.Passwd" #passwd="ngModel" required />
-      <div class="alert alert-danger" [hidden]="head.Passwd">Password is required</div>
-    </div>
-    <br />
-    <div class="pull-right">
-        <button class="btn btn-default" (click)="close()">Cancel</button>&nbsp;&nbsp;
-        <button type="submit" class="btn btn-success" [disabled]="!headForm.valid">Save</button>
-      </div>
-  </form>
Index: rmatiko/ClientApp/src/app/dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
-import { IPharmacyHead } from '../../shared/interfaces';
-
-@Component({
-  selector: 'app-edit-pharmacy-head-dialog',
-  templateUrl: './edit-pharmacy-head-dialog.component.html',
-  styleUrls: ['./edit-pharmacy-head-dialog.component.css']
-})
-export class EditPharmacyHeadDialogComponent implements OnInit {
-  head: IPharmacyHead;
-
-  constructor(private dialogRef: MatDialogRef<EditPharmacyHeadDialogComponent>, @Inject(MAT_DIALOG_DATA) data) {
-    this.head = data;
-  }
-
-  ngOnInit(): void {
-  }
-
-  save() {
-    this.dialogRef.close(this.head);
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/facility-dialog/facility-dialog.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/facility-dialog/facility-dialog.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,3 +1,0 @@
-button {
-    float: right;
-}
Index: rmatiko/ClientApp/src/app/dialogs/facility-dialog/facility-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/facility-dialog/facility-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,33 +1,0 @@
-<h3>Повеќе информации</h3>
-<table class="table table-striped">
-    <tbody>
-        <tr>
-            <td>Име</td>
-            <td>{{facility?.name}}</td>
-        </tr>
-        <tr>
-            <td>Општина</td>
-            <td>{{facility?.municipality}}</td>
-        </tr>
-        <tr>
-            <td>Тип на установа</td>
-            <td>{{facility?.type}}</td>
-        </tr>
-        <tr>
-            <td>Адреса</td>
-            <td>{{facility?.address}}</td>
-        </tr>
-        <tr>
-            <td>Е-пошта</td>
-            <td>{{facility?.email}}</td>
-        </tr>
-        <tr>
-            <td>Телефон</td>
-            <td>{{facility?.phone}}</td>
-        </tr>
-    </tbody>
-</table>
-
-<div style="height: 200px;" leaflet [leafletOptions]="options" *ngIf="mapShown"></div>
-<br>
-<p><button mat-button color="primary" (click)="close()">Затвори</button></p>
Index: rmatiko/ClientApp/src/app/dialogs/facility-dialog/facility-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/facility-dialog/facility-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,59 +1,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
-import { IHealthFacilities } from '../../shared/interfaces';
-import { latLng, LatLng, tileLayer, marker, icon } from 'leaflet';
-import { HttpClient } from '@angular/common/http';
-
-@Component({
-  selector: 'app-facility-dialog',
-  templateUrl: './facility-dialog.component.html',
-  styleUrls: ['./facility-dialog.component.css']
-})
-export class FacilityDialogComponent implements OnInit {
-  facility: IHealthFacilities;
-  mapShown: boolean = true;
-  options = {
-    layers: [
-      tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' })
-    ],
-    zoom: 7,
-    center: latLng(41.61807, 21.74348)
-  }
-
-  constructor(private dialogRef: MatDialogRef<FacilityDialogComponent>, @Inject(MAT_DIALOG_DATA) data, private http: HttpClient) {
-    this.facility = data;
-    if(this.facility) {
-      this.addMarkers();
-    }
-  }
-
-  ngOnInit(): void {
-  }
-
-  addMarkers() {
-    this.http.get<any>('https://jankuloski.xyz:8080/https://nominatim.openstreetmap.org/search/?country=Macedonia&city='+this.facility?.municipality+'&street='+this.facility?.address+'&format=json').subscribe(obj => {
-      console.log(obj);  
-      if(obj.length) {
-          let layer = marker([ obj[0]?.lat, obj[0]?.lon ], {
-            icon: icon({
-              iconSize: [ 25, 41 ],
-              iconAnchor: [ 13, 41 ],
-              iconUrl: 'assets/hospital-icon.png'
-            })
-          }).bindPopup(this.facility?.name);
-          this.options.layers.push(layer);
-          this.options.center = latLng(obj[0]?.lat, obj[0]?.lon);
-          this.options.zoom = 13;
-        }
-      }, error => console.error(error),
-      () => {
-        this.mapShown = false;
-        setTimeout(() => this.mapShown = true, 300);
-      });
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,3 +1,0 @@
-mat-form-field {
-    width: 100%;
-}
Index: rmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,36 +1,0 @@
-<div class="wrapper">
-    <div class="header">
-    <h2>Листа на постоечки лекови</h2>
-  <mat-form-field>
-    <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек">
-  </mat-form-field>
-    </div>
-  <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="filteredListMedicines">
-      <thead>
-        <tr>
-      	  <th>Име</th>
-      	  <th>Јачина</th>
-      	  <th>Форма</th>
-      	  <th>Начин на издавање</th>
-      	  <th>Производител</th>
-      	  <th>Цена</th>
-          <th>Пакување</th>
-          <th>Додај</th>
-      	</tr>
-      </thead>
-      <tbody>
-      	<tr *ngFor="let medicine of filteredListMedicines">
-      	  <td>{{ medicine.name }}</td>
-      	  <td>{{ medicine.strength }}</td>
-      	  <td>{{ medicine.form }}</td>
-      	  <td>{{ medicine.wayOfIssuing }}</td>
-      	  <td>{{ medicine.manufacturer }}</td>
-      	  <td>{{ medicine.price }}</td>
-          <td>{{ medicine.packaging }}</td>
-          <td><mat-checkbox (click)="selectMedicine(medicine)"></mat-checkbox></td>
-      	</tr>
-    </tbody>
-  </table>
-</div>
-<button type="reset" class="btn btn-default" (click)="close()">Cancel</button>&nbsp;&nbsp;
-<button type="submit" class="btn btn-success" (click)="save()">Додај ги лековите</button>
Index: rmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/list-medicines-dialog/list-medicines-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,58 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-import { MatDialogRef } from '@angular/material/dialog';
-import { IMedicine } from '../../shared';
-import { DataService } from '../../shared/data.service';
-
-@Component({
-  selector: 'app-list-medicines-dialog-component',
-  templateUrl: './list-medicines-dialog.component.html',
-  styleUrls: ['./list-medicines-dialog.component.css']
-})
-export class ListMedicinesDialogComponent implements OnInit {
-  medicines: IMedicine[] = [];
-  listMedicines: IMedicine[];
-  filteredListMedicines: IMedicine[];
-
-  constructor(private dialogRef: MatDialogRef<ListMedicinesDialogComponent>, private dataService: DataService) {
-  }
-
-  ngOnInit(): void {
-    this.dataService.getMedicines()
-        .subscribe((medicine: IMedicine[]) => {
-          this.listMedicines = this.filteredListMedicines = medicine;
-        },
-        (err: any) => console.log(err),
-        () => console.log('Medicine data retrieved'));
-  }
-
-  selectMedicine(selectedMedicine: IMedicine) {
-    if(this.medicines.filter(x => x == selectedMedicine)) {
-      this.medicines = this.medicines.filter(x => x != selectedMedicine);
-    }
-    this.medicines.push(selectedMedicine);
-  }
-
-  save() {
-    console.log(this.medicines);
-    this.dialogRef.close(this.medicines);
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-  applyFilterMedicines(filterValue: string) {
-    if(filterValue) {
-      this.dataService.searchMedicines(filterValue)
-          .subscribe((medicine: IMedicine[]) => {
-            this.filteredListMedicines = medicine;
-          },
-          (err: any) => console.log(err),
-          () => console.log('Medicine data retrieved')); 
-    }
-    else {
-      this.filteredListMedicines = this.listMedicines;
-    }
-  }
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/medicine-dialog/medicine-dialog.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/medicine-dialog/medicine-dialog.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,3 +1,0 @@
-button {
-    float: right;
-}
Index: rmatiko/ClientApp/src/app/dialogs/medicine-dialog/medicine-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/medicine-dialog/medicine-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,44 +1,0 @@
-<h3>Повеќе информации</h3>
-<table class="table table-striped">
-    <tbody>
-        <tr>
-            <td>Име</td>
-            <td>{{medicine?.name}}</td>
-        </tr>
-        <tr>
-            <td>Форма</td>
-            <td>{{medicine?.form}}</td>
-        </tr>
-        <tr>
-            <td>Пакување</td>
-            <td>{{medicine?.packaging}}</td>
-        </tr>
-        <tr>
-            <td>Цена</td>
-            <td>{{medicine?.price}}</td>
-        </tr>
-        <tr>
-            <td>Јачина</td>
-            <td>{{medicine?.strength}}</td>
-        </tr>
-        <tr>
-            <td>Начин на издавање</td>
-            <td>{{medicine?.wayOfIssuing}}</td>
-        </tr>
-        <tr>
-            <td>Производител</td>
-            <td>{{medicine?.manufacturer}}</td>
-        </tr>
-    </tbody>
-</table>
-<div *ngIf="medicine?.headNames">
-    <h5>Достапен во аптеките на:</h5>
-    <table class="table table-striped">
-        <tbody>
-            <tr *ngFor="let head of medicine?.headNames">
-                <td>{{head}}</td>
-            </tr>
-        </tbody>
-    </table>
-</div>
-<p><button mat-button color="primary" (click)="close()">Затвори</button></p>
Index: rmatiko/ClientApp/src/app/dialogs/medicine-dialog/medicine-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/medicine-dialog/medicine-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
-import { IMedicine } from '../../shared/interfaces';
-
-@Component({
-  selector: 'app-medicine-dialog',
-  templateUrl: './medicine-dialog.component.html',
-  styleUrls: ['./medicine-dialog.component.css']
-})
-export class MedicineDialogComponent implements OnInit {
-  medicine: IMedicine;
-
-  constructor(private dialogRef: MatDialogRef<MedicineDialogComponent>, @Inject(MAT_DIALOG_DATA) data) {
-    this.medicine = data;
-  }
-
-  ngOnInit(): void {
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/pharmacy-dialog/pharmacy-dialog.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/pharmacy-dialog/pharmacy-dialog.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,7 +1,0 @@
-button {
-    float: right;
-}
-
-div {
-    white-space: nowrap;
-}
Index: rmatiko/ClientApp/src/app/dialogs/pharmacy-dialog/pharmacy-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/pharmacy-dialog/pharmacy-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,29 +1,0 @@
-<h3>Повеќе информации</h3>
-<table class="table table-striped">
-    <tbody>
-        <tr>
-            <td>Име</td>
-            <td>{{pharmacy?.name}}</td>
-        </tr>
-        <tr>
-            <td>Општина</td>
-            <td>{{pharmacy?.location}}</td>
-        </tr>
-        <tr>
-            <td>Адреса</td>
-            <td>{{pharmacy?.address}}</td>
-        </tr>
-        <tr>
-            <td>Работи 24/7</td>
-            <td><div *ngIf="pharmacy.workAllTime == true">Да</div><div *ngIf="pharmacy.workAllTime != true">Не</div></td>
-        </tr>
-        <tr>
-            <td>Компанија</td>
-            <td>{{pharmacy?.headName}}</td>
-        </tr>
-    </tbody>
-</table>
-
-<div style="height: 200px;" leaflet [leafletOptions]="options" *ngIf="mapShown"></div>
-<br>
-<p><button mat-button color="primary" (click)="close()">Затвори</button></p>
Index: rmatiko/ClientApp/src/app/dialogs/pharmacy-dialog/pharmacy-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/pharmacy-dialog/pharmacy-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,60 +1,0 @@
-import { Component, OnInit, Inject, AfterViewInit } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
-import { IPharmacy } from '../../shared/interfaces';
-import { latLng, LatLng, tileLayer, marker, icon } from 'leaflet';
-import { HttpClient } from '@angular/common/http';
-
-@Component({
-  selector: 'app-pharmacy-dialog',
-  templateUrl: './pharmacy-dialog.component.html',
-  styleUrls: ['./pharmacy-dialog.component.css']
-})
-export class PharmacyDialogComponent implements OnInit {
-  pharmacy: IPharmacy;
-  mapShown: boolean = true;
-  options = {
-    layers: [
-      tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' })
-    ],
-    zoom: 7,
-    center: latLng(41.61807, 21.74348)
-  }
-
-  constructor(private dialogRef: MatDialogRef<PharmacyDialogComponent>, @Inject(MAT_DIALOG_DATA) data, private http: HttpClient) {
-    this.pharmacy = data;
-    if(this.pharmacy) {
-      this.addMarkers();
-    }
-  }
-
-  ngOnInit(): void {
-  }
-
-  addMarkers() {
-    this.http.get<any>('https://jankuloski.xyz:8080/https://nominatim.openstreetmap.org/search/?country=Macedonia&city='+this.pharmacy?.location+'&street='+this.pharmacy?.address+'&format=json').subscribe(obj => {
-      console.log(obj);  
-      if(obj.length) {
-          let layer = marker([ obj[0]?.lat, obj[0]?.lon ], {
-            icon: icon({
-              iconSize: [ 25, 41 ],
-              iconAnchor: [ 13, 41 ],
-              iconUrl: 'assets/pharmacy-icon.png'
-            })
-          }).bindPopup("Аптека: "+this.pharmacy?.name);
-          this.options.layers.push(layer);
-          this.options.center = latLng(obj[0]?.lat, obj[0]?.lon);
-          this.options.zoom = 13;
-        }
-      }, error => console.error(error),
-      () => {
-        this.mapShown = false;
-        setTimeout(() => this.mapShown = true, 200);
-      });
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,1 +1,0 @@
-<p>pharmacy-head-dialog works!</p>
Index: rmatiko/ClientApp/src/app/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'app-pharmacy-head-dialog',
-  templateUrl: './pharmacy-head-dialog.component.html',
-  styleUrls: ['./pharmacy-head-dialog.component.css']
-})
-export class PharmacyHeadDialogComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit(): void {
-  }
-
-}
Index: rmatiko/ClientApp/src/app/dialogs/worker-dialog/worker-dialog.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/worker-dialog/worker-dialog.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,3 +1,0 @@
-button {
-    float: right;
-}
Index: rmatiko/ClientApp/src/app/dialogs/worker-dialog/worker-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/worker-dialog/worker-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,78 +1,0 @@
-<h3>Повеќе информации</h3>
-<br>
-<table class="table table-striped">
-    <tbody>
-        <tr>
-            <td>Име</td>
-            <td>{{worker?.name}}</td>
-        </tr>
-        <tr>
-            <td>Гранка</td>
-            <td>{{worker?.branch}}</td>
-        </tr>
-        <tr>
-            <td>Титула</td>
-            <td>{{worker?.title}}</td>
-        </tr>
-    </tbody>
-    <br>
-    <tbody *ngIf="worker?.facility">
-        <tr>
-            <td>Институција</td>
-            <td>{{worker?.facility?.name}}</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Општина</td>
-            <td>{{worker?.facility?.municipality}}</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Тип</td>
-            <td>{{worker?.facility?.type}}</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Адреса</td>
-            <td>{{worker.facility?.address}}</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Е-пошта</td>
-            <td>{{worker.facility?.email}}</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Телефон</td>
-            <td>{{worker.facility?.phone}}</td>
-        </tr>
-    </tbody>
-    <tbody *ngIf="!worker?.facility">
-        <tr>
-            <td>Институција</td>
-            <td>Нема податок</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Општина</td>
-            <td>Нема податок</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Тип</td>
-            <td>Нема податок</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Адреса</td>
-            <td>Нема податок</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Е-пошта</td>
-            <td>Нема податок</td>
-        </tr>
-        <tr *ngIf="isExpanded">
-            <td>Телефон</td>
-            <td>Нема податок</td>
-        </tr>
-    </tbody>
-</table>
-<button mat-icon-button color="primary" *ngIf="!isExpanded" (click)="toggleExpansion()" style="min-width: 100%">
-    <mat-icon>expand_more</mat-icon>
-</button>
-<button mat-icon-button color="primary" *ngIf="isExpanded" (click)="toggleExpansion()" style="min-width: 100%">
-    <mat-icon>expand_less</mat-icon>
-</button>
-<p><button mat-button color="primary" (click)="close()">Затвори</button></p>
Index: rmatiko/ClientApp/src/app/dialogs/worker-dialog/worker-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/dialogs/worker-dialog/worker-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,29 +1,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
-import { IHealthcareWorkers } from '../../shared/interfaces';
-
-@Component({
-  selector: 'app-worker-dialog',
-  templateUrl: './worker-dialog.component.html',
-  styleUrls: ['./worker-dialog.component.css']
-})
-export class WorkerDialogComponent implements OnInit {
-  worker: IHealthcareWorkers;
-  isExpanded: boolean = false;
-
-  constructor(private dialogRef: MatDialogRef<WorkerDialogComponent>, @Inject(MAT_DIALOG_DATA) data) {
-    this.worker = data;
-  }
-
-  ngOnInit(): void {
-  }
-
-  close() {
-    this.dialogRef.close();
-  }
-
-  toggleExpansion() {
-    this.isExpanded = !this.isExpanded;
-  }
-
-}
Index: Farmatiko/ClientApp/src/app/fetch-data/fetch-data.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/fetch-data/fetch-data.component.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ Farmatiko/ClientApp/src/app/fetch-data/fetch-data.component.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,24 @@
+<h1 id="tableLabel">Weather forecast</h1>
+
+<p>This component demonstrates fetching data from the server.</p>
+
+<p *ngIf="!forecasts"><em>Loading...</em></p>
+
+<table class='table table-striped' aria-labelledby="tableLabel" *ngIf="forecasts">
+  <thead>
+    <tr>
+      <th>Date</th>
+      <th>Temp. (C)</th>
+      <th>Temp. (F)</th>
+      <th>Summary</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr *ngFor="let forecast of forecasts">
+      <td>{{ forecast.date }}</td>
+      <td>{{ forecast.temperatureC }}</td>
+      <td>{{ forecast.temperatureF }}</td>
+      <td>{{ forecast.summary }}</td>
+    </tr>
+  </tbody>
+</table>
Index: Farmatiko/ClientApp/src/app/fetch-data/fetch-data.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/fetch-data/fetch-data.component.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ Farmatiko/ClientApp/src/app/fetch-data/fetch-data.component.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,23 @@
+import { Component, Inject } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+
+@Component({
+  selector: 'app-fetch-data',
+  templateUrl: './fetch-data.component.html'
+})
+export class FetchDataComponent {
+  public forecasts: WeatherForecast[];
+
+  constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
+    http.get<WeatherForecast[]>(baseUrl + 'weatherforecast').subscribe(result => {
+      this.forecasts = result;
+    }, error => console.error(error));
+  }
+}
+
+interface WeatherForecast {
+  date: string;
+  temperatureC: number;
+  temperatureF: number;
+  summary: string;
+}
Index: rmatiko/ClientApp/src/app/home/home.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/home/home.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,50 +1,0 @@
-.wrapper {
-  display: flex;
-  flex-direction: column;
-  min-width: 300px;
-}
-
-.mat-table {
-  overflow: auto;
-  max-height: 500px;
-}
-
-.header {
-  padding: 8px 24px 0;
-}
-
-.mat-form-field {
-  font-size: 14px;
-  width: 100%;
-}
-
-table {
-width: 100%;
-}
-
-h2 {
-  padding: 1em 0;
-}
-.tableRow:hover {
-  background-color: #D4F2CD;
-  transform: scale(1.0005);
-}
-
-h2 button {
-  float: right;
-  padding: 0 5em;
-}
-
-#map {
-  height: 100%;
-}
-
-.map-frame {
-  border: 2px solid black;
-  height: 100%;
-}
-
-.map-wrapper {
-  margin: 0 3em 3em 3em;
-  min-height: 400px;
-}
Index: Farmatiko/ClientApp/src/app/home/home.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/home/home.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/home/home.component.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,71 +1,14 @@
-<app-nav-menu></app-nav-menu>
-
-<mat-tab-group dynamicHeight mat-stretch-tabs>
-  <mat-tab class="tab" label="Лекови">
-  <div class="wrapper">
-    <div class="header">
-    <h2>Лекови</h2>
-  <mat-form-field>
-    <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек">
-  </mat-form-field>
-    </div>
-  <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true">
-      <thead>
-        <tr>
-      	  <th>Име</th>
-      	  <th>Форма</th>
-      	  <th>Цена</th>
-      	</tr>
-      </thead>
-      <tbody>
-      	<tr *ngFor="let medicine of filteredMedicines" (click)="openMedicineDialog(medicine)" class="tableRow">
-      	  <td>{{ medicine.name }}</td>
-      	  <td>{{ medicine.form }}</td>
-      	  <td>{{ medicine.price }}</td>
-      	</tr>
-    </tbody>
-  </table>
-  </div>
-  </mat-tab>
-  <mat-tab class="tab" label="Аптеки">
-  <div class="wrapper">
-    <div class="header">
-    <h2>Аптеки 
-      <button mat-icon-button color="primary" (click)="refreshMap()" [disabled]="!showMap">
-        <mat-icon>refresh</mat-icon>Освежи
-      </button>
-      <button mat-icon-button color="accent" [disabled]="clicked" (click)="toggleMap(); clicked = true">
-        <mat-icon>map</mat-icon>Активирај
-      </button>
-    </h2>
-    <div class="map-wrapper" *ngIf="showMap">
-      <div class="map-frame">
-        <div id="map" style="height: 400px;" leaflet [leafletOptions]="options"></div>
-      </div>
-    </div>
-
-    <mat-form-field>
-      <input matInput (keyup)="applyFilterPharmacies($event.target.value)" placeholder="Пронајди аптека">
-    </mat-form-field>
-    </div>
-    <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true">
-      <thead>
-        <tr>
-      	  <th>Име</th>
-      	  <th>Локација</th>
-      	  <th>Работи 27/7?</th>
-      	</tr>
-      </thead>
-      <tbody>
-      	<tr *ngFor="let pharmacy of filteredPharmacies" (click)="openPharmacyDialog(pharmacy)" class="tableRow">
-      	  <td>{{ pharmacy.name }}</td>
-      	  <td>{{ pharmacy.location }}</td>
-      	  <td *ngIf="pharmacy.workAllTime == true">Да</td>
-      	  <td *ngIf="pharmacy.workAllTime != true">Не</td>
-      	</tr>
-    </tbody>
-  </table>
-
-    </div>
-    </mat-tab>
-  </mat-tab-group>
+<h1>Hello, world!</h1>
+<p>Welcome to your new single-page application, built with:</p>
+<ul>
+  <li><a href='https://get.asp.net/'>ASP.NET Core</a> and <a href='https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx'>C#</a> for cross-platform server-side code</li>
+  <li><a href='https://angular.io/'>Angular</a> and <a href='http://www.typescriptlang.org/'>TypeScript</a> for client-side code</li>
+  <li><a href='http://getbootstrap.com/'>Bootstrap</a> for layout and styling</li>
+</ul>
+<p>To help you get started, we've also set up:</p>
+<ul>
+  <li><strong>Client-side navigation</strong>. For example, click <em>Counter</em> then <em>Back</em> to return here.</li>
+  <li><strong>Angular CLI integration</strong>. In development mode, there's no need to run <code>ng serve</code>. It runs in the background automatically, so your client-side resources are dynamically built on demand and the page refreshes when you modify any file.</li>
+  <li><strong>Efficient production builds</strong>. In production mode, development-time features are disabled, and your <code>dotnet publish</code> configuration automatically invokes <code>ng build</code> to produce minified, ahead-of-time compiled JavaScript files.</li>
+</ul>
+<p>The <code>ClientApp</code> subdirectory is a standard Angular CLI application. If you open a command prompt in that directory, you can run any <code>ng</code> command (e.g., <code>ng test</code>), or use <code>npm</code> to install extra packages into it.</p>
Index: Farmatiko/ClientApp/src/app/home/home.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/home/home.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/home/home.component.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,166 +1,8 @@
-import { Component, OnInit } from '@angular/core';
-import { IMedicine, IPharmacy } from '../shared/interfaces';
-import { DataService } from '../shared/data.service';
-import { MatDialog } from '@angular/material/dialog';
-import { MedicineDialogComponent } from '../dialogs/medicine-dialog/medicine-dialog.component';
-import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component';
-import { latLng, LatLng, tileLayer, marker, icon } from 'leaflet';
-import { HttpClient } from '@angular/common/http';
+import { Component } from '@angular/core';
 
 @Component({
   selector: 'app-home',
   templateUrl: './home.component.html',
-  styleUrls: ['./home.component.css']
 })
-export class HomeComponent implements OnInit {
-  public medicines: IMedicine[] = [];
-  public pharmacies: IPharmacy[] = [];
-  public filteredMedicines: IMedicine[] = [];
-  public filteredPharmacies: IPharmacy[] = [];
-  public lat;
-  public lng;
-  clicked = false;
-  showMap: boolean = false;
-  options = {
-    layers: [
-      tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' })
-    ],
-    zoom: 8,
-    center: latLng(41.61807, 21.74348)
-  }
-
-  constructor(private dataService: DataService, private dialog: MatDialog, private http: HttpClient) {
-
-  }
-
-  ngOnInit(): void {
-    this.dataService.getMedicines()
-        .subscribe((medicine: IMedicine[]) => {
-          this.medicines = this.filteredMedicines = medicine;
-        },
-        (err: any) => console.log(err),
-        () => console.log('Medicine data retrieved'));
-
-    this.dataService.getPharmacies()
-        .subscribe((pharmacy: IPharmacy[]) => {
-          this.pharmacies = this.filteredPharmacies = pharmacy;
-        },
-        (err: any) => console.log(err),
-        () => {
-          this.appendPharmacyMarkers(this.pharmacies);
-          console.log('Pharmacy data retrieved');
-        });
-    if (navigator.geolocation) {
-      navigator.geolocation.getCurrentPosition((position) => {
-        if (position) {
-          this.lat = position.coords.latitude;
-          this.lng = position.coords.longitude;
-          let layer = marker([ this.lat, this.lng ], {
-            icon: icon({
-              iconSize: [ 25, 41 ],
-              iconAnchor: [ 13, 41 ],
-              iconUrl: 'assets/home-icon.png'
-            })
-          }).bindPopup("Вашата локација");
-          this.options.layers.push(layer);
-        }
-      });
-    }
-  }
-
-  appendPharmacyMarkers(pharmas: IPharmacy[]) {
-    this.options.layers = [];
-    this.options.layers.push(tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}));
-    if(this.lat && this.lng) {
-      this.options.layers.push(marker([ this.lat, this.lng ], {
-        icon: icon({
-          iconSize: [ 25, 41 ],
-          iconAnchor: [ 13, 41 ],
-          iconUrl: 'assets/home-icon.png'
-        })
-      }).bindPopup("Вашата локација"));
-    }
-    pharmas.forEach((pharmacy) => {
-      this.http.get<any>('https://jankuloski.xyz:8080/https://nominatim.openstreetmap.org/search/?country=Macedonia&city='+pharmacy.location+'&street='+pharmacy.address+'&format=json').subscribe(obj => {
-        console.log(obj);  
-        if(obj.length) {
-            let layer = marker([ obj[0]?.lat, obj[0]?.lon ], {
-              icon: icon({
-                iconSize: [ 25, 41 ],
-                iconAnchor: [ 13, 41 ],
-                iconUrl: 'assets/pharmacy-icon.png'
-              })
-            }).bindPopup("Аптека: "+pharmacy.name);
-            this.options.layers.push(layer);
-          }
-        }, error => console.error(error));
-    });
-  }
-
-
-  applyFilterMedicines(filterValue: string) {
-    console.log("applyFilterMedicines works!")
-    if(filterValue) {
-      this.dataService.searchMedicines(filterValue)
-          .subscribe((medicine: IMedicine[]) => {
-            this.filteredMedicines = medicine;
-          },
-          (err: any) => console.log(err),
-          () => console.log('Medicine data retrieved')); 
-    }
-    else {
-      this.filteredMedicines = this.medicines;
-    }
-  }
-  
-  applyFilterPharmacies(filterValue: string) {
-    console.log("applyFilterPharmacies works!")
-    if(filterValue) {
-      this.dataService.searchPharmacies(filterValue)
-          .subscribe((pharmacy: IPharmacy[]) => {
-            this.filteredPharmacies = pharmacy;
-          },
-          (err: any) => console.log(err),
-          () => {
-            this.appendPharmacyMarkers(this.filteredPharmacies);
-            if(this.showMap) {
-              this.showMap = false;
-              setTimeout(() => this.showMap = true, 300);
-            }
-            console.log('Pharmacy data retrieved')
-        }); 
-    }
-    else {
-      this.filteredPharmacies = this.pharmacies;
-      this.appendPharmacyMarkers(this.pharmacies);
-      if(this.showMap) {
-        this.showMap = false;
-        setTimeout(() => this.showMap = true, 300);
-      }
-    }
-  }
-
-  openMedicineDialog(medicine: IMedicine): void {
-    this.dialog.open(MedicineDialogComponent, {
-      width: '450px',
-      data: medicine
-    });
-  }
-
-  openPharmacyDialog(pharmacy: IPharmacy): void {
-    this.dialog.open(PharmacyDialogComponent, {
-      width: '450px',
-      data: pharmacy
-    });
-  }
-
-  toggleMap() {
-    this.showMap = !this.showMap;
-  }
-
-  refreshMap() {
-    this.showMap = false;
-    setTimeout(() => this.showMap = true, 300);
-  }
-
+export class HomeComponent {
 }
Index: rmatiko/ClientApp/src/app/korona/korona.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/korona/korona.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,32 +1,0 @@
-.counter {
-  background-color: #f5f5f5;
-  padding: 20px 0;
-  border-radius: 5px;
-}
-
-.count-title {
-  font-size: 40px;
-  font-weight: normal;
-  margin-top: 10px;
-  margin-bottom: 0;
-  text-align: center;
-}
-
-.count-text {
-  font-size: 13px;
-  font-weight: normal;
-  margin-top: 10px;
-  margin-bottom: 0;
-  text-align: center;
-}
-
-.fa-2x {
-  margin: 0 auto;
-  float: none;
-  display: table;
-  color: #4ad1e5;
-}
-
-.pads {
-  padding: 1em 0;
-}
Index: rmatiko/ClientApp/src/app/korona/korona.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/korona/korona.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,64 +1,0 @@
-<app-nav-menu></app-nav-menu>
-
-<div class="container" *ngIf="korona">
-  <div class="row">
-    <br />
-    <div class="col text-center">
-      <h2>{{korona.name}}</h2>
-      <p>статистика</p>
-    </div>
-  </div>
-  <div class="row text-center pads">
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-code fa-2x">{{korona.totalMK}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Вкупно случаи во земјата</p>
-      </div>
-    </div>
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-coffee fa-2x">{{korona.activeMK}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Активни случаи во земјата</p>
-      </div>
-    </div>
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-lightbulb-o fa-2x">{{korona.deathsMK}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Смртни случаи во земјата</p>
-      </div>
-    </div>
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-bug fa-2x">{{korona.newMK}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Нови случаи во земјата</p>
-      </div>
-    </div>
-  </div>
-  <div class="row text-center pads">
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-bug fa-2x">{{korona.totalGlobal}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Вкупно случаи глобално</p>
-      </div>
-    </div>
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-bug fa-2x">{{korona.activeGlobal}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Активни случаи глобално</p>
-      </div>
-    </div>
-    <div class="col">
-      <div class="counter" *ngIf="korona">
-        <i class="fa fa-bug fa-2x">{{korona.deathsGlobal}}</i>
-        <h2 class="timer count-title count-number"></h2>
-        <p class="count-text ">Смртни случаи глобално</p>
-      </div>
-    </div>
-    </div>
-</div>
Index: rmatiko/ClientApp/src/app/korona/korona.component.spec.ts
===================================================================
--- Farmatiko/ClientApp/src/app/korona/korona.component.spec.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { KoronaComponent } from './korona.component';
-
-describe('KoronaComponent', () => {
-  let component: KoronaComponent;
-  let fixture: ComponentFixture<KoronaComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [KoronaComponent]
-    })
-      .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(KoronaComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: rmatiko/ClientApp/src/app/korona/korona.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/korona/korona.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,27 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-import { DataService } from '../shared/data.service';
-import { IPandemic } from '../shared/interfaces';
-
-@Component({
-  selector: 'app-korona',
-  templateUrl: './korona.component.html',
-  styleUrls: ['./korona.component.css']
-})
-export class KoronaComponent implements OnInit {
-  public korona: IPandemic;
-
-  constructor(private dataService: DataService) {
-
-  }
-
-  ngOnInit(): void {
-    this.dataService.getPandemic()
-        .subscribe((res: IPandemic) => {
-          this.korona = res;
-          console.log(this.korona);
-        },
-        (err: any) => console.log(err),
-        () => console.log('Pandemic data retrieved'));
-  }
-
-}
Index: rmatiko/ClientApp/src/app/login/login.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/login/login.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,51 +1,0 @@
-.example-container {
-    display: flex;
-    flex-direction: column;
-}
-  
-.example-container > * {
-    width: 100%;
-}
-
-.wrapper {
-    position: fixed;
-    left: 50%;
-    top: 50%;
-    transform: translate(-50%, -50%);
-}
-
-
-:host {
-    display: flex;
-    justify-content: center;
-}
-
-.mat-form-field {
-    width: 100%;
-    min-width: 300px;
-}
-
-mat-card-title,
-mat-card-content {
-    display: flex;
-    justify-content: center;
-    text-align: center;
-    align-items: center;
-}
-
-.error {
-    padding: 16px;
-    width: 300px;
-    color: white;
-    background-color: red;
-}
-
-.button {
-    display: flex;
-    justify-content: flex-end;
-}
-
-.aligner {
-    float: right;
-    padding-left: 2.5em;
-}
Index: rmatiko/ClientApp/src/app/login/login.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/login/login.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,43 +1,0 @@
-<div class="wrapper">
-<mat-card>
-<mat-card-header><h2>Најава 
-  <div class="aligner">
-  <button mat-icon-button color="primary" [routerLink]="['/']">
-    Почетна <mat-icon>home</mat-icon>
-  </button>
-</div></h2></mat-card-header>
-<mat-card-content>
-<form [formGroup]="loginForm" novalidate>
-  <div class="example-container">
-    <mat-form-field>
-      <input matInput placeholder="Email" [(ngModel)]="this.username" formControlName="username">
-    </mat-form-field>
-
-    <mat-form-field>
-      <input matInput type="password" placeholder="Password" [(ngModel)]="this.password" formControlName="password">    
-    </mat-form-field>
-
-    <button [disabled]="!loginForm.valid" mat-raised-button color="primary" (click)="loginPharmacyHead()" mat-button>Најави се</button>
-
-    <div class="checkbox mb-3 text-danger" *ngIf="loginError">
-      Login failed. Please try again.
-    </div>
-  </div>
-</form>
-</mat-card-content>
-</mat-card>
-<br>
-  <mat-card>
-  <mat-card-header><h2>Регистрација 
-    <div class="aligner">
-    <button mat-icon-button color="accent" (click)="expandRegistration()">
-      <mat-icon>local_hospital</mat-icon>
-    </button>
-  </div></h2></mat-card-header>
-  <mat-card-content *ngIf="expanded">
-    <div class="content">
-      Модераторски профил може да има само еден<br> претставник од компанија што поседува деловен објект <br> - Аптека. За регистрација на профилот, потребно е <br> компанијата да приложи соодветен доказ со испраќање<br> на мејл до нашата е-пошта: <a href="mailto:admin@farmatiko.tk">admin@farmatiko.tk</a>
-    </div>
-  </mat-card-content>
-  </mat-card>
-  </div>
Index: rmatiko/ClientApp/src/app/login/login.component.spec.ts
===================================================================
--- Farmatiko/ClientApp/src/app/login/login.component.spec.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { LoginComponent } from './login.component';
-
-describe('LoginComponent', () => {
-  let component: LoginComponent;
-  let fixture: ComponentFixture<LoginComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ LoginComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(LoginComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: rmatiko/ClientApp/src/app/login/login.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/login/login.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,74 +1,0 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { FormGroup, FormControl, Validators } from '@angular/forms';
-import { Router, ActivatedRoute } from '@angular/router';
-import { Subscription } from 'rxjs';
-import { first } from 'rxjs/operators';
-import { AuthService } from '../shared/services/auth.service';
-import { finalize } from 'rxjs/operators';
-
-@Component({
-  selector: 'app-login',
-  templateUrl: './login.component.html',
-  styleUrls: ['./login.component.css']
-})
-export class LoginComponent implements OnInit, OnDestroy {
-  busy = false;
-  loginForm: FormGroup;
-  username = '';
-  password = '';
-  loginError = false;
-  expanded = false;
-  private subscription: Subscription;
-
-  constructor(private authService: AuthService,private router: Router, private route: ActivatedRoute) {
-    this.loginForm = new FormGroup({
-      username: new FormControl('', [Validators.required, Validators.email]),
-      password: new FormControl('', [Validators.required])
-    });
-  }
-  ngOnDestroy(): void {
-    this.subscription?.unsubscribe();
-  }
-
-  ngOnInit(): void {
-    this.subscription = this.authService.user$.subscribe((x) => {
-      if (this.route.snapshot.url[0].path === 'login') {
-        const accessToken = localStorage.getItem('access_token');
-        const refreshToken = localStorage.getItem('refresh_token');
-        if (x && accessToken && refreshToken) {
-          const returnUrl = this.route.snapshot.queryParams['returnUrl'] || '';
-          this.router.navigate([returnUrl]);
-        }
-      }
-    });
-  }
-
-  loginPharmacyHead() {
-    if (!this.username || !this.password) {
-      return;
-    }
-    this.busy = true;
-    const returnUrl = this.route.snapshot.queryParams['returnUrl'] || '';
-    this.authService
-      .login(this.username, this.password)
-      .pipe(finalize(() => (this.busy = false)))
-      .subscribe(
-        (data) => {
-          if(data.role === 'Admin') {
-            this.router.navigate(['/admin']);
-          }
-          else {
-            this.router.navigate(['/dashboard']);
-          }
-        },
-        () => {
-          this.loginError = true;
-        }
-      );
-    this.loginForm.reset();
-  }
-
-  expandRegistration() {
-    this.expanded = !this.expanded;
-  }
-}
Index: rmatiko/ClientApp/src/app/nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,1 +1,0 @@
-<p>pharmacy-head-dialog works!</p>
Index: rmatiko/ClientApp/src/app/nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'app-pharmacy-head-dialog',
-  templateUrl: './pharmacy-head-dialog.component.html',
-  styleUrls: ['./pharmacy-head-dialog.component.css']
-})
-export class PharmacyHeadDialogComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit(): void {
-  }
-
-}
Index: Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.css
===================================================================
--- Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.css	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -5,12 +5,7 @@
 }
 
-a.navbar-brand img {
-  width: 200px;
-}
-
 html {
   font-size: 14px;
 }
-
 @media (min-width: 768px) {
   html {
Index: Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.html
===================================================================
--- Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,38 +1,40 @@
 <header>
-  <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+  <nav
+    class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"
+  >
     <div class="container">
-      <a class="navbar-brand" [routerLink]="['/']"><img src="../../assets/logo.png"></a>
-      <button class="navbar-toggler"
-              type="button"
-              data-toggle="collapse"
-              data-target=".navbar-collapse"
-              aria-label="Toggle navigation"
-              [attr.aria-expanded]="isExpanded"
-              (click)="toggle()">
+      <a class="navbar-brand" [routerLink]="['/']">Farmatiko</a>
+      <button
+        class="navbar-toggler"
+        type="button"
+        data-toggle="collapse"
+        data-target=".navbar-collapse"
+        aria-label="Toggle navigation"
+        [attr.aria-expanded]="isExpanded"
+        (click)="toggle()"
+      >
         <span class="navbar-toggler-icon"></span>
       </button>
-      <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse"
-           [ngClass]="{ show: isExpanded }">
+      <div
+        class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse"
+        [ngClass]="{ show: isExpanded }"
+      >
         <ul class="navbar-nav flex-grow">
-          <li class="nav-item"
-              [routerLinkActive]="['link-active']"
-              [routerLinkActiveOptions]="{ exact: true }">
-            <a class="nav-link text-dark" [routerLink]="['/']">Побарај лек</a>
+          <li
+            class="nav-item"
+            [routerLinkActive]="['link-active']"
+            [routerLinkActiveOptions]="{ exact: true }"
+          >
+            <a class="nav-link text-dark" [routerLink]="['/']">Home</a>
           </li>
           <li class="nav-item" [routerLinkActive]="['link-active']">
-            <a class="nav-link text-dark" [routerLink]="['/mapa']">Мапа</a>
+            <a class="nav-link text-dark" [routerLink]="['/counter']"
+              >Counter</a
+            >
           </li>
           <li class="nav-item" [routerLinkActive]="['link-active']">
-            <a class="nav-link text-dark" [routerLink]="['/koronavirus']">Пандемии</a>
-          </li>
-          <li *ngIf="loggedIn">
-            <button mat-button [matMenuTriggerFor]="menu"><mat-icon>more_vert</mat-icon></button>
-            <mat-menu #menu="matMenu">
-              <button mat-menu-item [routerLink]="['/dashboard']"><mat-icon>dashboard</mat-icon>Контролна табла</button>
-              <button mat-menu-item (click)="logout()"><mat-icon>exit_to_app</mat-icon>Одјави се</button>
-            </mat-menu>
-          </li>
-          <li *ngIf="!loggedIn">
-            <button mat-raised-button color="primary" [routerLink]="['/login']"><mat-icon>account_circle</mat-icon> Најава</button>
+            <a class="nav-link text-dark" [routerLink]="['/fetch-data']"
+              >Fetch data</a
+            >
           </li>
         </ul>
Index: Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.ts
===================================================================
--- Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/app/nav-menu/nav-menu.component.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,4 +1,3 @@
-import { Component, OnInit } from '@angular/core';
-import { AuthService } from '../shared/services/auth.service';
+import { Component } from '@angular/core';
 
 @Component({
@@ -7,21 +6,6 @@
   styleUrls: ['./nav-menu.component.css']
 })
-export class NavMenuComponent implements OnInit {
+export class NavMenuComponent {
   isExpanded = false;
-  loggedIn: boolean = false;
-
-  constructor(private authService: AuthService) {
-    
-  }
-  
-  ngOnInit(): void {
-    if(localStorage.getItem('access_token')) {
-      this.loggedIn = true;
-    }
-  }
-
-  logout() {
-    this.authService.logout();
-  }
 
   collapse() {
Index: rmatiko/ClientApp/src/app/shared/core.module.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/core.module.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,33 +1,0 @@
-import { NgModule, APP_INITIALIZER, Optional, SkipSelf } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { HTTP_INTERCEPTORS } from '@angular/common/http';
-import { AuthService } from './services/auth.service';
-import { appInitializer } from './services/app-initializer';
-import { JwtInterceptor } from './interceptors/jwt.interceptor';
-import { UnauthorizedInterceptor } from './interceptors/unauthorized.interceptor';
-
-@NgModule({
-  declarations: [],
-  imports: [CommonModule],
-  providers: [
-    {
-      provide: APP_INITIALIZER,
-      useFactory: appInitializer,
-      multi: true,
-      deps: [AuthService],
-    },
-    { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
-    {
-      provide: HTTP_INTERCEPTORS,
-      useClass: UnauthorizedInterceptor,
-      multi: true,
-    },
-  ],
-})
-export class CoreModule {
-  constructor(@Optional() @SkipSelf() core: CoreModule) {
-    if (core) {
-      throw new Error('Core Module can only be imported to AppModule.');
-    }
-  }
-}
Index: rmatiko/ClientApp/src/app/shared/data.service.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/data.service.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,217 +1,0 @@
-import { Injectable,  } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http';
-
-import { Observable } from 'rxjs';
-import { map, catchError } from 'rxjs/operators';
-
-import { IHealthFacilities, IHealthcareWorkers, IMedicine, IPandemic, IPharmacy, IPharmacyHead, IPharmacyHeadRequest } from './interfaces';
-import { environment } from '../../environments/environment';
-
-@Injectable()
-export class DataService {
-    baseFacilitiesUrl: string = `${environment.baseApiUrl}api/facilities`;
-    baseWorkersUrl: string = `${environment.baseApiUrl}api/workers`;
-    baseMedicineUrl: string = `${environment.baseApiUrl}api/medicines`;
-    basePandemicUrl: string = `${environment.baseApiUrl}api/pandemic`;
-    basePharmacyUrl: string = `${environment.baseApiUrl}api/pharmacy`;
-    basePharmacyHead: string = `${environment.baseApiUrl}api/pharmacyhead`;
-
-    constructor(private http: HttpClient) {
-
-    }
-
-    //Facility GET
-    getFacilities() : Observable<IHealthFacilities[]> {
-        return this.http.get<IHealthFacilities[]>(this.baseFacilitiesUrl)
-                   .pipe(
-                        map((facilities: IHealthFacilities[]) => {
-                            return facilities;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    searchFacilities(searchquery: string) : Observable<IHealthFacilities[]> {
-        return this.http.get<IHealthFacilities[]>(this.baseFacilitiesUrl + '/search/' + searchquery)
-                   .pipe(
-                        map((facilities: IHealthFacilities[]) => {
-                            return facilities;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    getFacility(id: string) : Observable<IHealthFacilities> {
-        return this.http.get<IHealthFacilities>(this.baseFacilitiesUrl + '/' + id)
-                   .pipe(catchError(this.handleError));
-    }
-
-
-    //Worker GET
-    getWorkers() : Observable<IHealthcareWorkers[]> {
-        return this.http.get<IHealthcareWorkers[]>(this.baseWorkersUrl)
-                   .pipe(
-                        map((workers: IHealthcareWorkers[]) => {
-                            return workers;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    searchWorkers(searchquery: string) : Observable<IHealthcareWorkers[]> {
-        return this.http.get<IHealthcareWorkers[]>(this.baseWorkersUrl + '/search/' + searchquery)
-                   .pipe(
-                        map((workers: IHealthcareWorkers[]) => {
-                            return workers;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    getWorker(id: string) : Observable<IHealthcareWorkers> {
-        return this.http.get<IHealthcareWorkers>(this.baseWorkersUrl + '/' + id)
-                   .pipe(catchError(this.handleError));
-    }
-
-
-    //Medicine GET
-    getMedicines() : Observable<IMedicine[]> {
-        return this.http.get<IMedicine[]>(this.baseMedicineUrl)
-                   .pipe(
-                        map((medicines: IMedicine[]) => {
-                            return medicines;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    searchMedicines(searchquery: string) : Observable<IMedicine[]> {
-        return this.http.get<IMedicine[]>(this.baseMedicineUrl + '/search/' + searchquery)
-                   .pipe(
-                        map((medicines: IMedicine[]) => {
-                            return medicines;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    getMedicine(id: string) : Observable<IMedicine> {
-        return this.http.get<IMedicine>(this.baseMedicineUrl + '/' + id)
-                   .pipe(catchError(this.handleError));
-    }
-
-
-    getPandemic() : Observable<IPandemic> {
-        return this.http.get<IPandemic>(this.basePandemicUrl)
-                   .pipe(catchError(this.handleError));
-    }
-
-
-    //Pharmacy GET
-    getPharmacies() : Observable<IPharmacy[]> {
-        return this.http.get<IPharmacy[]>(this.basePharmacyUrl)
-                   .pipe(
-                        map((pharmacies: IPharmacy[]) => {
-                            return pharmacies;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    searchPharmacies(searchquery: string) : Observable<IPharmacy[]> {
-        return this.http.get<IPharmacy[]>(this.basePharmacyUrl + '/search/' + searchquery)
-                   .pipe(
-                        map((pharmacies: IPharmacy[]) => {
-                            return pharmacies;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    getPharmacy(id: string) : Observable<IPharmacy> {
-        return this.http.get<IPharmacy>(this.basePharmacyUrl + '/' + id)
-                   .pipe(catchError(this.handleError));
-    }
-
-    //PharmacyHead GET
-    getPharmacyHeads() : Observable<IPharmacyHead[]> {
-        return this.http.get<IPharmacyHead[]>(this.basePharmacyHead)
-                   .pipe(
-                        map((pharmacyheads: IPharmacyHead[]) => {
-                            return pharmacyheads;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    getClaimingRequests() : Observable<IPharmacyHeadRequest[]> {
-        return this.http.get<IPharmacyHeadRequest[]>(this.basePharmacyHead + '/requests')
-                   .pipe(
-                        map((requests: IPharmacyHeadRequest[]) => {
-                            return requests;
-                        }),
-                        catchError(this.handleError)
-                   );
-    }
-    loginPharmacyHead(email: string, passwd: string) : Observable<any> {
-        let postData = {username : email ,password :passwd};
-        return this.http.post<any>(this.basePharmacyHead + '/login', postData)
-                   .pipe(
-                        map((data) => {
-                            return data;
-                        }),
-                        catchError(this.handleError)
-                    );
-    }
-    getPharmacyHead(id: string) : Observable<IPharmacyHead> {
-        return this.http.get<IPharmacyHead>(this.basePharmacyHead + '/' + id)
-                   .pipe(catchError(this.handleError));
-    }
-    //PharmacyHead POST
-    insertPharmacyHead(head: IPharmacyHead) : Observable<IPharmacyHead> {
-        return this.http.post<IPharmacyHead>(this.basePharmacyHead + '/add', head)
-                   .pipe(
-                        map((data) => {
-                            return data;
-                        }),
-                        catchError(this.handleError)
-                    );
-    }
-    claimPharmacy(req: IPharmacyHeadRequest) : Observable<IPharmacyHeadRequest> {
-        return this.http.post<IPharmacyHeadRequest>(this.basePharmacyHead + '/requests', req)
-                    .pipe(
-                        map((data) => {
-                            return data;
-                        }),
-                        catchError(this.handleError)
-                    );
-    }
-    updatePharmacyHead(head: IPharmacyHead) : Observable<IPharmacyHead> {
-        return this.http.post<IPharmacyHead>(this.basePharmacyHead + '/update', head)
-                   .pipe(
-                        map((data) => {
-                            return data;
-                        }),
-                        catchError(this.handleError)
-                    );
-    }
-    deletePharmacyHead(id: string) : Observable<any> {
-        return this.http.post<any>(this.basePharmacyHead + '/delete/' + id, id)
-                    .pipe(
-                        map((data) => {
-                            return data;
-                        }),
-                        catchError(this.handleError)
-                    );
-    }
-    deleteClaimingRequest(req: IPharmacyHeadRequest) : Observable<boolean> {
-        return this.http.post<boolean>(this.basePharmacyHead + '/requests/' + req.id, req)
-                    .pipe(
-                        map((data) => {
-                            return data;
-                        }),
-                        catchError(this.handleError)
-                    );
-    }
-
-    private handleError(error: HttpErrorResponse) {
-        console.error('server error:', error);
-        if (error.error instanceof Error) {
-          let errMessage = error.error.message;
-          return Observable.throw(errMessage);
-        }
-        return Observable.throw(error || 'ASP.NET Core server error');
-    }
-
-}
Index: rmatiko/ClientApp/src/app/shared/guards/auth.guard.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/guards/auth.guard.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,40 +1,0 @@
-import { Injectable } from '@angular/core';
-import {
-  CanActivate,
-  ActivatedRouteSnapshot,
-  RouterStateSnapshot,
-  UrlTree,
-  Router,
-} from '@angular/router';
-import { Observable } from 'rxjs';
-import { AuthService } from '../services/auth.service';
-import { map } from 'rxjs/operators';
-
-@Injectable({
-  providedIn: 'root',
-})
-export class AuthGuard implements CanActivate {
-  constructor(private router: Router, private authService: AuthService) {}
-
-  canActivate(
-    next: ActivatedRouteSnapshot,
-    state: RouterStateSnapshot
-  ):
-    | Observable<boolean | UrlTree>
-    | Promise<boolean | UrlTree>
-    | boolean
-    | UrlTree {
-    return this.authService.user$.pipe(
-      map((user) => {
-        if (user) {
-          return true;
-        } else {
-          this.router.navigate(['login'], {
-            queryParams: { returnUrl: state.url },
-          });
-          return false;
-        }
-      })
-    );
-  }
-}
Index: rmatiko/ClientApp/src/app/shared/index.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/index.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export * from './guards/auth.guard';
-export * from './services/auth.service';
-export * from './interfaces';
Index: rmatiko/ClientApp/src/app/shared/interceptors/jwt.interceptor.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/interceptors/jwt.interceptor.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,30 +1,0 @@
-import { Injectable } from '@angular/core';
-import {
-  HttpRequest,
-  HttpHandler,
-  HttpEvent,
-  HttpInterceptor,
-} from '@angular/common/http';
-import { Observable } from 'rxjs';
-import { environment } from '../../../environments/environment';
-import { AuthService } from '../services/auth.service';
-
-@Injectable()
-export class JwtInterceptor implements HttpInterceptor {
-  constructor(private authService: AuthService) {}
-
-  intercept(
-    request: HttpRequest<unknown>,
-    next: HttpHandler
-  ): Observable<HttpEvent<unknown>> {
-    const accessToken = localStorage.getItem('access_token');
-    const isApiUrl = request.url.startsWith(environment.baseApiUrl);
-    if (accessToken && isApiUrl) {
-      request = request.clone({
-        setHeaders: { Authorization: `Bearer ${accessToken}` },
-      });
-    }
-
-    return next.handle(request);
-  }
-}
Index: rmatiko/ClientApp/src/app/shared/interceptors/unauthorized.interceptor.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/interceptors/unauthorized.interceptor.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,39 +1,0 @@
-import { Injectable } from '@angular/core';
-import {
-  HttpRequest,
-  HttpHandler,
-  HttpEvent,
-  HttpInterceptor,
-} from '@angular/common/http';
-import { Observable, throwError } from 'rxjs';
-import { catchError } from 'rxjs/operators';
-import { AuthService } from '../services/auth.service';
-import { environment } from '../../../environments/environment';
-import { Router } from '@angular/router';
-
-@Injectable()
-export class UnauthorizedInterceptor implements HttpInterceptor {
-  constructor(private authService: AuthService, private router: Router) {}
-
-  intercept(
-    request: HttpRequest<unknown>,
-    next: HttpHandler
-  ): Observable<HttpEvent<unknown>> {
-    return next.handle(request).pipe(
-      catchError((err) => {
-        if (err.status === 401) {
-          this.authService.clearLocalStorage();
-          this.router.navigate(['login'], {
-            queryParams: { returnUrl: this.router.routerState.snapshot.url },
-          });
-        }
-
-        if (!environment.production) {
-          console.error(err);
-        }
-        const error = (err && err.error && err.error.message) || err.statusText;
-        return throwError(error);
-      })
-    );
-  }
-}
Index: rmatiko/ClientApp/src/app/shared/interfaces.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/interfaces.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,66 +1,0 @@
-export interface IHealthcareWorkers {
-    id?: string;
-    name: string;
-    branch: Date;
-    facility: IHealthFacilities;
-    title: string;
-}
-
-export interface IHealthFacilities {
-    id?: string;
-    address: string;
-    email?: string;
-    municipality: string;
-    name: string;
-    phone?: string;
-    type?: string;
-}
-
-export interface IMedicine {
-    id?: string;
-    name: string;
-    strength: string;
-    form: string;
-    wayOfIssuing: string;
-    manufacturer: string;
-    price: number;
-    packaging: string;
-    headNames?: string[];
-}
-
-export interface IPandemic {
-    id?: string;
-    name?: string;
-    totalMK?: number;
-    activeMK?: number;
-    deathsMK?: number;
-    newMK?: number;
-    totalGlobal?: number;
-    deathsGlobal?: number;
-    activeGlobal?: number;
-}
-
-export interface IPharmacy {
-    id?: string;
-    name: string;
-    location: string;
-    address: string;
-    workAllTime?: boolean;
-    headName?: string;
-}
-
-export interface IPharmacyHead {
-    id?: string;
-    PharmacyMedicines?: IMedicine[];
-    Pharmacy?: IPharmacy[];
-    Email: string;
-    Name: string;
-    Passwd: string;
-    originalUserName?: string;
-    Role?: string;
-} 
-export interface IPharmacyHeadRequest {
-    id?: string;
-    PharmacyHead?: IPharmacyHead;
-    Pharmacy?: IPharmacy;
-}
Index: rmatiko/ClientApp/src/app/shared/material.module.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/material.module.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,120 +1,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-import { MatButtonModule } from '@angular/material/button';
-import { MatCheckboxModule } from '@angular/material/checkbox';
-import { MatIconModule } from '@angular/material/icon';
-import { MatAutocompleteModule } from '@angular/material/autocomplete';
-import { MatButtonToggleModule } from '@angular/material/button-toggle';
-import { MatCardModule } from '@angular/material/card';
-import { MatChipsModule } from '@angular/material/chips';
-import { MatStepperModule } from '@angular/material/stepper';
-import { MatDatepickerModule } from '@angular/material/datepicker';
-import { MatDialogModule } from '@angular/material/dialog';
-import { MatDividerModule } from '@angular/material/divider';
-import { MatExpansionModule } from '@angular/material/expansion';
-import { MatInputModule } from '@angular/material/input';
-import { MatGridListModule } from '@angular/material/grid-list';
-import { MatListModule } from '@angular/material/list';
-import { MatMenuModule } from '@angular/material/menu';
-import { MatNativeDateModule } from '@angular/material/core';
-import { MatPaginatorModule } from '@angular/material/paginator';
-import { MatProgressBarModule } from '@angular/material/progress-bar';
-import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
-import { MatRadioModule } from '@angular/material/radio';
-import { MatRippleModule } from '@angular/material/core';
-import { MatSelectModule } from '@angular/material/select';
-import { MatSidenavModule } from '@angular/material/sidenav';
-import { MatSliderModule } from '@angular/material/slider';
-import { MatSlideToggleModule } from '@angular/material/slide-toggle';
-import { MatSnackBarModule } from '@angular/material/snack-bar';
-import { MatTableModule } from '@angular/material/table';
-import { MatSortModule } from '@angular/material/sort';
-import { MatTabsModule } from '@angular/material/tabs';
-import { MatToolbarModule } from '@angular/material/toolbar';
-import { MatTooltipModule } from '@angular/material/tooltip';
-import { MatFormFieldModule } from '@angular/material/form-field';
-
-import { CdkTableModule } from '@angular/cdk/table';
-
-@NgModule({
-  imports: [
-    CommonModule,
-    MatButtonModule,
-    MatCheckboxModule,
-    MatIconModule,
-    CdkTableModule,
-    MatAutocompleteModule,
-    MatButtonModule,
-    MatButtonToggleModule,
-    MatCardModule,
-    MatCheckboxModule,
-    MatChipsModule,
-    MatStepperModule,
-    MatDatepickerModule,
-    MatDialogModule,
-    MatDividerModule,
-    MatExpansionModule,
-    MatGridListModule,
-    MatInputModule,
-    MatListModule,
-    MatMenuModule,
-    MatNativeDateModule,
-    MatPaginatorModule,
-    MatProgressBarModule,
-    MatProgressSpinnerModule,
-    MatRadioModule,
-    MatRippleModule,
-    MatSelectModule,
-    MatSidenavModule,
-    MatSliderModule,
-    MatSlideToggleModule,
-    MatSnackBarModule,
-    MatSortModule,
-    MatTableModule,
-    MatTabsModule,
-    MatToolbarModule,
-    MatTooltipModule,
-    MatFormFieldModule
-  ],
-  exports: [
-    CommonModule,
-    MatButtonModule,
-    MatCheckboxModule,
-    MatIconModule,
-    CdkTableModule,
-    MatAutocompleteModule,
-    MatButtonModule,
-    MatButtonToggleModule,
-    MatCardModule,
-    MatCheckboxModule,
-    MatChipsModule,
-    MatStepperModule,
-    MatDatepickerModule,
-    MatDialogModule,
-    MatDividerModule,
-    MatExpansionModule,
-    MatGridListModule,
-    MatInputModule,
-    MatListModule,
-    MatMenuModule,
-    MatNativeDateModule,
-    MatPaginatorModule,
-    MatProgressBarModule,
-    MatProgressSpinnerModule,
-    MatRadioModule,
-    MatRippleModule,
-    MatSelectModule,
-    MatSidenavModule,
-    MatSliderModule,
-    MatSlideToggleModule,
-    MatSnackBarModule,
-    MatSortModule,
-    MatTableModule,
-    MatTabsModule,
-    MatToolbarModule,
-    MatTooltipModule,
-    MatFormFieldModule
-  ]
-})
-export class MaterialModule { }
Index: rmatiko/ClientApp/src/app/shared/services/app-initializer.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/services/app-initializer.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,9 +1,0 @@
-import { AuthService } from './auth.service';
-
-export function appInitializer(authService: AuthService) {
-  return () =>
-    new Promise((resolve) => {
-      console.log('refresh token on app start up')
-      authService.refreshToken().subscribe().add(resolve);
-    });
-}
Index: rmatiko/ClientApp/src/app/shared/services/auth.service.ts
===================================================================
--- Farmatiko/ClientApp/src/app/shared/services/auth.service.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,161 +1,0 @@
-import { Injectable, OnDestroy } from '@angular/core';
-import { Router } from '@angular/router';
-import { HttpClient } from '@angular/common/http';
-import { BehaviorSubject, Observable, of, Subscription } from 'rxjs';
-import { map, tap, delay, finalize } from 'rxjs/operators';
-import { IPharmacyHead } from '../interfaces';
-import { environment } from '../../../environments/environment';
-
-
-interface LoginResult {
-  userName: string;
-  role: string;
-  originalUserName?: string;
-  accessToken: string;
-  refreshToken: string;
-  head?: IPharmacyHead;
-}
-
-@Injectable({
-  providedIn: 'root',
-})
-export class AuthService implements OnDestroy {
-  private readonly apiUrl = `${environment.baseApiUrl}api/pharmacyhead`;
-  private timer: Subscription;
-  private _user = new BehaviorSubject<IPharmacyHead>(null);
-  user$: Observable<IPharmacyHead> = this._user.asObservable();
-
-  private storageEventListener(event: StorageEvent) {
-    if (event.storageArea === localStorage) {
-      if (event.key === 'logout-event') {
-        this.stopTokenTimer();
-        this._user.next(null);
-      }
-      if (event.key === 'login-event') {
-        this.stopTokenTimer();
-        this.http.get<LoginResult>(`${this.apiUrl}/user`).subscribe((x) => {
-          this._user.next({
-            Email: x.userName,
-            Passwd: x.head.Passwd,
-            Role: x.role,
-            originalUserName: x.originalUserName,
-            Name: x.head.Name,
-            PharmacyMedicines: x.head.PharmacyMedicines,
-            Pharmacy: x.head.Pharmacy
-          });
-        });
-      }
-    }
-  }
-
-  constructor(private router: Router, private http: HttpClient) {
-    window.addEventListener('storage', this.storageEventListener.bind(this));
-    console.log(this.apiUrl);
-  }
-
-  ngOnDestroy(): void {
-    window.removeEventListener('storage', this.storageEventListener.bind(this));
-  }
-
-  login(username: string, password: string) {
-    return this.http
-      .post<LoginResult>(`${this.apiUrl}/login`, { username, password })
-      .pipe(
-        map((x) => {
-          this._user.next({
-            Email: x.userName,
-            Passwd: x.head.Passwd,
-            Role: x.role,
-            originalUserName: x.originalUserName,
-            Name: x.head.Name,
-            PharmacyMedicines: x.head.PharmacyMedicines,
-            Pharmacy: x.head.Pharmacy
-          });
-          this.setLocalStorage(x);
-          this.startTokenTimer();
-          return x;
-        })
-      );
-  }
-
-  logout() {
-    this.http
-      .post<unknown>(`${this.apiUrl}/logout`, {})
-      .pipe(
-        finalize(() => {
-          this.clearLocalStorage();
-          this._user.next(null);
-          this.stopTokenTimer();
-          this.router.navigate(['login']);
-        })
-      )
-      .subscribe();
-  }
-
-  refreshToken() {
-    const refreshToken = localStorage.getItem('refresh_token');
-    if (!refreshToken) {
-      this.clearLocalStorage();
-      return of(null);
-    }
-
-    return this.http
-      .post<LoginResult>(`${this.apiUrl}/refresh-token`, { refreshToken })
-      .pipe(
-        map((x) => {
-          this._user.next({
-            Email: x.userName,
-            Passwd: x.head.Passwd,
-            Role: x.role,
-            originalUserName: x.originalUserName,
-            Name: x.head.Name,
-            PharmacyMedicines: x.head.PharmacyMedicines,
-            Pharmacy: x.head.Pharmacy
-          });
-          this.setLocalStorage(x);
-          this.startTokenTimer();
-          return x;
-        })
-      );
-  }
-
-  setLocalStorage(x: LoginResult) {
-    localStorage.setItem('access_token', x.accessToken);
-    localStorage.setItem('refresh_token', x.refreshToken);
-    localStorage.setItem('login-event', 'login' + Math.random());
-  }
-
-  clearLocalStorage() {
-    localStorage.removeItem('access_token');
-    localStorage.removeItem('refresh_token');
-    localStorage.setItem('logout-event', 'logout' + Math.random());
-  }
-
-  getUser() {
-    return this.user$;
-  }
-
-  private getTokenRemainingTime() {
-    const accessToken = localStorage.getItem('access_token');
-    if (!accessToken) {
-      return 0;
-    }
-    const jwtToken = JSON.parse(atob(accessToken.split('.')[1]));
-    const expires = new Date(jwtToken.exp * 1000);
-    return expires.getTime() - Date.now();
-  }
-
-  private startTokenTimer() {
-    const timeout = this.getTokenRemainingTime();
-    this.timer = of(true)
-      .pipe(
-        delay(timeout),
-        tap(() => this.refreshToken().subscribe())
-      )
-      .subscribe();
-  }
-
-  private stopTokenTimer() {
-    this.timer?.unsubscribe();
-  }
-}
Index: rmatiko/ClientApp/src/custom-theme.scss
===================================================================
--- Farmatiko/ClientApp/src/custom-theme.scss	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,28 +1,0 @@
-
-// Custom Theming for Angular Material
-// For more information: https://material.angular.io/guide/theming
-@import '~@angular/material/theming';
-// Plus imports for other components in your app.
-
-// Include the common styles for Angular Material. We include this here so that you only
-// have to load a single css file for Angular Material in your app.
-// Be sure that you only ever include this mixin once!
-@include mat-core();
-
-// Define the palettes for your theme using the Material Design palettes available in palette.scss
-// (imported above). For each palette, you can optionally specify a default, lighter, and darker
-// hue. Available color palettes: https://material.io/design/color/
-$Farmatiko-primary: mat-palette($mat-green);
-$Farmatiko-accent: mat-palette($mat-cyan);
-
-// The warn palette is optional (defaults to red).
-$Farmatiko-warn: mat-palette($mat-red);
-
-// Create the theme object (a Sass map containing all of the palettes).
-$Farmatiko-theme: mat-light-theme($Farmatiko-primary, $Farmatiko-accent, $Farmatiko-warn);
-
-// Include theme styles for core and each component used in your app.
-// Alternatively, you can import and @include the theme mixins for each component
-// that you are using.
-@include angular-material-theme($Farmatiko-theme);
-
Index: Farmatiko/ClientApp/src/environments/environment.prod.ts
===================================================================
--- Farmatiko/ClientApp/src/environments/environment.prod.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/environments/environment.prod.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,4 +1,3 @@
 export const environment = {
-  production: true,
-  baseApiUrl: 'htpps://api.farmatiko.com/',
+  production: true
 };
Index: Farmatiko/ClientApp/src/environments/environment.ts
===================================================================
--- Farmatiko/ClientApp/src/environments/environment.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/environments/environment.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -4,6 +4,5 @@
 
 export const environment = {
-  production: false,
-  baseApiUrl: 'https://localhost:5001/',
+  production: false
 };
 
Index: Farmatiko/ClientApp/src/index.html
===================================================================
--- Farmatiko/ClientApp/src/index.html	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/index.html	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -7,16 +7,8 @@
 
     <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <link rel="icon" type="image/x-icon" href="./favicon.ico" />
-      <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
-    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
-    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
-    integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
-    crossorigin="" />
-    <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
-      integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
-      crossorigin=""></script>
-</head>
+    <link rel="icon" type="image/x-icon" href="favicon.ico" />
+  </head>
   <body>
-    <app-root></app-root>
+    <app-root>Loading...</app-root>
   </body>
 </html>
Index: Farmatiko/ClientApp/src/main.ts
===================================================================
--- Farmatiko/ClientApp/src/main.ts	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/main.ts	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -6,5 +6,5 @@
 
 export function getBaseUrl() {
-  return environment.baseApiUrl;
+  return document.getElementsByTagName('base')[0].href;
 }
 
Index: Farmatiko/ClientApp/src/styles.css
===================================================================
--- Farmatiko/ClientApp/src/styles.css	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/src/styles.css	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -2,8 +2,4 @@
 
 /* Provide sufficient contrast against white background */
-* {
-  box-sizing: border-box;
-}
-
 a {
   color: #0366d6;
@@ -19,5 +15,2 @@
   border-color: #1861ac;
 }
-
-html, body { height: 100%; }
-body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
Index: Farmatiko/ClientApp/tsconfig.json
===================================================================
--- Farmatiko/ClientApp/tsconfig.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/ClientApp/tsconfig.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -2,5 +2,5 @@
   "compileOnSave": false,
   "compilerOptions": {
-    "baseUrl": "https://localhost:5001/",
+    "baseUrl": "./",
     "module": "esnext",
     "outDir": "./dist/out-tsc",
Index: rmatiko/Controllers/AdminController.cs
===================================================================
--- Farmatiko/Controllers/AdminController.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,77 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using FarmatikoData.DTOs;
-using FarmatikoData.Models;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Farmatiko.Controllers
-{
-    [ApiController]
-    [Authorize(Roles = "Admin")]
-    public class AdminController : Controller
-    {
-        private readonly IAdminService _adminService;
-        private readonly IService _service;
-        private readonly IPHService _phservice;
-        public AdminController(IAdminService adminService, IService service, IPHService phservice)
-        {
-            _adminService = adminService;
-            _service = service;
-            _phservice = phservice;
-        }
-
-        //GET
-        [HttpGet]
-        [Route("api/pharmacyhead")]
-        public async Task<IEnumerable<PharmacyHead>> GetPharmacyHeads()
-        {
-            return await _adminService.GetPharmacyHeads();
-        }
-
-        [HttpGet]
-        [Route("api/pharmacyhead/requests")]
-        public async Task<IEnumerable<RequestPharmacyHead>> GetClaimingRequests()
-        {
-            return await _adminService.GetClaimingRequests();
-        }
-
-
-        //POST
-        [HttpPost]
-        [Route("api/pharmacyhead/add")]
-        public async Task<IActionResult> AddPharmacyHead([FromBody]PharmacyHeadDto pharmacyHead)
-        {
-            bool Success = await _service.AddPharmacyHead(pharmacyHead);
-            if (Success)
-                return Ok("Pharmacy added.");
-            return BadRequest();
-        }
-
-        [HttpPost]
-        [Route("api/pharmacyhead/delete/{Id}")] 
-        public async Task<IActionResult> RemovePharmacyHead([FromRoute] int Id)
-        {
-            await _service.RemovePharmacyHead(Id);
-            return Ok();
-        }
-        [HttpPost]
-        [Route("api/pharmacyhead/requests/{Id}")]
-        public IActionResult RejectRequest([FromBody] RequestPharmacyHead req)
-        {
-            bool Success = _adminService.RejectRequest(req);
-            return Ok(Success);
-        }
-        [HttpPost]
-        [Route("api/pharmacyhead/{Id}")]
-        public async Task<IActionResult> ApproveRequest([FromRoute]int Id, [FromBody]PharmacyHeadDto pharmacyHead)
-        {
-            await _phservice.UpdatePharmacyHead(pharmacyHead);
-            return Ok();
-        }
-
-    }
-}
Index: rmatiko/Controllers/ErrorController.cs
===================================================================
--- Farmatiko/Controllers/ErrorController.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,32 +1,0 @@
-﻿using System.Net;
-using Microsoft.AspNetCore.Diagnostics;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Logging;
-
-namespace Farmatiko.Controllers
-{
-    [ApiController]
-    public class ErrorController : Controller
-    {
-        private readonly ILogger<ErrorController> _logger;
-
-        public ErrorController(ILogger<ErrorController> logger)
-        {
-            _logger = logger;
-        }
-        [Route("/Error")]
-        public IActionResult Error()
-        {
-            var exception = HttpContext.Features.Get<IExceptionHandlerFeature>();
-            var statusCode = exception.Error.GetType().Name switch
-            {
-                "ArgumentException" => HttpStatusCode.BadRequest,
-                "Exception" => HttpStatusCode.InternalServerError,
-                /*"NotFoundResult" => HttpStatusCode.NotFound,*/
-                _ => HttpStatusCode.ServiceUnavailable
-            };
-            _logger.LogInformation(statusCode.ToString() + " " + exception.ToString());
-            return Problem(detail: exception.Error.Message, statusCode: (int)statusCode);
-        }
-    }
-}
Index: rmatiko/Controllers/FarmatikoController.cs
===================================================================
--- Farmatiko/Controllers/FarmatikoController.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,124 +1,0 @@
-﻿using System.Collections.Generic;
-using System.Threading.Tasks;
-using FarmatikoData.DTOs;
-using FarmatikoData.Models;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Farmatiko.Controllers
-{
-    [ApiController]
-    public class FarmatikoController : Controller
-    {
-        private readonly IService _service;
-        private readonly IProcessJSONService _JSONservice;
-        public FarmatikoController(IService service, IProcessJSONService JSONservice)
-        {
-            _service = service;
-            _JSONservice = JSONservice;
-        }
-        // Workers
-        //Get
-        [HttpGet]
-        [Route("api/getData")]
-        public void InsertData()
-        {
-            //_JSONservice.DownloadPharmaciesExcel();
-            //_JSONservice.GetProcessedHealthcareWorkersFromJSON();
-            //await _JSONservice.GetProcessedHealthFacilitiesFromJSON();
-            //await _JSONservice.GetProcessedMedicinesFromJSON();
-        }
-        [HttpGet]
-        [Route("api/workers")]
-        public async Task<IEnumerable<HealthcareWorker>> GetWorkers()
-        {
-            var Workers =  await _service.GetAllWorkers();
-            return Workers;
-        }
-        [HttpGet]
-        [Route("api/workers/search/{query}")]
-        public async Task<IEnumerable<HealthcareWorker>> SearchWorkers([FromRoute]string query)
-        {
-            return await _service.SearchWorkers(query);
-        }
-        [HttpGet]
-        [Route("api/workers/{id}")]
-        public async Task<HealthcareWorker> GetWorker([FromRoute] int Id)
-        {
-            return await _service.GetWorker(Id);
-        }
-        //Post
-
-
-        //Facilities
-        //Get
-        [HttpGet]
-        [Route("api/facilities")]
-        public async Task<IEnumerable<HealthFacility>> GetFacilities()
-        {
-            return await _service.GetFacilities();
-        }
-        [HttpGet]
-        [Route("api/facilities/search/{query}")]
-        public async Task<IEnumerable<HealthFacility>> SearchFacilities([FromRoute] string query)
-        {
-            return await _service.SearchFacilities(query);
-        }
-        [HttpGet]
-        [Route("api/facilities/{id}")]
-        public async Task<HealthFacility> GetFacility([FromRoute] int id)
-        {
-            return await _service.GetFacility(id);
-        }
-        //Post
-
-        //Medicine
-        //Get
-        [HttpGet]
-        [Route("api/medicines")]
-        public async Task<IEnumerable<MedicineDTO>> GetMedicines()
-        {
-            return await _service.GetMedicines();
-        }
-        [HttpGet]
-        [Route("api/medicines/search/{query}")]
-        public async Task<IEnumerable<MedicineDTO>> SearchMedicines([FromRoute] string query)
-        {
-            return await _service.SearchMedicines(query);
-        }
-        [HttpGet]
-        [Route("api/medicines/{Id}")]
-        public async Task<Medicine> GetMedicine([FromRoute] int Id)
-        {
-            return await _service.GetMedicine(Id);
-        }
-        //Pandemic
-        [HttpGet]
-        [Route("api/pandemic")]
-        public Pandemic GetPandemic()
-        {
-            return _service.GetPandemic();
-        }
-        //Pharmacy
-        //GET
-        [HttpGet]
-        [Route("api/pharmacy")]
-        public async Task<IEnumerable<PharmacyDTO>> GetPharmacies()
-        {
-            return await _service.GetPharmacies();
-        }
-        [HttpGet]
-        [Route("api/pharmacy/search/{Query}")]
-        public async Task<IEnumerable<PharmacyDTO>> SearchPharmacies([FromRoute] string Query)
-        {
-            return await _service.SearchPharmacies(Query);
-        }
-        [HttpGet]
-        [Route("api/pharmacy/{Id}")]
-        public async Task<Pharmacy> GetPharmacy([FromRoute] int Id)
-        {
-            return await _service.GetPharmacy(Id);
-        }
-
-    }
-}
Index: rmatiko/Controllers/LoginController.cs
===================================================================
--- Farmatiko/Controllers/LoginController.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,242 +1,0 @@
-﻿using System;
-using System.ComponentModel.DataAnnotations;
-using System.Security.Claims;
-using System.Text.Json.Serialization;
-using System.Threading.Tasks;
-using FarmatikoData.Models;
-using FarmatikoServices.Auth;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using FarmatikoServices.Infrastructure;
-using Microsoft.AspNetCore.Authentication;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Logging;
-using Microsoft.IdentityModel.Tokens;
-
-namespace Farmatiko.Controllers
-{
-    [ApiController]
-    public class LoginController : ControllerBase
-    {
-        private readonly ILogger<LoginController> _logger;
-        private readonly IAuthService _authService;
-        private readonly IJwtAuthManager _jwtAuthManager;
-        private readonly IPHService _pHService;
-
-        public LoginController(ILogger<LoginController> logger, IAuthService authService, IJwtAuthManager jwtAuthManager, IPHService pHService)
-        {
-            _logger = logger;
-            _authService = authService;
-            _jwtAuthManager = jwtAuthManager;
-            _pHService = pHService;
-        }
-
-        [AllowAnonymous]
-        [HttpPost("api/pharmacyhead/login")]
-        public ActionResult Login([FromBody] LoginRequest request)
-        {
-            if (!ModelState.IsValid)
-            {
-                return BadRequest();
-            }
-
-            if (!_authService.IsValidUserCredentials(request.UserName, request.Password))
-            {
-                return Unauthorized();
-            }
-
-            var role = _authService.GetUserRole(request.UserName);
-            var claims = new[]
-            {
-                new Claim(ClaimTypes.Name,request.UserName),
-                new Claim(ClaimTypes.Role, role)
-            };
-
-            var jwtResult = _jwtAuthManager.GenerateTokens(request.UserName, claims, DateTime.Now);
-            _logger.LogInformation($"User [{request.UserName}] logged in the system.");
-            return Ok(new LoginResult
-            {
-                UserName = request.UserName,
-                Role = role,
-                AccessToken = jwtResult.AccessToken,
-                RefreshToken = jwtResult.RefreshToken.TokenString, 
-                Head = _pHService.GetPharmacyHead(request.UserName)
-            });
-        }
-
-        [HttpGet("api/pharmacyhead/user")]
-        [Authorize]
-        public ActionResult GetCurrentUser()
-        {
-            return Ok(new LoginResult
-            {
-                UserName = User.Identity.Name,
-                Role = User.FindFirst(ClaimTypes.Role)?.Value ?? string.Empty,
-                OriginalUserName = User.FindFirst("OriginalUserName")?.Value
-            });
-        }
-
-        [HttpPost("api/pharmacyhead/logout")]
-        [Authorize]
-        public ActionResult Logout()
-        {
-            var userName = User.Identity.Name;
-            _jwtAuthManager.RemoveRefreshTokenByUserName(userName);
-            _logger.LogInformation($"User [{userName}] logged out the system.");
-            return Ok();
-        }
-
-        [HttpPost("api/pharmacyhead/refresh-token")]
-        [Authorize]
-        public async Task<ActionResult> RefreshToken([FromBody] RefreshTokenRequest request)
-        {
-            try
-            {
-                var userName = User.Identity.Name;
-                _logger.LogInformation($"User [{userName}] is trying to refresh JWT token.");
-
-                if (string.IsNullOrWhiteSpace(request.RefreshToken))
-                {
-                    return Unauthorized();
-                }
-
-                var accessToken = await HttpContext.GetTokenAsync("Bearer", "access_token");
-                var jwtResult = _jwtAuthManager.Refresh(request.RefreshToken, accessToken, DateTime.Now);
-                _logger.LogInformation($"User [{userName}] has refreshed JWT token.");
-                return Ok(new LoginResult
-                {
-                    /*UserName = userName,
-                    
-                    Role = User.FindFirst(ClaimTypes.Role)?.Value ?? string.Empty,
-                    AccessToken = jwtResult.AccessToken,
-                    RefreshToken = jwtResult.RefreshToken.TokenString*/
-
-                    UserName = userName,
-                    Role = User.FindFirst(ClaimTypes.Role)?.Value ?? string.Empty,
-                    AccessToken = jwtResult.AccessToken,
-                    RefreshToken = jwtResult.RefreshToken.TokenString,
-                    Head = _pHService.GetPharmacyHead(userName)
-                });
-            }
-            catch (SecurityTokenException e)
-            {
-                return Unauthorized(e.Message); // return 401 so that the client side can redirect the user to login page
-            }
-        }
-
-        [HttpPost("api/pharmacyhead/impersonation")]
-        [Authorize(Roles = UserRoles.Admin)]
-        public ActionResult Impersonate([FromBody] ImpersonationRequest request)
-        {
-            var userName = User.Identity.Name;
-            _logger.LogInformation($"User [{userName}] is trying to impersonate [{request.UserName}].");
-
-            var impersonatedRole = _authService.GetUserRole(request.UserName);
-            if (string.IsNullOrWhiteSpace(impersonatedRole))
-            {
-                _logger.LogInformation($"User [{userName}] failed to impersonate [{request.UserName}] due to the target user not found.");
-                return BadRequest($"The target user [{request.UserName}] is not found.");
-            }
-            if (impersonatedRole == UserRoles.Admin)
-            {
-                _logger.LogInformation($"User [{userName}] is not allowed to impersonate another Admin.");
-                return BadRequest("This action is not supported.");
-            }
-
-            var claims = new[]
-            {
-                new Claim(ClaimTypes.Name,request.UserName),
-                new Claim(ClaimTypes.Role, impersonatedRole),
-                new Claim("OriginalUserName", userName)
-            };
-
-            var jwtResult = _jwtAuthManager.GenerateTokens(request.UserName, claims, DateTime.Now);
-            _logger.LogInformation($"User [{request.UserName}] is impersonating [{request.UserName}] in the system.");
-            return Ok(new LoginResult
-            {
-                UserName = request.UserName,
-                Role = impersonatedRole,
-                OriginalUserName = userName,
-                AccessToken = jwtResult.AccessToken,
-                RefreshToken = jwtResult.RefreshToken.TokenString,
-                Head = _pHService.GetPharmacyHead(userName)
-            });
-        }
-
-        [HttpPost("api/pharmacyhead/stop-impersonation")]
-        public ActionResult StopImpersonation()
-        {
-            var userName = User.Identity.Name;
-            var originalUserName = User.FindFirst("OriginalUserName")?.Value;
-            if (string.IsNullOrWhiteSpace(originalUserName))
-            {
-                return BadRequest("You are not impersonating anyone.");
-            }
-            _logger.LogInformation($"User [{originalUserName}] is trying to stop impersonate [{userName}].");
-
-            var role = _authService.GetUserRole(originalUserName);
-            var claims = new[]
-            {
-                new Claim(ClaimTypes.Name,originalUserName),
-                new Claim(ClaimTypes.Role, role)
-            };
-
-            var jwtResult = _jwtAuthManager.GenerateTokens(originalUserName, claims, DateTime.Now);
-            _logger.LogInformation($"User [{originalUserName}] has stopped impersonation.");
-            return Ok(new LoginResult
-            {
-                UserName = originalUserName,
-                Role = role,
-                OriginalUserName = null,
-                AccessToken = jwtResult.AccessToken,
-                RefreshToken = jwtResult.RefreshToken.TokenString,
-                Head = _pHService.GetPharmacyHead(userName)
-            });
-        }
-    }
-
-    public class LoginRequest
-    {
-        [Required]
-        [JsonPropertyName("username")]
-        public string UserName { get; set; }
-
-        [Required]
-        [JsonPropertyName("password")]
-        public string Password { get; set; }
-    }
-
-    public class LoginResult
-    {
-        [JsonPropertyName("userName")]
-        public string UserName { get; set; }
-
-        [JsonPropertyName("role")]
-        public string Role { get; set; }
-
-        [JsonPropertyName("originalUserName")]
-        public string OriginalUserName { get; set; }
-
-        [JsonPropertyName("accessToken")]
-        public string AccessToken { get; set; }
-
-        [JsonPropertyName("refreshToken")]
-        public string RefreshToken { get; set; }
-        [JsonPropertyName("head")]
-        public object Head { get; set; }
-    }
-
-    public class RefreshTokenRequest
-    {
-        [JsonPropertyName("refreshToken")]
-        public string RefreshToken { get; set; }
-    }
-
-    public class ImpersonationRequest
-    {
-        [JsonPropertyName("userName")]
-        public string UserName { get; set; }
-    }
-}
-
Index: rmatiko/Controllers/PharmacyHeadController.cs
===================================================================
--- Farmatiko/Controllers/PharmacyHeadController.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,62 +1,0 @@
-﻿using System.Collections.Generic;
-using System.Threading.Tasks;
-using FarmatikoData.DTOs;
-using FarmatikoData.Models;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Farmatiko.Controllers
-{
-    [ApiController]
-    [Authorize(Roles = "PharmacyHead,Admin")]
-    public class PharmacyHeadController : Controller
-    {
-        private readonly IPHService _PHService;
-        public PharmacyHeadController(IPHService PHService)
-        {
-            _PHService = PHService;
-        }
-
-        //GET
-        
-        [HttpGet]
-        [Route("api/pharmacyhead/{Id}")]
-        public async Task<PharmacyHead> GetPharmacyHeadById([FromRoute] int Id)
-        {
-            var Phead = await _PHService.GetPharmacyHeadByIdAsync(Id);
-            return Phead;
-        }
-        //POST
-        
-        [HttpPost]
-        [Route("api/pharmacyhead/update")]
-        public async Task<IActionResult> UpdatePharmacyHead([FromBody] PharmacyHeadDto pharmacyHead)
-        {
-            await _PHService.UpdatePharmacyHead(pharmacyHead);
-            return Ok();
-        }
-        [HttpPost]
-        [Route("api/pharmacyhead/requests")]
-        public async Task<IActionResult> ClaimPharmacy([FromBody] RequestPharmacyHead pharmacy)
-        {
-            bool Success = await _PHService.ClaimPharmacy(pharmacy);
-            return Ok(Success);
-        }
-       /* [HttpDelete]
-        [Route("api/pharmacyhead/delete/{Id}")]
-        public async Task<IActionResult> Remove([FromRoute] int Id)
-        {
-            bool Success = await _PHService.Remove(Id);
-            return Ok(Success);
-        }*/
-       /* [HttpPost]
-        [Route("api/pharmacyhead/requests/{Id}")]
-        public async Task<IActionResult> RemoveClaimingRequest([FromRoute] int Id)
-        {
-            bool Success = await _PHService.RemoveClaimingRequest(Id);
-            return Ok(Success);
-        }*/
-
-    }
-}
Index: Farmatiko/Farmatiko.csproj
===================================================================
--- Farmatiko/Farmatiko.csproj	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/Farmatiko.csproj	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -14,19 +14,5 @@
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.9" />
-    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.10" />
-    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.10" />
-    <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.6" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.10" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.10">
-      <PrivateAssets>all</PrivateAssets>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-    </PackageReference>
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.10">
-      <PrivateAssets>all</PrivateAssets>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-    </PackageReference>
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
+    <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.3" />
   </ItemGroup>
 
@@ -36,22 +22,4 @@
     <None Remove="$(SpaRoot)**" />
     <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <Compile Remove="Controllers\WeatherForecastController.cs" />
-    <Compile Remove="WeatherForecast.cs" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <None Include="..\.editorconfig" Link=".editorconfig" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\FarmatikoData\FarmatikoData.csproj" />
-    <ProjectReference Include="..\FarmatikoServices\FarmatikoServices.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <Folder Include="ExcellDocs\" />
   </ItemGroup>
 
Index: Farmatiko/Program.cs
===================================================================
--- Farmatiko/Program.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/Program.cs	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -3,8 +3,6 @@
 using System.Linq;
 using System.Threading.Tasks;
-using FarmatikoServices.Services;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
@@ -24,5 +22,4 @@
                 {
                     webBuilder.UseStartup<Startup>();
-                    
                 });
     }
Index: Farmatiko/Properties/launchSettings.json
===================================================================
--- Farmatiko/Properties/launchSettings.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/Properties/launchSettings.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,9 +1,9 @@
-{
+﻿{
   "iisSettings": {
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
-      "applicationUrl": "http://localhost:49759",
-      "sslPort": 44342
+      "applicationUrl": "http://localhost:65079",
+      "sslPort": 44345
     }
   },
@@ -11,4 +11,5 @@
     "IIS Express": {
       "commandName": "IISExpress",
+      "launchBrowser": true,
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
@@ -18,8 +19,8 @@
       "commandName": "Project",
       "launchBrowser": true,
+      "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
-      },
-      "applicationUrl": "https://localhost:5001;http://localhost:5000"
+      }
     }
   }
Index: Farmatiko/Startup.cs
===================================================================
--- Farmatiko/Startup.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/Startup.cs	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,25 +1,9 @@
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.HttpsPolicy;
 using Microsoft.AspNetCore.SpaServices.AngularCli;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
-using FarmatikoData;
-using Microsoft.EntityFrameworkCore;
-using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.FarmatikoRepo;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using FarmatikoServices.Services;
-using Microsoft.Extensions.Logging;
-using Microsoft.AspNetCore.Authentication.JwtBearer;
-using Microsoft.IdentityModel.Tokens;
-using System.Text;
-using FarmatikoServices.Auth;
-using FarmatikoServices.Infrastructure;
-using System;
-using Quartz;
-using Quartz.Impl;
-using Quartz.Spi;
-using FarmatikoServices.Services.JobDTO;
 
 namespace Farmatiko
@@ -27,5 +11,4 @@
     public class Startup
     {
-        readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
         public Startup(IConfiguration configuration)
         {
@@ -38,15 +21,5 @@
         public void ConfigureServices(IServiceCollection services)
         {
-            services.AddCors(options =>
-            {
-                options.AddPolicy(name: MyAllowSpecificOrigins,
-                                  builder =>
-                                  {
-                                      builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin();
-                                  });
-            });
-
             services.AddControllersWithViews();
-            services.AddControllersWithViews().AddNewtonsoftJson(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
             // In production, the Angular files will be served from this directory
             services.AddSpaStaticFiles(configuration =>
@@ -54,86 +27,4 @@
                 configuration.RootPath = "ClientApp/dist";
             });
-            var connectionString = Configuration.GetSection("ConnectionStrings").GetValue<string>("FarmatikoConnection");
-            services.AddEntityFrameworkNpgsql().AddDbContext<FarmatikoDataContext>(opt => opt.UseNpgsql(connectionString));
-
-
-
-            services.AddScoped<IPHRepo, PHRepo>();
-            services.AddScoped<IRepository, Repository>();
-            services.AddScoped<IAdminRepo, AdminRepo>();
-            services.AddTransient<IUpdateDataRepo, UpdateDataRepo>();
-
-            services.AddTransient<IPHService, PHService>();
-            services.AddTransient<IAdminService, AdminService>();
-            services.AddTransient<IService, Service>();
-
-            services.AddTransient<IProcessJSONService, ProcessJSONService>();
-
-            services.AddTransient<ILogger, Logger<ProcessJSONService>>();
-
-
-            var jwtTokenConfig = Configuration.GetSection("jwtTokenConfig").Get<JwtTokenConfig>();
-            services.AddSingleton(jwtTokenConfig);
-
-            services.AddAuthentication(o =>
-            {
-                o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
-                o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
-                o.DefaultSignInScheme = JwtBearerDefaults.AuthenticationScheme;
-            }).AddJwtBearer(x =>
-            {
-                x.RequireHttpsMetadata = true;
-                x.SaveToken = true;
-                x.TokenValidationParameters = new TokenValidationParameters
-                {
-                    ValidateIssuer = true,
-                    ValidIssuer = jwtTokenConfig.Issuer,
-                    ValidateIssuerSigningKey = true,
-                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtTokenConfig.Secret)),
-                    ValidAudience = jwtTokenConfig.Audience,
-                    ValidateAudience = true,
-                    ValidateLifetime = true,
-                    ClockSkew = TimeSpan.FromMinutes(1)
-                };
-            });
-
-            /*.AddJwtBearer(cfg =>
-                     {
-                         cfg.RequireHttpsMetadata = false;
-                         cfg.SaveToken = true;
-                         cfg.IncludeErrorDetails = true;
-                         cfg.TokenValidationParameters = new TokenValidationParameters()
-                         {
-                             ValidIssuer = Configuration.GetSection("TokenIssuer").Value,
-                             ValidAudience = Configuration.GetSection("TokenIssuer").Value,
-                             IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("SecretKey").Value))
-                         };
-
-                     });
-*/
-            services.AddSingleton<IJwtAuthManager>(new JwtAuthManager(jwtTokenConfig));
-            services.AddHostedService<JwtRefreshTokenCache>();
-            services.AddScoped<IAuthService, AuthService>();
-            //If we add imgs
-            /*services.Configure<FormOptions>(o => {
-                o.ValueLengthLimit = int.MaxValue;
-                o.MultipartBodyLengthLimit = int.MaxValue;
-                o.MemoryBufferThreshold = int.MaxValue;
-            });*/
-
-            services.AddScoped<UpdateDataJob>();
-            services.AddSingleton<IJobFactory, SingletonUpdateDataJobFactory>();
-            services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
-
-            services.AddSingleton(new JobSchedule(
-            jobType: typeof(UpdateDataJob),
-            cronExpression: "0/30 * * * * ?"));
-
-
-            // "0 0 12 */7 * ?"
-
-
-            services.AddHostedService<UpdateDataHostedService>();
-
         }
 
@@ -151,15 +42,7 @@
                 app.UseHsts();
             }
-            app.UseExceptionHandler("/Error");
+
             app.UseHttpsRedirection();
             app.UseStaticFiles();
-
-            // if we add imgs
-            /*app.UseStaticFiles(new StaticFileOptions()
-            {
-                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot")),
-                RequestPath = new PathString("/wwwroot")
-            });*/
-
             if (!env.IsDevelopment())
             {
@@ -169,14 +52,9 @@
             app.UseRouting();
 
-            app.UseAuthentication();
-            app.UseAuthorization();
-
-            app.UseCors(MyAllowSpecificOrigins);
-
             app.UseEndpoints(endpoints =>
             {
                 endpoints.MapControllerRoute(
                     name: "default",
-                    pattern: "api/{controller}/{action=Index}/{id?}");
+                    pattern: "{controller}/{action=Index}/{id?}");
             });
 
Index: Farmatiko/appsettings.json
===================================================================
--- Farmatiko/appsettings.json	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ Farmatiko/appsettings.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -1,28 +1,10 @@
 {
-  "ConnectionStrings": {
-    "FarmatikoConnection": "Host=localhost;User ID=postgres;Password=@@Postgres@@.;database=FarmatikoDb;Integrated Security=true; Pooling=true;"
-  },
   "Logging": {
-    "LogLevel": {
+      "LogLevel": {
       "Default": "Information",
       "Microsoft": "Warning",
       "Microsoft.Hosting.Lifetime": "Information"
-    }
-  },
-  "EPPlus": {
-    "ExcelPackage": {
-      "LicenseContext": "NonCommercial"
-    }
-  },
-  "AllowedHosts": "*",
-  "jwtTokenConfig": {
-    "secret": "1234567890123456789",
-    "issuer": "FARMATIKO",
-    "audience": "FARMATIKO",
-    "accessTokenExpiration": 20,
-    "refreshTokenExpiration": 60
-  },
-  "SecretKey": "PEJcK2bD4E2BKdNmAlUl",
-  "TokenIssuer": "FARMATIKOISSUER",
-  "ifStartup": "true"
+      }
+    },
+"AllowedHosts": "*"
 }
Index: rmatikoData/.gitignore
===================================================================
--- FarmatikoData/.gitignore	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,231 +1,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-
-# User-specific files
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-build/
-bld/
-bin/
-Bin/
-obj/
-Obj/
-
-# Visual Studio 2015 cache/options directory
-.vs/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# 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
-# TODO: 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
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/packages/*
-# except build/, which is used as an MSBuild target.
-!**/packages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Microsoft Azure ApplicationInsights config file
-ApplicationInsights.config
-
-# Windows Store app package directory
-AppPackages/
-BundleArtifacts/
-
-# 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
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-/node_modules
-
-# 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
-
-# SQL Server files
-*.mdf
-*.ldf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# 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
-
-# FAKE - F# Make
-.fake/
Index: rmatikoData/Base/BaseEntity.cs
===================================================================
--- FarmatikoData/Base/BaseEntity.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,16 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel.DataAnnotations;
-using System.Text.Json.Serialization;
-
-namespace FarmatikoData.Base
-{
-    public class BaseEntity
-    {
-        [JsonPropertyName("id")]
-        public int Id {  get; set; }
-        public DateTime CreatedOn { get; set; }
-        public DateTime? DeletedOn { get; set; }
-    }
-}
Index: rmatikoData/DTOs/MedicineDTO.cs
===================================================================
--- FarmatikoData/DTOs/MedicineDTO.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Text.Json.Serialization;
-
-namespace FarmatikoData.DTOs
-{
-    public class MedicineDTO
-    {
-        [JsonProperty("name")]
-        public string Name { get; set; }
-        [JsonProperty("strength")]
-        public string Strength { get; set; }
-        [JsonProperty("form")]
-        public string Form { get; set; }
-        [JsonProperty("wayofissuing")]
-        public string WayOfIssuing { get; set; }
-        [JsonProperty("manufacturer")]
-        public string Manufacturer { get; set; }
-        [JsonProperty("price")]
-        public float Price { get; set; }
-        [JsonProperty("packaging")]
-        public string Packaging { get; set; }
-        [JsonPropertyName("headNames")]
-        public ICollection<string> HeadNames { get; set; }
-    }
-}
Index: rmatikoData/DTOs/PharmacyDTO.cs
===================================================================
--- FarmatikoData/DTOs/PharmacyDTO.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,22 +1,0 @@
-﻿using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace FarmatikoData.DTOs
-{
-    public class PharmacyDTO
-    {
-        public PharmacyDTO() { }
-        [JsonProperty("name")]
-        public string Name { get; set; }
-        [JsonProperty("location")]
-        public string Location { get; set; }
-        [JsonProperty("address")]
-        public string Address { get; set; }
-        [JsonProperty("workAllTime")]
-        public bool WorkAllTime { get; set; }
-        [JsonProperty("headName")]
-        public string HeadName { get; set; }
-    }
-}
Index: rmatikoData/DTOs/PharmacyHeadDto.cs
===================================================================
--- FarmatikoData/DTOs/PharmacyHeadDto.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,34 +1,0 @@
-﻿using FarmatikoData.Models;
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace FarmatikoData.DTOs
-{
-    public class PharmacyHeadDto
-    {
-        /*
-         id?: string;
-         PharmacyMedicines?: IMedicine[];
-         Pharmacy?: IPharmacy[];
-         Email: string;
-         Name: string;
-         Passwd: string;
-         originalUserName?: string;
-         Role?: string;
-        */
-        [JsonProperty("id")]
-        public int Id { get; set; }
-        [JsonProperty("PharmacyMedicines")]
-        public List<Medicine> Medicines { get; set; }
-        [JsonProperty("Pharmacy")]
-        public List<Pharmacy> Pharmacies { get; set; }
-        [JsonProperty("Email")]
-        public string Email { get; set; }
-        [JsonProperty("Name")]
-        public string Name { get; set; }
-        [JsonProperty("Passwd")]
-        public string Password { get; set; }
-    }
-}
Index: FarmatikoData/FarmatikoData.csproj
===================================================================
--- FarmatikoData/FarmatikoData.csproj	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ FarmatikoData/FarmatikoData.csproj	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -6,16 +6,5 @@
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.10" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.10" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.10">
-      <PrivateAssets>all</PrivateAssets>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-    </PackageReference>
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.10">
-      <PrivateAssets>all</PrivateAssets>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-    </PackageReference>
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
+    <Folder Include="Models\" />
   </ItemGroup>
 
Index: rmatikoData/FarmatikoDataContext.cs
===================================================================
--- FarmatikoData/FarmatikoDataContext.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,82 +1,0 @@
-﻿using FarmatikoData.Models;
-using Microsoft.EntityFrameworkCore;
-
-namespace FarmatikoData
-{
-    public class FarmatikoDataContext : DbContext
-    {
-        public FarmatikoDataContext(DbContextOptions options) : base(options) { }
-
-
-        public DbSet<HealthFacility> HealthFacilities { get; set; }
-        public DbSet<HealthcareWorker> HealthcareWorkers { get; set; }
-        public DbSet<Pharmacy> Pharmacies { get; set; }
-        public DbSet<PharmacyHead> PharmacyHeads { get; set; }
-        public DbSet<Pandemic> Pandemics { get; set; }
-        public DbSet<Medicine> Medicines { get; set; }
-        public DbSet<RequestPharmacyHead> PHRequests { get; set; }
-        public DbSet<User> Users { get; set; }
-        public DbSet<PharmacyHeadMedicine> PharmacyHeadMedicines { get; set; }
-
-        protected override void OnModelCreating(ModelBuilder modelBuilder)
-        {
-            modelBuilder.UseSerialColumns();
-
-            modelBuilder.Entity<PharmacyHead>()
-                .ToTable("PharmacyHeads");
-
-            modelBuilder.Entity<Medicine>()
-                .ToTable("Medicines");
-
-            modelBuilder.Entity<Pharmacy>()
-                .ToTable("Pharmacies");
-
-            modelBuilder.Entity<PharmacyHeadMedicine>()
-                .ToTable("PharmacyHeadMedicines");
-
-            modelBuilder.Entity<RequestPharmacyHead>()
-                .ToTable("PHRequests");
-
-            modelBuilder.Entity<PharmacyHead>()
-                .Property(p => p.Id)
-                .ValueGeneratedOnAdd();
-
-            modelBuilder.Entity<PharmacyHeadMedicine>()
-                .Property(p => p.Id)
-                .ValueGeneratedOnAdd();
-
-            modelBuilder.Entity<Medicine>()
-                .Property(p => p.Id)
-                .ValueGeneratedOnAdd();
-
-            modelBuilder.Entity<Pharmacy>()
-                .Property(p => p.Id)
-                .ValueGeneratedOnAdd();
-
-            modelBuilder.Entity<PharmacyHead>()
-                .HasMany<Pharmacy>(p => p.Pharmacies)
-                .WithOne(p => p.PharmacyHead);
-
-            modelBuilder.Entity<Pharmacy>()
-                .HasOne<PharmacyHead>(p => p.PharmacyHead)
-                .WithMany(p => p.Pharmacies)
-                .HasForeignKey(x => x.PheadId);
-
-            modelBuilder.Entity<PharmacyHeadMedicine>()
-            .HasKey(bc => new { bc.PheadId, bc.MedicineId});
-
-            modelBuilder.Entity<PharmacyHeadMedicine>()
-                .HasOne(bc => bc.Head)
-                .WithMany(b => b.Medicines)
-                .HasForeignKey(bc => bc.PheadId);
-
-            modelBuilder.Entity<PharmacyHeadMedicine>()
-                .HasOne(bc => bc.Medicine)
-                .WithMany(c => c.Medicines)
-                .HasForeignKey(bc => bc.MedicineId);
-
-
-            base.OnModelCreating(modelBuilder);
-        }
-    }
-}
Index: rmatikoData/FarmatikoRepo/AdminRepo.cs
===================================================================
--- FarmatikoData/FarmatikoRepo/AdminRepo.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,49 +1,0 @@
-﻿using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepo
-{
-    public class AdminRepo : IAdminRepo
-    {
-        private readonly FarmatikoDataContext _context;
-        public AdminRepo(FarmatikoDataContext context)
-        {
-            _context = context;
-        }
-
-        public async Task<IEnumerable<RequestPharmacyHead>> GetClaimingRequests()
-        {
-            var reqs = await _context.PHRequests.Select(x => new RequestPharmacyHead 
-            {
-                Head = x.Head,
-                Pharmacy = x.Pharmacy
-            }).OrderBy(x => x.Head.Name).ToListAsync();
-            return reqs;
-        }
-
-        //GET
-        public async Task<IEnumerable<PharmacyHead>> GetPharmacyHeads()
-        {
-            var PHeads = await _context.PharmacyHeads
-                .Include(x => x.Medicines)
-                .Include(x => x.Pharmacies)
-                .OrderBy(x => x.Name)
-                .ToListAsync();
-            return PHeads;
-        }
-        //POST
-        public void RemoveClaimRequest(RequestPharmacyHead request)
-        {
-            var req = _context.PHRequests.Select(x => new RequestPharmacyHead { Head = x.Head, Pharmacy = x.Pharmacy, Id = x.Id})
-                .Where(x => x.Head.Email.Equals(request.Head.Email)).FirstOrDefault();
-            _context.PHRequests.Remove(req);
-            _context.SaveChanges();
-        }
-    }
-}
Index: rmatikoData/FarmatikoRepo/PHRepo.cs
===================================================================
--- FarmatikoData/FarmatikoRepo/PHRepo.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,168 +1,0 @@
-﻿using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using Microsoft.EntityFrameworkCore;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepo
-{
-    public class PHRepo : IPHRepo
-    {
-        private readonly FarmatikoDataContext _context;
-        public PHRepo(FarmatikoDataContext context)
-        {
-            _context = context;
-        }
-        //GET
-        public async Task<PharmacyHead> GetPharmacyHeadByIdAsync(int id)
-        {
-            var Phead = await _context.PharmacyHeads.Where(x => x.Id == id).FirstOrDefaultAsync();
-            return Phead;
-        }
-
-        public async Task<IEnumerable<PharmacyHead>> GetPharmacyHeadInfo()
-        {
-            var PHeadInfo = await _context.PharmacyHeads.Take(10)
-                .Where(x => x.DeletedOn == null)
-                .Select(x => new PharmacyHead
-                {
-                    Id = x.Id,
-                    Name = x.Name,
-                    Email = x.Email,
-                    Password = x.Password,
-                    Pharmacies = x.Pharmacies,
-                    Medicines = x.Medicines
-
-                }).ToListAsync();
-            return PHeadInfo;
-        }
-        //POST
-        public async Task UpdatePharmacyHead(PharmacyHead pharmacyHead)
-        {
-            var user = await _context.Users.Where(x => x.Email == pharmacyHead.Email).FirstOrDefaultAsync();
-            var EditedPHead = await _context.PharmacyHeads.Where(x => x.Email.Equals(pharmacyHead.Email)).FirstOrDefaultAsync();
-
-            /*if (!EditedPHead.Email.Equals(pharmacyHead.Email) && !user.Email.Equals(pharmacyHead.Email))
-            {
-                EditedPHead.Email = pharmacyHead.Email;
-                user.Email = pharmacyHead.Email;
-            }*/
-
-            if (!EditedPHead.Name.Equals(pharmacyHead.Name) || !user.Name.Equals(pharmacyHead.Name))
-            {
-                EditedPHead.Name = pharmacyHead.Name;
-                user.Name = pharmacyHead.Name;
-            }
-
-            if (!EditedPHead.Password.Equals(pharmacyHead.Password) || !user.Password.Equals(pharmacyHead.Password))
-            {
-                EditedPHead.Password = pharmacyHead.Password;
-                user.Password = pharmacyHead.Password;
-            }
-            foreach(var pharmacy in pharmacyHead.Pharmacies)
-            {
-                if (!EditedPHead.Pharmacies.Contains(pharmacy))
-                {
-                    pharmacy.PheadId = EditedPHead.Id;
-                    pharmacy.PharmacyHead = EditedPHead;
-                    EditedPHead.Pharmacies.Add(pharmacy);
-                }
-            }
-            _context.Entry(EditedPHead).State = EntityState.Modified;
-            
-            _context.SaveChanges();
-        }
-        public async Task ClaimPharmacy(RequestPharmacyHead pharmacy)
-        {
-            var phead = _context.PharmacyHeads.Where(x => x.Email.Equals(pharmacy.Head.Email)).FirstOrDefault();
-            pharmacy.Head = phead;
-            await _context.PHRequests.AddAsync(pharmacy);
-            await _context.SaveChangesAsync();
-        }
-        public async Task Add(PharmacyHead pharmacyHead)
-        {
-            await _context.PharmacyHeads.AddAsync(pharmacyHead);
-            await _context.SaveChangesAsync();
-        }
-
-        public async Task Remove(PharmacyHead phead)
-        {
-            var Phead = await _context.PharmacyHeads.Where(x => x.Id == phead.Id).FirstOrDefaultAsync();
-            Phead.DeletedOn = phead.DeletedOn;
-            await _context.SaveChangesAsync();
-        }
-
-        public async Task RemoveClaimingRequest(int id)
-        {
-            var req = await _context.PHRequests.Where(r => r.Id == id).FirstOrDefaultAsync();
-            _context.PHRequests.Remove(req);
-            await _context.SaveChangesAsync();
-        }
-
-
-        public PharmacyHead GetPharmacyHeadByUserName(string userName)
-        {
-
-                       
-            var PHead = _context.PharmacyHeads
-                .Where(x => x.Email.Equals(userName))
-                .Select(x => new PharmacyHead 
-                {
-                   Email = x.Email,
-                   Name = x.Name,
-                   Password = x.Password,
-                   Medicines = x.Medicines,
-                   Pharmacies = x.Pharmacies
-                }).FirstOrDefault();
-
-            
-
-            return PHead;
-        }
-
-        public List<PharmacyHeadMedicine> GetPharmacyHeadMedicines(string email)
-        {
-            var Phead = _context.PharmacyHeads.Where(x => x.Email.Equals(email)).FirstOrDefault();
-            var Medicines = _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine 
-            { 
-                PheadId = x.PheadId,
-                Head = x.Head,
-                MedicineId = x.MedicineId,
-                Medicine = x.Medicine
-            }).ToList();
-            if (Medicines == null || Medicines == default)
-                Medicines = null;
-            var meds = Medicines.Where(x => x.PheadId == Phead.Id).ToList();
-
-            return meds;
-        }
-
-        public IEnumerable<PharmacyHead> GetPharmacyHeads()
-        {
-            var heads = _context.PharmacyHeads.ToList();
-            return heads;
-        }
-
-        public PharmacyHead GetPharmacyHead(string head)
-        {
-            var phead = _context.PharmacyHeads.Where(x => x.Email.Equals(head)).Include(x => x.Pharmacies).FirstOrDefault();
-            return phead;
-        }
-
-        public List<Pharmacy> GetPharmacies()
-        {
-            var pharms = _context.Pharmacies.ToList();
-            return pharms;
-        }
-
-        public void DeletePHMedicine(int id, int phId, int medId)
-        {
-            var PH = _context.PharmacyHeadMedicines.Where(x => x.PheadId == phId).Single();
-            var PHMed = _context.PharmacyHeadMedicines.Where(x => x.MedicineId == medId).Single();
-            var PHID = _context.PharmacyHeadMedicines.Where(x => x.Id == id).Single();
-            _context.PharmacyHeadMedicines.Remove(PHID);
-            _context.SaveChanges();
-        }
-    }
-}
Index: rmatikoData/FarmatikoRepo/Repository.cs
===================================================================
--- FarmatikoData/FarmatikoRepo/Repository.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,379 +1,0 @@
-﻿using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepo
-{
-    public class Repository : IRepository
-    {
-        private readonly FarmatikoDataContext _context;
-        public Repository(FarmatikoDataContext context)
-        {
-            _context = context;
-        }
-        //GET
-        public async Task<IEnumerable<HealthcareWorker>> GetAllWorkers()
-        {
-            var Workers = await _context.HealthcareWorkers.Select(x => new HealthcareWorker 
-            { 
-                Id = x.Id,
-                Name = x.Name,
-                Branch = x.Branch,
-                Facility = x.Facility,
-                Title = x.Title
-            }).Take(5).ToListAsync();
-            return Workers;
-        }
-
-        public async Task<IEnumerable<HealthFacility>> GetFacilities()
-        {
-            var Facilities = await _context.HealthFacilities.Take(5).ToListAsync();
-            return Facilities;
-        }
-
-        public async Task<HealthFacility> GetFacility(int Id)
-        {
-            var Facility = await _context.HealthFacilities.FindAsync(Id);
-            return Facility;
-        }
-
-        public async Task<Medicine> GetMedicine(int Id)
-        {
-            var Medicine = await _context.Medicines.FindAsync(Id);
-            return Medicine;
-        }
-
-        public async Task<IEnumerable<Medicine>> GetMedicinesAsync()
-        {
-            var Medicines = await _context.Medicines.Select(x => new Medicine
-            {
-                Id = x.Id,
-                Name = x.Name,
-                Strength = x.Strength,
-                Form = x.Form,
-                WayOfIssuing = x.WayOfIssuing,
-                Manufacturer = x.Manufacturer,
-                Price = x.Price,
-                Packaging = x.Packaging
-
-            }).Take(5).ToListAsync();
-            return Medicines;
-        }
-
-        public async Task<Pandemic> GetPandemic()
-        {
-            var Pandemic = await _context.Pandemics.FirstOrDefaultAsync();
-            return Pandemic;
-        }
-        public async Task<List<Pharmacy>> GetPharmacies()
-        {
-            var Pharmacies = await _context.Pharmacies.Select(x => new Pharmacy 
-            {
-                Name = x.Name,
-                Location = x.Location,
-                Address = x.Address,
-                WorkAllTime = x.WorkAllTime,
-                PheadId = x.PheadId,
-                PharmacyHead = x.PharmacyHead
-            }).Take(5).ToListAsync();
-            return Pharmacies;
-        }
-
-        public async Task<Pharmacy> GetPharmacy(int id)
-        {
-            var Pharmacy = await _context.Pharmacies.FindAsync(id);
-            return Pharmacy;
-        }
-
-        public async Task<HealthcareWorker> GetWorker(int id)
-        {
-            var Worker = await _context.HealthcareWorkers.FindAsync(id);
-            return Worker;
-        }
-
-        public async Task<IEnumerable<HealthFacility>> SearchFacilities(string query)
-        {
-            var SearchQuery = await _context.HealthFacilities
-            .Where(x => x.Name.ToLower().Contains(query.ToLower())
-            || x.Municipality.ToLower().Contains(query.ToLower())
-            || x.Type.ToLower().Contains(query.ToLower())).Take(5)
-            .OrderBy(x => x.Name).ToListAsync();
-
-            return SearchQuery;
-        }
-
-        public async Task<IEnumerable<Medicine>> SearchMedicines(string query)
-        {
-            var SearchQuery = await _context.Medicines
-            .Where(x => x.Name.ToLower().Contains(query.ToLower()) 
-            || x.Form.ToLower().Contains(query.ToLower()) 
-            || x.Strength.ToLower().Contains(query.ToLower()) 
-            || x.Packaging.ToLower().Contains(query.ToLower())).Take(20)
-            .OrderBy(x => x.Name).ToListAsync();
-
-            return SearchQuery;
-        }
-
-        public async Task<IEnumerable<Pharmacy>> SearchPharmacies(string query)
-        {
-            var SearchQuery = await _context.Pharmacies
-            .Where(x => x.Name.ToLower().Contains(query.ToLower())
-            || x.PharmacyHead.Name.ToLower().Contains(query.ToLower())).Take(5)
-            .OrderBy(x => x.Name).ToListAsync();
-
-            return SearchQuery;
-        }
-
-        public async Task<IEnumerable<HealthcareWorker>> SearchWorkers(string query)
-        {
-            var SearchQuery = await _context.HealthcareWorkers.Include(x => x.Facility)
-            .Where(x => x.Name.ToLower().Contains(query.ToLower())
-            || x.Facility.Name.ToLower().Contains(query.ToLower())).Take(20)
-            .OrderBy(x => x.Name).ToListAsync();
-
-            return SearchQuery;
-        }
-        public HealthFacility GetFacilityJSON(string healthFacility)
-        {
-            var Facility = _context.HealthFacilities.Where(x => x.Name.Equals(healthFacility)).FirstOrDefault();
-            return Facility;
-        }
-
-        //POST
-
-        public async Task AddWorker(HealthcareWorker Worker)
-        {
-            await _context.HealthcareWorkers.AddAsync(Worker);
-            _context.SaveChanges();
-        }
-
-        public async Task AddFacility(HealthFacility healthFacility)
-        {
-            await _context.HealthFacilities.AddAsync(healthFacility);
-            _context.SaveChanges();
-        }
-
-        public async Task AddPharmacy(Pharmacy pharmacy)
-        {
-            pharmacy.Id = 0;
-            if (pharmacy.Id == 0)
-            {
-                var phars = _context.Pharmacies.Select(x => new Pharmacy
-                {
-                    Name = x.Name,
-                    Location = x.Location,
-                    Address = x.Address
-                }).ToList();
-                var pharms = phars.Where(x => x.Name.Equals(pharmacy.Name) && x.Location.Equals(pharmacy.Location) && x.Address.Equals(pharmacy.Address)).ToList();
-                if (pharms is null || pharms.Count() == 0)
-                {
-                    await _context.Pharmacies.AddAsync(pharmacy);
-                    _context.SaveChanges();
-                }
-                
-            }
-        }
-
-        public async Task AddPharmacyHead(PharmacyHead pharmacyHead)
-        {
-            pharmacyHead.Id = 0;
-            if (pharmacyHead.Id == 0)
-            {
-                var pheads = await _context.PharmacyHeads.Select(x => new PharmacyHead 
-                {
-                    Name = x.Name,
-                    Email = x.Email
-                }).ToListAsync();
-                var pheadusr = pheads.Where(x => x.Email.Equals(pharmacyHead.Email)).ToList();
-                if (pheadusr == null || pheadusr.Count() == 0)
-                {
-                    await _context.PharmacyHeads.AddAsync(pharmacyHead);
-                    await _context.SaveChangesAsync();
-                }
-            }
-        }
-
-        public async Task AddMedicines(Medicine medicine)
-        {
-            await _context.Medicines.AddAsync(medicine);
-            _context.SaveChanges();
-        }
-
-        public async Task AddPandemic(Pandemic pandemic)
-        {
-            var pand = await _context.Pandemics.AddAsync(pandemic);
-            _context.SaveChanges();
-        }
-
-        public async Task UpdateFacility(HealthFacility healthFacility)
-        {
-            var Facility = await _context.HealthFacilities.Where(x => x.Id == healthFacility.Id).FirstOrDefaultAsync();
-            Facility.Address = healthFacility.Address;
-            Facility.Email = healthFacility.Email;
-            Facility.Municipality = healthFacility.Municipality;
-            Facility.Name = healthFacility.Name;
-            Facility.Phone = healthFacility.Phone;
-            Facility.Type = healthFacility.Type;
-            await _context.SaveChangesAsync();
-        }
-
-        public async Task RemoveMedicine(Medicine medicine)
-        {
-            _context.Medicines.Remove(medicine);
-            await _context.SaveChangesAsync();
-        }
-
-        public async Task UpdatePandemic(Pandemic pandemic)
-        {
-            var Pandemic = await _context.Pandemics.Where(x => x.Id == pandemic.Id).FirstOrDefaultAsync();
-            Pandemic.ActiveGlobal = pandemic.ActiveGlobal;
-            Pandemic.ActiveMK = pandemic.ActiveMK;
-            Pandemic.DeathsGlobal = pandemic.DeathsGlobal;
-            Pandemic.DeathsMK = pandemic.DeathsMK;
-            Pandemic.Name = pandemic.Name;
-            Pandemic.NewMK = pandemic.NewMK;
-            Pandemic.TotalGlobal = pandemic.TotalGlobal;
-            Pandemic.TotalMK = pandemic.TotalMK;
-            await _context.SaveChangesAsync();
-        }
-
-        public async Task RemovePharmacy(Pharmacy pharmacy)
-        {
-            _context.Pharmacies.Remove(pharmacy);
-            await _context.SaveChangesAsync();
-        }
-        //not impl
-        public Task UpdateWorker(HealthcareWorker worker)
-        {
-            throw new System.NotImplementedException();
-        }
-
-        public async Task UpadatePharmacy(Pharmacy pharmacy)
-        {
-            var Pharmacy = await _context.Pharmacies.Where(x => x.Id == pharmacy.Id).FirstOrDefaultAsync();
-            Pharmacy.Name = pharmacy.Name;
-            Pharmacy.Location = pharmacy.Location;
-            Pharmacy.WorkAllTime = pharmacy.WorkAllTime;
-            Pharmacy.Address = pharmacy.Address;
-            await _context.SaveChangesAsync();
-        }
-        //not implemented, not needed 
-        public Task UpdateMedicine(Medicine medicine)
-        {
-            throw new NotImplementedException();
-        }
-
-        public async Task RemovePharmacyHead(int Id)
-        {
-            var PHead = await _context.PharmacyHeads.Where(x => x.Id == Id).Include(x => x.Pharmacies).Include(x => x.Medicines).FirstOrDefaultAsync();
-            var user = await _context.Users.Where(x => x.Email.Equals(PHead.Email)).FirstOrDefaultAsync();
-            var PHreqs = await _context.PHRequests.Where(x => x.Head.Id.Equals(PHead.Id)).FirstOrDefaultAsync();
-            PHead.Pharmacies.Select(x => x.PheadId = null);
-            PHead.Pharmacies.Select(x => x.PharmacyHead = null);
-            _context.PHRequests.Remove(PHreqs);
-            _context.PharmacyHeads.Remove(PHead);
-            _context.Users.Remove(user);
-            _context.SaveChanges();
-        }
-
-        public IDictionary<string, User> GetUsers()
-        {
-            var users = _context.Users.ToDictionary(x => x.Email, x => new User
-            {
-                Id = x.Id,
-                Name = x.Name,
-                Email = x.Email,
-                Password = x.Password,
-                UserRole = x.UserRole
-            });
-            
-            return users;
-        }
-
-        public User GetRole(string userName)
-        {
-            var user = _context.Users.Where(x => x.Email.Equals(userName)).FirstOrDefault();
-            return user;
-        }
-
-        public ICollection<Medicine> GetMedicines()
-        {
-            var Medicines = _context.Medicines.Select(x => new Medicine
-            {
-                Id = x.Id,
-                Name = x.Name,
-                Strength = x.Strength,
-                Form = x.Form,
-                WayOfIssuing = x.WayOfIssuing,
-                Manufacturer = x.Manufacturer,
-                Price = x.Price,
-                Packaging = x.Packaging,
-                Medicines = x.Medicines
-
-            }).ToList();
-            return Medicines; 
-        }
-
-        public ICollection<PharmacyHeadMedicine> GetPHMedicines(string email)
-        {
-            var head = _context.PharmacyHeads.Where(x => x.Email.Equals(email)).FirstOrDefault();
-            var phmeds = _context.PharmacyHeadMedicines.Where(x => x.PheadId == head.Id).Include(x => x.Medicine).ToList();
-            return phmeds;
-        }
-        
-        /*public async Task<bool> AddUser(User user)
-        {
-            if (user.Id == 0)
-            {
-                var users = await _context.Users.Select(x => new User
-                {
-                    Name = x.Name,
-                    Email = x.Email,
-                    Password = x.Password,
-                    UserRole = x.UserRole
-                }).ToListAsync();
-                var usr = users.Where(x => x.Email.Equals(user.Email)).ToList();
-                if (usr != null && usr.Count() > 0)
-                {
-                    return true;
-                }
-                else
-                {
-                    await _context.Users.AddAsync(user);
-                    await _context.SaveChangesAsync();
-                    return true;
-                }
-            }
-            return false;
-        }*/
-
-        public async Task<List<PharmacyHeadMedicine>> GetAllPHMedicines()
-        {
-            var list = await _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine
-            {
-                PheadId = x.PheadId,
-                Head = x.Head,
-                MedicineId = x.MedicineId,
-                Medicine = x.Medicine
-            }
-            ).ToListAsync();
-            return list;
-        }
-
-        public ICollection<PharmacyHeadMedicine> GetPHMedicines()
-        {
-            var meds = _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine
-            {
-                PheadId = x.PheadId,
-                Head = x.Head,
-                MedicineId = x.MedicineId,
-                Medicine = x.Medicine
-            }).ToList();
-            return meds;
-        }
-    }
-}
Index: rmatikoData/FarmatikoRepo/UpdateDataRepo.cs
===================================================================
--- FarmatikoData/FarmatikoRepo/UpdateDataRepo.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,62 +1,0 @@
-﻿using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepo
-{
-    public class UpdateDataRepo : IUpdateDataRepo
-    {
-        private readonly FarmatikoDataContext _context;
-        public UpdateDataRepo(FarmatikoDataContext context)
-        {
-            _context = context;
-        }
-        public async Task AddPharmacy(Pharmacy pharmacy)
-        {
-            pharmacy.Id = 0;
-            if (pharmacy.Id == 0)
-            {
-                var phars = _context.Pharmacies.Select(x => new Pharmacy
-                {
-                    Name = x.Name,
-                    Location = x.Location,
-                    Address = x.Address
-                }).ToList();
-                var pharms = phars.Where(x => x.Name.Equals(pharmacy.Name) && x.Location.Equals(pharmacy.Location) && x.Address.Equals(pharmacy.Address)).ToList();
-                if (pharms is null || pharms.Count() == 0)
-                {
-                    await _context.Pharmacies.AddAsync(pharmacy);
-                    _context.SaveChanges();
-                }
-
-            }
-        }
-
-        public async Task AddFacility(HealthFacility healthFacility)
-        {
-            await _context.HealthFacilities.AddAsync(healthFacility);
-            _context.SaveChanges();
-        }
-        public async Task AddWorker(HealthcareWorker Worker)
-        {
-            await _context.HealthcareWorkers.AddAsync(Worker);
-            _context.SaveChanges();
-        }
-
-        public async Task AddMedicines(Medicine medicine)
-        {
-            await _context.Medicines.AddAsync(medicine);
-            _context.SaveChanges();
-        }
-
-        public HealthFacility GetFacilityJSON(string healthFacility)
-        {
-            var Facility = _context.HealthFacilities.Where(x => x.Name.Equals(healthFacility)).FirstOrDefault();
-            return Facility;
-        }
-    }
-}
Index: rmatikoData/FarmatikoRepoInterfaces/IAdminRepo.cs
===================================================================
--- FarmatikoData/FarmatikoRepoInterfaces/IAdminRepo.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,16 +1,0 @@
-﻿using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepoInterfaces
-{
-    public interface IAdminRepo
-    {
-        Task<IEnumerable<RequestPharmacyHead>> GetClaimingRequests();
-        Task<IEnumerable<PharmacyHead>> GetPharmacyHeads();
-        void RemoveClaimRequest(RequestPharmacyHead Id);
-    }
-}
Index: rmatikoData/FarmatikoRepoInterfaces/IPHRepo.cs
===================================================================
--- FarmatikoData/FarmatikoRepoInterfaces/IPHRepo.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,26 +1,0 @@
-﻿using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepoInterfaces
-{
-    public interface IPHRepo
-    {
-        Task ClaimPharmacy(RequestPharmacyHead pharmacy);
-        Task<IEnumerable<PharmacyHead>> GetPharmacyHeadInfo();
-        Task UpdatePharmacyHead(PharmacyHead pharmacyHead);
-        Task<PharmacyHead> GetPharmacyHeadByIdAsync(int id);
-        Task Add(PharmacyHead pharmacyHead);
-        Task Remove(PharmacyHead phead);
-        Task RemoveClaimingRequest(int id);
-        PharmacyHead GetPharmacyHeadByUserName(string userName);
-        List<PharmacyHeadMedicine> GetPharmacyHeadMedicines(string email);
-        IEnumerable<PharmacyHead> GetPharmacyHeads();
-        PharmacyHead GetPharmacyHead(string head);
-        List<Pharmacy> GetPharmacies();
-        void DeletePHMedicine(int id, int phId, int medId);
-    }
-}
Index: rmatikoData/FarmatikoRepoInterfaces/IRepository.cs
===================================================================
--- FarmatikoData/FarmatikoRepoInterfaces/IRepository.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,51 +1,0 @@
-﻿using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepoInterfaces
-{
-    public interface IRepository
-    {
-        //GET
-        Task<IEnumerable<HealthcareWorker>> GetAllWorkers();
-        Task<IEnumerable<HealthFacility>> GetFacilities();
-        Task<HealthFacility> GetFacility(int Id);
-        Task<Medicine> GetMedicine(int Id);
-        Task<IEnumerable<Medicine>> GetMedicinesAsync();
-        ICollection<Medicine> GetMedicines();
-        Task<Pandemic> GetPandemic();
-        Task<List<PharmacyHeadMedicine>> GetAllPHMedicines();
-        Task<List<Pharmacy>> GetPharmacies();
-        Task<Pharmacy> GetPharmacy(int id);
-        Task<HealthcareWorker> GetWorker(int id);
-        Task<IEnumerable<HealthFacility>> SearchFacilities(string query);
-        Task<IEnumerable<Medicine>> SearchMedicines(string query);
-        Task<IEnumerable<Pharmacy>> SearchPharmacies(string query);
-        Task<IEnumerable<HealthcareWorker>> SearchWorkers(string query);
-        HealthFacility GetFacilityJSON(string healthFacility);
-        IDictionary<string, User> GetUsers();
-
-        //POST
-        Task AddWorker(HealthcareWorker Worker);
-        Task AddFacility(HealthFacility healthFacility);
-        Task AddPharmacy(Pharmacy pharmacy);
-        Task AddPharmacyHead(PharmacyHead pharmacyHead);
-        Task AddMedicines(Medicine medicine);
-        Task AddPandemic(Pandemic pandemic);
-        Task UpdateFacility(HealthFacility healthFacility);
-        Task RemoveMedicine(Medicine medicine);
-        Task UpdatePandemic(Pandemic pandemic);
-        Task RemovePharmacy(Pharmacy pharmacy);
-        Task UpdateWorker(HealthcareWorker worker);
-        Task UpadatePharmacy(Pharmacy pharmacy);
-        Task UpdateMedicine(Medicine medicine);
-        Task RemovePharmacyHead(int Id);
-        User GetRole(string userName);
-        ICollection<PharmacyHeadMedicine> GetPHMedicines(string email);
-        ICollection<PharmacyHeadMedicine> GetPHMedicines();
-        //Task<bool> AddUser(User user);
-    }
-}
Index: rmatikoData/FarmatikoRepoInterfaces/IUpdateDataRepo.cs
===================================================================
--- FarmatikoData/FarmatikoRepoInterfaces/IUpdateDataRepo.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,14 +1,0 @@
-﻿using FarmatikoData.Models;
-using System.Threading.Tasks;
-
-namespace FarmatikoData.FarmatikoRepoInterfaces
-{
-    public interface IUpdateDataRepo
-    {
-        Task AddFacility(HealthFacility healthFacility);
-        Task AddMedicines(Medicine medicine);
-        Task AddPharmacy(Pharmacy pharmacy);
-        Task AddWorker(HealthcareWorker Worker);
-        HealthFacility GetFacilityJSON(string healthFacility);
-    }
-}
Index: rmatikoData/Migrations/20210208041424_Initial-Create.Designer.cs
===================================================================
--- FarmatikoData/Migrations/20210208041424_Initial-Create.Designer.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,400 +1,0 @@
-﻿// <auto-generated />
-using System;
-using FarmatikoData;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace FarmatikoData.Migrations
-{
-    [DbContext(typeof(FarmatikoDataContext))]
-    [Migration("20210208041424_Initial-Create")]
-    partial class InitialCreate
-    {
-        protected override void BuildTargetModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)
-                .HasAnnotation("ProductVersion", "3.1.10")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            modelBuilder.Entity("FarmatikoData.Models.HealthFacility", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<string>("Address")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Email")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Municipality")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Phone")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("HealthFacilities");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.HealthcareWorker", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<string>("Branch")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int>("FacilityId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("FacilityId");
-
-                    b.ToTable("HealthcareWorkers");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Medicine", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Form")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Manufacturer")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Packaging")
-                        .HasColumnType("text");
-
-                    b.Property<float>("Price")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Strength")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("WayOfIssuing")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Medicines");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Pandemic", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<long>("ActiveGlobal")
-                        .HasColumnType("bigint");
-
-                    b.Property<int>("ActiveMK")
-                        .HasColumnType("integer");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<long>("DeathsGlobal")
-                        .HasColumnType("bigint");
-
-                    b.Property<int>("DeathsMK")
-                        .HasColumnType("integer");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int>("NewMK")
-                        .HasColumnType("integer");
-
-                    b.Property<long>("TotalGlobal")
-                        .HasColumnType("bigint");
-
-                    b.Property<int>("TotalMK")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Pandemics");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Pharmacy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<string>("Address")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Location")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("PheadId")
-                        .HasColumnType("integer");
-
-                    b.Property<bool>("WorkAllTime")
-                        .HasColumnType("boolean");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("PheadId");
-
-                    b.ToTable("Pharmacies");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHead", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Email")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Password")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int>("UserID")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserID");
-
-                    b.ToTable("PharmacyHeads");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHeadMedicine", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int?>("HeadId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("MedicineId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("PheadId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("HeadId");
-
-                    b.HasIndex("MedicineId");
-
-                    b.ToTable("PharmacyHeadMedicines");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.RequestPharmacyHead", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int?>("HeadId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("PharmacyId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("HeadId");
-
-                    b.HasIndex("PharmacyId");
-
-                    b.ToTable("PHRequests");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.User", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Email")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Password")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int>("UserRole")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.HealthcareWorker", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.HealthFacility", "Facility")
-                        .WithMany()
-                        .HasForeignKey("FacilityId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Pharmacy", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.PharmacyHead", "PharmacyHead")
-                        .WithMany("Pharmacies")
-                        .HasForeignKey("PheadId");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHead", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserID")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHeadMedicine", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.PharmacyHead", "Head")
-                        .WithMany("Medicines")
-                        .HasForeignKey("HeadId");
-
-                    b.HasOne("FarmatikoData.Models.Medicine", "Medicine")
-                        .WithMany("Medicines")
-                        .HasForeignKey("MedicineId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.RequestPharmacyHead", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.PharmacyHead", "Head")
-                        .WithMany()
-                        .HasForeignKey("HeadId");
-
-                    b.HasOne("FarmatikoData.Models.Pharmacy", "Pharmacy")
-                        .WithMany()
-                        .HasForeignKey("PharmacyId");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: rmatikoData/Migrations/20210208041424_Initial-Create.cs
===================================================================
--- FarmatikoData/Migrations/20210208041424_Initial-Create.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,288 +1,0 @@
-﻿using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace FarmatikoData.Migrations
-{
-    public partial class InitialCreate : Migration
-    {
-        protected override void Up(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.CreateTable(
-                name: "HealthFacilities",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql:"now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Name = table.Column<string>(nullable: false),
-                    Municipality = table.Column<string>(nullable: false),
-                    Address = table.Column<string>(nullable: false),
-                    Type = table.Column<string>(nullable: false),
-                    Email = table.Column<string>(nullable: true),
-                    Phone = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_HealthFacilities", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Medicines",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Name = table.Column<string>(nullable: false),
-                    Strength = table.Column<string>(nullable: false),
-                    Form = table.Column<string>(nullable: true),
-                    WayOfIssuing = table.Column<string>(nullable: false),
-                    Manufacturer = table.Column<string>(nullable: false),
-                    Price = table.Column<float>(nullable: false),
-                    Packaging = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Medicines", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Pandemics",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Name = table.Column<string>(nullable: false),
-                    TotalMK = table.Column<int>(nullable: false),
-                    ActiveMK = table.Column<int>(nullable: false),
-                    DeathsMK = table.Column<int>(nullable: false),
-                    NewMK = table.Column<int>(nullable: false),
-                    TotalGlobal = table.Column<long>(nullable: false),
-                    DeathsGlobal = table.Column<long>(nullable: false),
-                    ActiveGlobal = table.Column<long>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Pandemics", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Users",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Name = table.Column<string>(nullable: false),
-                    Email = table.Column<string>(nullable: false),
-                    Password = table.Column<string>(nullable: false),
-                    UserRole = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Users", x => x.Id);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "HealthcareWorkers",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Name = table.Column<string>(nullable: false),
-                    Branch = table.Column<string>(nullable: false),
-                    FacilityId = table.Column<int>(nullable: false),
-                    Title = table.Column<string>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_HealthcareWorkers", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_HealthcareWorkers_HealthFacilities_FacilityId",
-                        column: x => x.FacilityId,
-                        principalTable: "HealthFacilities",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "PharmacyHeads",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Email = table.Column<string>(nullable: false),
-                    Name = table.Column<string>(nullable: false),
-                    Password = table.Column<string>(nullable: false),
-                    UserID = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_PharmacyHeads", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_PharmacyHeads_Users_UserID",
-                        column: x => x.UserID,
-                        principalTable: "Users",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "Pharmacies",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    Name = table.Column<string>(nullable: false),
-                    Location = table.Column<string>(nullable: false),
-                    Address = table.Column<string>(nullable: false),
-                    WorkAllTime = table.Column<bool>(nullable: false),
-                    PheadId = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_Pharmacies", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_Pharmacies_PharmacyHeads_PheadId",
-                        column: x => x.PheadId,
-                        principalTable: "PharmacyHeads",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "PharmacyHeadMedicines",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    PheadId = table.Column<int>(nullable: false),
-                    HeadId = table.Column<int>(nullable: true),
-                    MedicineId = table.Column<int>(nullable: false)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_PharmacyHeadMedicines", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_PharmacyHeadMedicines_PharmacyHeads_HeadId",
-                        column: x => x.HeadId,
-                        principalTable: "PharmacyHeads",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_PharmacyHeadMedicines_Medicines_MedicineId",
-                        column: x => x.MedicineId,
-                        principalTable: "Medicines",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Cascade);
-                });
-
-            migrationBuilder.CreateTable(
-                name: "PHRequests",
-                columns: table => new
-                {
-                    Id = table.Column<int>(nullable: false)
-                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
-                    CreatedOn = table.Column<DateTime>(nullable: false, defaultValueSql: "now()"),
-                    DeletedOn = table.Column<DateTime>(nullable: true),
-                    HeadId = table.Column<int>(nullable: true),
-                    PharmacyId = table.Column<int>(nullable: true)
-                },
-                constraints: table =>
-                {
-                    table.PrimaryKey("PK_PHRequests", x => x.Id);
-                    table.ForeignKey(
-                        name: "FK_PHRequests_PharmacyHeads_HeadId",
-                        column: x => x.HeadId,
-                        principalTable: "PharmacyHeads",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                    table.ForeignKey(
-                        name: "FK_PHRequests_Pharmacies_PharmacyId",
-                        column: x => x.PharmacyId,
-                        principalTable: "Pharmacies",
-                        principalColumn: "Id",
-                        onDelete: ReferentialAction.Restrict);
-                });
-
-            migrationBuilder.CreateIndex(
-                name: "IX_HealthcareWorkers_FacilityId",
-                table: "HealthcareWorkers",
-                column: "FacilityId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_Pharmacies_PheadId",
-                table: "Pharmacies",
-                column: "PheadId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PharmacyHeadMedicines_HeadId",
-                table: "PharmacyHeadMedicines",
-                column: "HeadId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PharmacyHeadMedicines_MedicineId",
-                table: "PharmacyHeadMedicines",
-                column: "MedicineId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PharmacyHeads_UserID",
-                table: "PharmacyHeads",
-                column: "UserID");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PHRequests_HeadId",
-                table: "PHRequests",
-                column: "HeadId");
-
-            migrationBuilder.CreateIndex(
-                name: "IX_PHRequests_PharmacyId",
-                table: "PHRequests",
-                column: "PharmacyId");
-        }
-
-        protected override void Down(MigrationBuilder migrationBuilder)
-        {
-            migrationBuilder.DropTable(
-                name: "HealthcareWorkers");
-
-            migrationBuilder.DropTable(
-                name: "Pandemics");
-
-            migrationBuilder.DropTable(
-                name: "PharmacyHeadMedicines");
-
-            migrationBuilder.DropTable(
-                name: "PHRequests");
-
-            migrationBuilder.DropTable(
-                name: "HealthFacilities");
-
-            migrationBuilder.DropTable(
-                name: "Medicines");
-
-            migrationBuilder.DropTable(
-                name: "Pharmacies");
-
-            migrationBuilder.DropTable(
-                name: "PharmacyHeads");
-
-            migrationBuilder.DropTable(
-                name: "Users");
-        }
-    }
-}
Index: rmatikoData/Migrations/FarmatikoDataContextModelSnapshot.cs
===================================================================
--- FarmatikoData/Migrations/FarmatikoDataContextModelSnapshot.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,398 +1,0 @@
-﻿// <auto-generated />
-using System;
-using FarmatikoData;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-namespace FarmatikoData.Migrations
-{
-    [DbContext(typeof(FarmatikoDataContext))]
-    partial class FarmatikoDataContextModelSnapshot : ModelSnapshot
-    {
-        protected override void BuildModel(ModelBuilder modelBuilder)
-        {
-#pragma warning disable 612, 618
-            modelBuilder
-                .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)
-                .HasAnnotation("ProductVersion", "3.1.10")
-                .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
-            modelBuilder.Entity("FarmatikoData.Models.HealthFacility", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<string>("Address")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Email")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Municipality")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Phone")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Type")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("HealthFacilities");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.HealthcareWorker", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<string>("Branch")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int>("FacilityId")
-                        .HasColumnType("integer");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Title")
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("FacilityId");
-
-                    b.ToTable("HealthcareWorkers");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Medicine", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Form")
-                        .HasColumnType("text");
-
-                    b.Property<string>("Manufacturer")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Packaging")
-                        .HasColumnType("text");
-
-                    b.Property<float>("Price")
-                        .HasColumnType("real");
-
-                    b.Property<string>("Strength")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("WayOfIssuing")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Medicines");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Pandemic", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<long>("ActiveGlobal")
-                        .HasColumnType("bigint");
-
-                    b.Property<int>("ActiveMK")
-                        .HasColumnType("integer");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<long>("DeathsGlobal")
-                        .HasColumnType("bigint");
-
-                    b.Property<int>("DeathsMK")
-                        .HasColumnType("integer");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int>("NewMK")
-                        .HasColumnType("integer");
-
-                    b.Property<long>("TotalGlobal")
-                        .HasColumnType("bigint");
-
-                    b.Property<int>("TotalMK")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Pandemics");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Pharmacy", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<string>("Address")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Location")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int?>("PheadId")
-                        .HasColumnType("integer");
-
-                    b.Property<bool>("WorkAllTime")
-                        .HasColumnType("boolean");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("PheadId");
-
-                    b.ToTable("Pharmacies");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHead", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Email")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Password")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int>("UserID")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("UserID");
-
-                    b.ToTable("PharmacyHeads");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHeadMedicine", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int?>("HeadId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("MedicineId")
-                        .HasColumnType("integer");
-
-                    b.Property<int>("PheadId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("HeadId");
-
-                    b.HasIndex("MedicineId");
-
-                    b.ToTable("PharmacyHeadMedicines");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.RequestPharmacyHead", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<int?>("HeadId")
-                        .HasColumnType("integer");
-
-                    b.Property<int?>("PharmacyId")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("HeadId");
-
-                    b.HasIndex("PharmacyId");
-
-                    b.ToTable("PHRequests");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.User", b =>
-                {
-                    b.Property<int>("Id")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("integer")
-                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn);
-
-                    b.Property<DateTime>("CreatedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<DateTime?>("DeletedOn")
-                        .HasColumnType("timestamp without time zone");
-
-                    b.Property<string>("Email")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Name")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<string>("Password")
-                        .IsRequired()
-                        .HasColumnType("text");
-
-                    b.Property<int>("UserRole")
-                        .HasColumnType("integer");
-
-                    b.HasKey("Id");
-
-                    b.ToTable("Users");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.HealthcareWorker", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.HealthFacility", "Facility")
-                        .WithMany()
-                        .HasForeignKey("FacilityId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.Pharmacy", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.PharmacyHead", "PharmacyHead")
-                        .WithMany("Pharmacies")
-                        .HasForeignKey("PheadId");
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHead", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserID")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.PharmacyHeadMedicine", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.PharmacyHead", "Head")
-                        .WithMany("Medicines")
-                        .HasForeignKey("HeadId");
-
-                    b.HasOne("FarmatikoData.Models.Medicine", "Medicine")
-                        .WithMany("Medicines")
-                        .HasForeignKey("MedicineId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-                });
-
-            modelBuilder.Entity("FarmatikoData.Models.RequestPharmacyHead", b =>
-                {
-                    b.HasOne("FarmatikoData.Models.PharmacyHead", "Head")
-                        .WithMany()
-                        .HasForeignKey("HeadId");
-
-                    b.HasOne("FarmatikoData.Models.Pharmacy", "Pharmacy")
-                        .WithMany()
-                        .HasForeignKey("PharmacyId");
-                });
-#pragma warning restore 612, 618
-        }
-    }
-}
Index: rmatikoData/Models/HealthFacility.cs
===================================================================
--- FarmatikoData/Models/HealthFacility.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,34 +1,0 @@
-﻿using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-using FarmatikoData.Base;
-using Microsoft.EntityFrameworkCore;
-
-namespace FarmatikoData.Models
-{
-    public class HealthFacility : BaseEntity
-    {
-        public HealthFacility() { }
-        [Required]
-        public string Name { get; set; }
-        [Required]
-        public string Municipality { get; set; }
-        [Required]
-        public string Address { get; set; }
-        [Required]
-        public string Type { get; set; }
-        public string Email { get; set; }
-        public string Phone { get; set; }
-        public HealthFacility(string Name, string Municipality, string Address, string Type, string Email, string Phone)
-        {
-            this.Name = Name;
-            this.Municipality = Municipality;
-            this.Address = Address;
-            this.Type = Type;
-            this.Email = Email;
-            this.Phone = Phone;
-        }
-    }
-}
Index: rmatikoData/Models/HealthcareWorker.cs
===================================================================
--- FarmatikoData/Models/HealthcareWorker.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-using FarmatikoData.Base;
-using Microsoft.EntityFrameworkCore;
-
-namespace FarmatikoData.Models
-{
-    public class HealthcareWorker : BaseEntity
-    {
-        public HealthcareWorker() { }
-        [Required]
-        public string Name { get; set; }
-        [Required]
-        public string Branch { get; set; }
-        [Required]
-        public HealthFacility Facility { get; set; }
-        public string Title { get; set; }
-        public HealthcareWorker(string Name, string Branch, HealthFacility Facility, string Title)
-        {
-            this.Name = Name;
-            this.Branch = Branch;
-            this.Facility = Facility;
-            this.Title = Title;
-        }
-    }
-}
Index: rmatikoData/Models/Medicine.cs
===================================================================
--- FarmatikoData/Models/Medicine.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿using FarmatikoData.Base;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Diagnostics.CodeAnalysis;
-using System.Text.Json.Serialization;
-
-namespace FarmatikoData.Models
-{
-    public class Medicine : BaseEntity
-    {
-        public Medicine() { }
-        [Required]
-        public string Name { get; set; }
-        [Required]
-        public string Strength { get; set; }
-        public string Form { get; set; }
-        [Required]
-        public string WayOfIssuing { get; set; }
-        [Required]
-        public string Manufacturer { get; set; }
-        public float Price { get; set; }
-        public string Packaging { get; set; }
-        //[JsonPropertyName("PHMedicineList")]
-        public virtual ICollection<PharmacyHeadMedicine> Medicines { get; set; }
-        public Medicine(string Name, string Strength, string Form, string WayOfIssuing, string Manufacturer, float Price, string Packaging)
-        {
-            this.Name = Name;
-            this.Strength = Strength;
-            this.Form = Form;
-            this.WayOfIssuing = WayOfIssuing;
-            this.Manufacturer = Manufacturer;
-            this.Price = Price;
-            this.Packaging = Packaging;
-        }
-    }
-}
Index: rmatikoData/Models/Pandemic.cs
===================================================================
--- FarmatikoData/Models/Pandemic.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,42 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-using FarmatikoData.Base;
-using Microsoft.EntityFrameworkCore;
-
-namespace FarmatikoData.Models
-{
-    public class Pandemic : BaseEntity
-    {
-        public Pandemic() { }
-        [Required]
-        public string Name { get; set; }
-        [Required]
-        public int TotalMK { get; set; }
-        [Required]
-        public int ActiveMK { get; set; }
-        [Required]
-        public int DeathsMK { get; set; }
-        [Required]
-        public int NewMK { get; set; }
-        [Required]
-        public long TotalGlobal { get; set; }
-        [Required]
-        public long DeathsGlobal { get; set; }
-        [Required]
-        public long ActiveGlobal { get; set; }
-        public Pandemic(string Name, int TotalMK, int ActiveMK,
-            int DeathsMK, int NewMK, long TotalGlobal, long DeathsGlobal, long ActiveGlobal)
-        {
-            this.Name = Name;
-            this.TotalMK = TotalMK;
-            this.ActiveMK = ActiveMK;
-            this.DeathsMK = DeathsMK;
-            this.NewMK = NewMK;
-            this.TotalGlobal = TotalGlobal;
-            this.DeathsGlobal = DeathsGlobal;
-            this.ActiveGlobal = ActiveGlobal;
-        }
-    }
-}
Index: rmatikoData/Models/Pharmacy.cs
===================================================================
--- FarmatikoData/Models/Pharmacy.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,36 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-using FarmatikoData.Base;
-using Microsoft.EntityFrameworkCore;
-using Newtonsoft.Json;
-
-namespace FarmatikoData.Models
-{
-    public class Pharmacy : BaseEntity
-    {
-        public Pharmacy() { }
-        [Required]
-        [JsonProperty("name")]
-        public string Name { get; set; }
-        [Required]
-        [JsonProperty("location")]
-        public string Location { get; set; }
-        [Required]
-        [JsonProperty("address")]
-        public string Address { get; set; }
-        [Required]
-        [JsonProperty("workAllTime")]
-        public bool WorkAllTime { get; set; }
-        public Pharmacy(string Name, string Location, string Address, bool WorkAllTime)
-        {
-            this.Name = Name;
-            this.Location = Location;
-            this.Address = Address;
-            this.WorkAllTime = WorkAllTime;
-        }
-        public int? PheadId { get; set; }
-        public PharmacyHead PharmacyHead { get; set; }
-    }
-}
Index: rmatikoData/Models/PharmacyHead.cs
===================================================================
--- FarmatikoData/Models/PharmacyHead.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,32 +1,0 @@
-﻿using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text.Json.Serialization;
-using FarmatikoData.Base;
-using Newtonsoft.Json;
-
-namespace FarmatikoData.Models
-{
-    public class PharmacyHead : BaseEntity
-    {
-        public PharmacyHead()
-        {
-        }
-        [Required]
-        [JsonProperty("Email")]
-        public string Email { get; set; }
-        [Required]
-        [JsonProperty("Name")]
-        public string Name { get; set; }
-        [Required]
-        [JsonProperty("Passwd")]
-        public string Password { get; set; }
-        [JsonProperty("PharmacyList")]
-        public virtual List<Pharmacy> Pharmacies { get; set; }
-        public virtual List<PharmacyHeadMedicine> Medicines { get; set; }
-
-        public int UserID { get; set; }
-        public User User { get; set; }
-
-
-    }
-}
Index: rmatikoData/Models/PharmacyHeadMedicine.cs
===================================================================
--- FarmatikoData/Models/PharmacyHeadMedicine.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,20 +1,0 @@
-﻿using FarmatikoData.Base;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Text.Json.Serialization;
-
-namespace FarmatikoData.Models
-{
-    public class PharmacyHeadMedicine : BaseEntity
-    {
-        //[JsonPropertyName("PheadId")]
-        public int PheadId { get; set; }
-        //[JsonPropertyName("Head")]
-        public PharmacyHead Head { get; set; }
-        //[JsonPropertyName("MedicineId")]
-        public int MedicineId { get; set; }
-        //[JsonPropertyName("Medicine")]
-        public Medicine Medicine { get; set; }
-    }
-}
Index: rmatikoData/Models/RequestPharmacyHead.cs
===================================================================
--- FarmatikoData/Models/RequestPharmacyHead.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,24 +1,0 @@
-﻿using FarmatikoData.Base;
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-using System.Text.Json.Serialization;
-
-namespace FarmatikoData.Models
-{
-    public class RequestPharmacyHead : BaseEntity
-    {
-        public RequestPharmacyHead()
-        {
-        }
-        
-        [JsonProperty("PharmacyHead")]
-        public PharmacyHead Head { get; set; }
-        
-        [JsonProperty("Pharmacy")]
-        public Pharmacy Pharmacy { get; set; }
-
-    }
-}
Index: rmatikoData/Models/User.cs
===================================================================
--- FarmatikoData/Models/User.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,24 +1,0 @@
-﻿using FarmatikoData.Base;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-
-namespace FarmatikoData.Models
-{
-    public class User : BaseEntity
-    {
-        public enum Role
-        {
-            Admin,
-            PharmacyHead
-        }
-        [Required]
-        public string Name { get; set; }
-        [Required]
-        public string Email { get; set; }
-        [Required]
-        public string Password { get; set; }
-        public Role UserRole { get; set; }
-    }
-}
Index: FarmatikoData/obj/Debug/netcoreapp3.1/FarmatikoData.AssemblyInfo.cs
===================================================================
--- FarmatikoData/obj/Debug/netcoreapp3.1/FarmatikoData.AssemblyInfo.cs	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/Debug/netcoreapp3.1/FarmatikoData.AssemblyInfo.cs	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("FarmatikoData")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("FarmatikoData")]
+[assembly: System.Reflection.AssemblyTitleAttribute("FarmatikoData")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// Generated by the MSBuild WriteCodeFragment class.
+
Index: FarmatikoData/obj/Debug/netcoreapp3.1/FarmatikoData.AssemblyInfoInputs.cache
===================================================================
--- FarmatikoData/obj/Debug/netcoreapp3.1/FarmatikoData.AssemblyInfoInputs.cache	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/Debug/netcoreapp3.1/FarmatikoData.AssemblyInfoInputs.cache	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,1 @@
+db1f185032949dc7a2493270926cd9618cc1d16c
Index: FarmatikoData/obj/FarmatikoData.csproj.nuget.dgspec.json
===================================================================
--- FarmatikoData/obj/FarmatikoData.csproj.nuget.dgspec.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/FarmatikoData.csproj.nuget.dgspec.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,63 @@
+{
+  "format": 1,
+  "restore": {
+    "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj": {}
+  },
+  "projects": {
+    "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj": {
+      "version": "1.0.0",
+      "restore": {
+        "projectUniqueName": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj",
+        "projectName": "FarmatikoData",
+        "projectPath": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj",
+        "packagesPath": "C:\\Users\\dslez\\.nuget\\packages\\",
+        "outputPath": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\obj\\",
+        "projectStyle": "PackageReference",
+        "fallbackFolders": [
+          "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
+        ],
+        "configFilePaths": [
+          "C:\\Users\\dslez\\AppData\\Roaming\\NuGet\\NuGet.Config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+        ],
+        "originalTargetFrameworks": [
+          "netcoreapp3.1"
+        ],
+        "sources": {
+          "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+          "https://api.nuget.org/v3/index.json": {}
+        },
+        "frameworks": {
+          "netcoreapp3.1": {
+            "projectReferences": {}
+          }
+        },
+        "warningProperties": {
+          "warnAsError": [
+            "NU1605"
+          ]
+        }
+      },
+      "frameworks": {
+        "netcoreapp3.1": {
+          "imports": [
+            "net461",
+            "net462",
+            "net47",
+            "net471",
+            "net472",
+            "net48"
+          ],
+          "assetTargetFallback": true,
+          "warn": true,
+          "frameworkReferences": {
+            "Microsoft.NETCore.App": {
+              "privateAssets": "all"
+            }
+          },
+          "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
+        }
+      }
+    }
+  }
+}
Index: FarmatikoData/obj/FarmatikoData.csproj.nuget.g.props
===================================================================
--- FarmatikoData/obj/FarmatikoData.csproj.nuget.g.props	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/FarmatikoData.csproj.nuget.g.props	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,15 @@
+﻿<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\dslez\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder</NuGetPackageFolders>
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.5.0</NuGetToolVersion>
+  </PropertyGroup>
+  <PropertyGroup>
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+  </PropertyGroup>
+</Project>
Index: FarmatikoData/obj/FarmatikoData.csproj.nuget.g.targets
===================================================================
--- FarmatikoData/obj/FarmatikoData.csproj.nuget.g.targets	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/FarmatikoData.csproj.nuget.g.targets	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+  </PropertyGroup>
+</Project>
Index: FarmatikoData/obj/project.assets.json
===================================================================
--- FarmatikoData/obj/project.assets.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/project.assets.json	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,69 @@
+{
+  "version": 3,
+  "targets": {
+    ".NETCoreApp,Version=v3.1": {}
+  },
+  "libraries": {},
+  "projectFileDependencyGroups": {
+    ".NETCoreApp,Version=v3.1": []
+  },
+  "packageFolders": {
+    "C:\\Users\\dslez\\.nuget\\packages\\": {},
+    "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
+  },
+  "project": {
+    "version": "1.0.0",
+    "restore": {
+      "projectUniqueName": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj",
+      "projectName": "FarmatikoData",
+      "projectPath": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj",
+      "packagesPath": "C:\\Users\\dslez\\.nuget\\packages\\",
+      "outputPath": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\obj\\",
+      "projectStyle": "PackageReference",
+      "fallbackFolders": [
+        "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
+      ],
+      "configFilePaths": [
+        "C:\\Users\\dslez\\AppData\\Roaming\\NuGet\\NuGet.Config",
+        "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+      ],
+      "originalTargetFrameworks": [
+        "netcoreapp3.1"
+      ],
+      "sources": {
+        "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+        "https://api.nuget.org/v3/index.json": {}
+      },
+      "frameworks": {
+        "netcoreapp3.1": {
+          "projectReferences": {}
+        }
+      },
+      "warningProperties": {
+        "warnAsError": [
+          "NU1605"
+        ]
+      }
+    },
+    "frameworks": {
+      "netcoreapp3.1": {
+        "imports": [
+          "net461",
+          "net462",
+          "net47",
+          "net471",
+          "net472",
+          "net48"
+        ],
+        "assetTargetFallback": true,
+        "warn": true,
+        "frameworkReferences": {
+          "Microsoft.NETCore.App": {
+            "privateAssets": "all"
+          }
+        },
+        "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
+      }
+    }
+  }
+}
Index: FarmatikoData/obj/project.nuget.cache
===================================================================
--- FarmatikoData/obj/project.nuget.cache	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
+++ FarmatikoData/obj/project.nuget.cache	(revision 822c59d84fd842899190245e947330c1ddd5ed44)
@@ -0,0 +1,8 @@
+{
+  "version": 2,
+  "dgSpecHash": "ZE74Esjsmk0xoNQbvsFHT4nGWQg2AsV8Xw7Ky0FanlGqUZ0CmJ+ejN2RTCGg8zk1sLauhtchw/VTRIoOY2j0XQ==",
+  "success": true,
+  "projectFilePath": "C:\\Users\\dslez\\source\\repos\\Farmatiko\\FarmatikoData\\FarmatikoData.csproj",
+  "expectedPackageFiles": [],
+  "logs": []
+}
Index: rmatikoServices/Auth/AuthService.cs
===================================================================
--- FarmatikoServices/Auth/AuthService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,69 +1,0 @@
-﻿using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using Microsoft.Extensions.Logging;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace FarmatikoServices.Auth
-{
-    public class AuthService : IAuthService
-    {
-        private readonly ILogger<AuthService> _logger;
-        private readonly IRepository _repository;
-
-        private readonly IDictionary<string, string> _users = new Dictionary<string, string>();
-        
-        // inject your database here for user validation
-        public AuthService(ILogger<AuthService> logger, IRepository repository)
-        {
-            _logger = logger;
-            _repository = repository;
-        }
-
-        public bool IsValidUserCredentials(string userName, string password)
-        {
-            _logger.LogInformation($"Validating user [{userName}]");
-            if (string.IsNullOrWhiteSpace(userName))
-            {
-                return false;
-            }
-
-            if (string.IsNullOrWhiteSpace(password))
-            {
-                return false;
-            }
-
-            return _repository.GetUsers().TryGetValue(userName, out var p) && p.Password == password;
-        }
-
-        public bool IsAnExistingUser(string userName)
-        {
-            return _repository.GetUsers().ContainsKey(userName);
-        }
-
-        public string GetUserRole(string userName)
-        {
-            if (!IsAnExistingUser(userName))
-            {
-                return string.Empty;
-            }
-
-            var user = _repository.GetUsers().Where(x => x.Value.Email == userName).FirstOrDefault().Value.UserRole;
-
-            /*if (userName == "admin@farmatiko.mk")
-            {
-                return nameof(user);
-            }*/
-            return user.ToString();
-        }
-    }
-
-    public static class UserRoles
-    {
-        public const string Admin = nameof(User.Role.Admin);
-        public const string PharmacyHead = nameof(User.Role.PharmacyHead);
-    }
-}
-
Index: rmatikoServices/Auth/IAuthService.cs
===================================================================
--- FarmatikoServices/Auth/IAuthService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,13 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace FarmatikoServices.Auth
-{
-    public interface IAuthService
-    {
-        bool IsAnExistingUser(string userName);
-        bool IsValidUserCredentials(string userName, string password);
-        string GetUserRole(string userName);
-    }
-}
Index: rmatikoServices/FarmatikoServiceInterfaces/IAdminService.cs
===================================================================
--- FarmatikoServices/FarmatikoServiceInterfaces/IAdminService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,16 +1,0 @@
-﻿using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.FarmatikoServiceInterfaces
-{
-    public interface IAdminService
-    {
-        Task<IEnumerable<PharmacyHead>> GetPharmacyHeads();
-        Task<IEnumerable<RequestPharmacyHead>> GetClaimingRequests();
-        bool RejectRequest(RequestPharmacyHead req);
-    }
-}
Index: rmatikoServices/FarmatikoServiceInterfaces/IPHService.cs
===================================================================
--- FarmatikoServices/FarmatikoServiceInterfaces/IPHService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿using FarmatikoData.DTOs;
-using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.FarmatikoServiceInterfaces
-{
-    public interface IPHService
-    {
-        Task<IEnumerable<PharmacyHead>> GetPharmacyHeadInfo();
-        Task UpdatePharmacyHead(PharmacyHeadDto pharmacyHead);
-        Task<int> Login(PharmacyHead pharmacyHead);
-        Task<bool> ClaimPharmacy(RequestPharmacyHead pharmacy);
-        Task<PharmacyHead> GetPharmacyHeadByIdAsync(int id);
-        Task<bool> Add(PharmacyHeadDto pharmacyHead);
-        Task<bool> Remove(int id);
-        Task<bool> RemoveClaimingRequest(int id);
-        PharmacyHeadDto GetPharmacyHead(string userName);
-    }
-}
Index: rmatikoServices/FarmatikoServiceInterfaces/IProcessJSONService.cs
===================================================================
--- FarmatikoServices/FarmatikoServiceInterfaces/IProcessJSONService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,16 +1,0 @@
-﻿using FarmatikoData.Models;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.FarmatikoServiceInterfaces
-{
-    public interface IProcessJSONService
-    {
-        void GetProcessedHealthFacilitiesFromJSON();
-        void GetProcessedHealthcareWorkersFromJSON();
-        void GetProcessedMedicinesFromJSON();
-        void DownloadPharmaciesExcel();
-    }
-}
Index: rmatikoServices/FarmatikoServiceInterfaces/IService.cs
===================================================================
--- FarmatikoServices/FarmatikoServiceInterfaces/IService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,39 +1,0 @@
-﻿using FarmatikoData.DTOs;
-using FarmatikoData.Models;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.FarmatikoServiceInterfaces
-{
-    public interface IService
-    {
-        Task AddFacility(HealthFacility healthFacility);
-        Task AddMedicines(Medicine medicine);
-        Task AddPandemic(Pandemic pandemic);
-        void AddPharmacy(Pharmacy pharmacy);
-        Task<bool> AddPharmacyHead(PharmacyHeadDto pharmacyHead);
-        Task AddWorker(HealthcareWorker worker);
-        Task<IEnumerable<HealthcareWorker>> GetAllWorkers();
-        Task<IEnumerable<HealthFacility>> GetFacilities();
-        Task<HealthFacility> GetFacility(int id);
-        HealthFacility GetFacilityJSON(string healthFacility);
-        Task<Medicine> GetMedicine(int id);
-        Task<List<MedicineDTO>> GetMedicines();
-        Pandemic GetPandemic();
-        Task<List<PharmacyDTO>> GetPharmacies();
-        Task<Pharmacy> GetPharmacy(int id);
-        Task<HealthcareWorker> GetWorker(int id);
-        Task RemoveMedicine(Medicine medicine);
-        Task RemovePharmacy(Pharmacy pharmacy);
-        Task RemovePharmacyHead(int Id);
-        Task<IEnumerable<HealthFacility>> SearchFacilities(string query);
-        Task<IEnumerable<MedicineDTO>> SearchMedicines(string query);
-        Task<IEnumerable<PharmacyDTO>> SearchPharmacies(string query);
-        Task<IEnumerable<HealthcareWorker>> SearchWorkers(string query);
-        Task UpdateFacility(HealthFacility healthFacilities);
-        Task UpdateMedicine(Medicine medicine);
-        Task UpdatePandemic(Pandemic pandemic);
-        Task UpdatePharmacy(Pharmacy pharmacy);
-        Task UpdateWorker(HealthcareWorker worker);
-    }
-}
Index: rmatikoServices/FarmatikoServices.csproj
===================================================================
--- FarmatikoServices/FarmatikoServices.csproj	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,22 +1,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="AngleSharp" Version="0.14.0" />
-    <PackageReference Include="EPPlus" Version="5.4.0" />
-    <PackageReference Include="GemBox.Spreadsheet" Version="47.0.1095" />
-    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
-    <PackageReference Include="Quartz.AspNetCore" Version="3.2.4" />
-    <PackageReference Include="RestSharp" Version="106.11.7" />
-    <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.8.0" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\FarmatikoData\FarmatikoData.csproj" />
-  </ItemGroup>
-
-</Project>
Index: rmatikoServices/Infrastructure/IJwtAuthManager.cs
===================================================================
--- FarmatikoServices/Infrastructure/IJwtAuthManager.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,17 +1,0 @@
-﻿using System;
-using System.Collections.Immutable;
-using System.IdentityModel.Tokens.Jwt;
-using System.Security.Claims;
-
-namespace FarmatikoServices.Infrastructure
-{
-    public interface IJwtAuthManager
-    {
-        IImmutableDictionary<string, RefreshToken> UsersRefreshTokensReadOnlyDictionary { get; }
-        JwtAuthResult GenerateTokens(string username, Claim[] claims, DateTime now);
-        JwtAuthResult Refresh(string refreshToken, string accessToken, DateTime now);
-        void RemoveExpiredRefreshTokens(DateTime now);
-        void RemoveRefreshTokenByUserName(string userName);
-        (ClaimsPrincipal, JwtSecurityToken) DecodeJwtToken(string token);
-    }
-}
Index: rmatikoServices/Infrastructure/JwtAuthManager.cs
===================================================================
--- FarmatikoServices/Infrastructure/JwtAuthManager.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,151 +1,0 @@
-﻿using System;
-using System.Collections.Concurrent;
-using System.Collections.Immutable;
-using System.IdentityModel.Tokens.Jwt;
-using System.Linq;
-using System.Security.Claims;
-using System.Security.Cryptography;
-using System.Text;
-using System.Text.Json.Serialization;
-using FarmatikoServices.Infrastructure;
-using Microsoft.IdentityModel.Tokens;
-
-namespace FarmatikoServices.Infrastructure
-{
-    
-
-    public class JwtAuthManager : IJwtAuthManager
-    {
-        public IImmutableDictionary<string, RefreshToken> UsersRefreshTokensReadOnlyDictionary => _usersRefreshTokens.ToImmutableDictionary();
-        private readonly ConcurrentDictionary<string, RefreshToken> _usersRefreshTokens;  // can store in a database or a distributed cache
-        private readonly JwtTokenConfig _jwtTokenConfig;
-        private readonly byte[] _secret;
-
-        public JwtAuthManager(JwtTokenConfig jwtTokenConfig)
-        {
-            _jwtTokenConfig = jwtTokenConfig;
-            _usersRefreshTokens = new ConcurrentDictionary<string, RefreshToken>();
-            _secret = Encoding.ASCII.GetBytes(jwtTokenConfig.Secret);
-        }
-
-        // optional: clean up expired refresh tokens
-        public void RemoveExpiredRefreshTokens(DateTime now)
-        {
-            var expiredTokens = _usersRefreshTokens.Where(x => x.Value.ExpireAt < now).ToList();
-            foreach (var expiredToken in expiredTokens)
-            {
-                _usersRefreshTokens.TryRemove(expiredToken.Key, out _);
-            }
-        }
-
-        // can be more specific to ip, user agent, device name, etc.
-        public void RemoveRefreshTokenByUserName(string userName)
-        {
-            var refreshTokens = _usersRefreshTokens.Where(x => x.Value.UserName == userName).ToList();
-            foreach (var refreshToken in refreshTokens)
-            {
-                _usersRefreshTokens.TryRemove(refreshToken.Key, out _);
-            }
-        }
-
-        public JwtAuthResult GenerateTokens(string username, Claim[] claims, DateTime now)
-        {
-            var shouldAddAudienceClaim = string.IsNullOrWhiteSpace(claims?.FirstOrDefault(x => x.Type == JwtRegisteredClaimNames.Aud)?.Value);
-            var jwtToken = new JwtSecurityToken(
-                _jwtTokenConfig.Issuer,
-                shouldAddAudienceClaim ? _jwtTokenConfig.Audience : string.Empty,
-                claims,
-                expires: now.AddMinutes(_jwtTokenConfig.AccessTokenExpiration),
-                signingCredentials: new SigningCredentials(new SymmetricSecurityKey(_secret), SecurityAlgorithms.HmacSha256Signature));
-            var accessToken = new JwtSecurityTokenHandler().WriteToken(jwtToken);
-
-            var refreshToken = new RefreshToken
-            {
-                UserName = username,
-                TokenString = GenerateRefreshTokenString(),
-                ExpireAt = now.AddMinutes(_jwtTokenConfig.RefreshTokenExpiration)
-            };
-            _usersRefreshTokens.AddOrUpdate(refreshToken.TokenString, refreshToken, (s, t) => refreshToken);
-
-            return new JwtAuthResult
-            {
-                AccessToken = accessToken,
-                RefreshToken = refreshToken
-            };
-        }
-
-        public JwtAuthResult Refresh(string refreshToken, string accessToken, DateTime now)
-        {
-            var (principal, jwtToken) = DecodeJwtToken(accessToken);
-            if (jwtToken == null || !jwtToken.Header.Alg.Equals(SecurityAlgorithms.HmacSha256Signature))
-            {
-                throw new SecurityTokenException("Invalid token");
-            }
-
-            var userName = principal.Identity.Name;
-            if (!_usersRefreshTokens.TryGetValue(refreshToken, out var existingRefreshToken))
-            {
-                throw new SecurityTokenException("Invalid token");
-            }
-            if (existingRefreshToken.UserName != userName || existingRefreshToken.ExpireAt < now)
-            {
-                throw new SecurityTokenException("Invalid token");
-            }
-
-            return GenerateTokens(userName, principal.Claims.ToArray(), now); // need to recover the original claims
-        }
-
-        public (ClaimsPrincipal, JwtSecurityToken) DecodeJwtToken(string token)
-        {
-            if (string.IsNullOrWhiteSpace(token))
-            {
-                throw new SecurityTokenException("Invalid token");
-            }
-            var principal = new JwtSecurityTokenHandler()
-                .ValidateToken(token,
-                    new TokenValidationParameters
-                    {
-                        ValidateIssuer = true,
-                        ValidIssuer = _jwtTokenConfig.Issuer,
-                        ValidateIssuerSigningKey = true,
-                        IssuerSigningKey = new SymmetricSecurityKey(_secret),
-                        ValidAudience = _jwtTokenConfig.Audience,
-                        ValidateAudience = true,
-                        ValidateLifetime = true,
-                        ClockSkew = TimeSpan.FromMinutes(1)
-                    },
-                    out var validatedToken);
-            return (principal, validatedToken as JwtSecurityToken);
-        }
-
-        private static string GenerateRefreshTokenString()
-        {
-            var randomNumber = new byte[32];
-            using var randomNumberGenerator = RandomNumberGenerator.Create();
-            randomNumberGenerator.GetBytes(randomNumber);
-            return Convert.ToBase64String(randomNumber);
-        }
-    }
-
-    public class JwtAuthResult
-    {
-        [JsonPropertyName("accessToken")]
-        public string AccessToken { get; set; }
-
-        [JsonPropertyName("refreshToken")]
-        public RefreshToken RefreshToken { get; set; }
-    }
-
-    public class RefreshToken
-    {
-        [JsonPropertyName("username")]
-        public string UserName { get; set; }    // can be used for usage tracking
-        // can optionally include other metadata, such as user agent, ip address, device name, and so on
-
-        [JsonPropertyName("tokenString")]
-        public string TokenString { get; set; }
-
-        [JsonPropertyName("expireAt")]
-        public DateTime ExpireAt { get; set; }
-    }
-}
Index: rmatikoServices/Infrastructure/JwtRefreshTokenCache.cs
===================================================================
--- FarmatikoServices/Infrastructure/JwtRefreshTokenCache.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,42 +1,0 @@
-﻿using System;
-using System.Threading;
-using System.Threading.Tasks;
-using FarmatikoServices.Infrastructure;
-using Microsoft.Extensions.Hosting;
-
-namespace FarmatikoServices.Infrastructure
-{
-    public class JwtRefreshTokenCache : IHostedService, IDisposable
-    {
-        private Timer _timer;
-        private readonly IJwtAuthManager _jwtAuthManager;
-
-        public JwtRefreshTokenCache(IJwtAuthManager jwtAuthManager)
-        {
-            _jwtAuthManager = jwtAuthManager;
-        }
-
-        public Task StartAsync(CancellationToken stoppingToken)
-        {
-            // remove expired refresh tokens from cache every minute
-            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
-            return Task.CompletedTask;
-        }
-
-        private void DoWork(object state)
-        {
-            _jwtAuthManager.RemoveExpiredRefreshTokens(DateTime.Now);
-        }
-
-        public Task StopAsync(CancellationToken stoppingToken)
-        {
-            _timer?.Change(Timeout.Infinite, 0);
-            return Task.CompletedTask;
-        }
-
-        public void Dispose()
-        {
-            _timer?.Dispose();
-        }
-    }
-}
Index: rmatikoServices/Infrastructure/JwtTokenConfig.cs
===================================================================
--- FarmatikoServices/Infrastructure/JwtTokenConfig.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,22 +1,0 @@
-﻿using System.Text.Json.Serialization;
-
-namespace FarmatikoServices.Infrastructure
-{
-    public class JwtTokenConfig
-    {
-        [JsonPropertyName("secret")]
-        public string Secret { get; set; }
-
-        [JsonPropertyName("issuer")]
-        public string Issuer { get; set; }
-
-        [JsonPropertyName("audience")]
-        public string Audience { get; set; }
-
-        [JsonPropertyName("accessTokenExpiration")]
-        public int AccessTokenExpiration { get; set; }
-
-        [JsonPropertyName("refreshTokenExpiration")]
-        public int RefreshTokenExpiration { get; set; }
-    }
-}
Index: rmatikoServices/Services/AdminService.cs
===================================================================
--- FarmatikoServices/Services/AdminService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,48 +1,0 @@
-﻿using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.Services
-{
-    public class AdminService : IAdminService
-    {
-        private readonly IAdminRepo _adminRepo;
-        public AdminService(IAdminRepo adminRepo)
-        {
-            _adminRepo = adminRepo;
-        }
-
-        public async Task<IEnumerable<RequestPharmacyHead>> GetClaimingRequests()
-        {
-            var req = await _adminRepo.GetClaimingRequests();
-            if (req != null)
-                return req;
-            throw new Exception("No data is found.");
-        }
-
-        public async Task<IEnumerable<PharmacyHead>> GetPharmacyHeads()
-        {
-            var PHeads = await _adminRepo.GetPharmacyHeads();
-            var list = PHeads.Select(x => x.DeletedOn == null);
-            if (list != null)
-            {
-                return PHeads;
-            }
-            throw new Exception("No data is found.");
-        }
-
-        public bool RejectRequest(RequestPharmacyHead req)
-        {
-            if (req != null)
-            {
-                _adminRepo.RemoveClaimRequest(req);
-                return true;
-            }
-            return false;
-        }
-    }
-}
Index: rmatikoServices/Services/JobDTO/JobSchedule.cs
===================================================================
--- FarmatikoServices/Services/JobDTO/JobSchedule.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,19 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace FarmatikoServices.Services.JobDTO
-{
-    public class JobSchedule
-    {
-        public JobSchedule(Type jobType, string cronExpression)
-        {
-            JobType = jobType;
-            CronExpression = cronExpression;
-        }
-
-        public Type JobType { get; }
-        public string CronExpression { get; }
-    }
-}
-
Index: rmatikoServices/Services/PHService.cs
===================================================================
--- FarmatikoServices/Services/PHService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,303 +1,0 @@
-﻿using FarmatikoData.DTOs;
-using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.Services
-{
-    public class PHService : IPHService
-    {
-        private readonly IPHRepo _iPHRepo;
-        private readonly IRepository _repository;
-        public PHService(IPHRepo iPHRepo, IRepository repository)
-        {
-            _iPHRepo = iPHRepo;
-            _repository = repository;
-        }
-
-        public async Task<bool> ClaimPharmacy(RequestPharmacyHead pharmacy)
-        {
-            if (pharmacy != null)
-            {
-                await _iPHRepo.ClaimPharmacy(pharmacy);
-                return true;
-            }
-            return false;
-        }
-
-        public async Task<PharmacyHead> GetPharmacyHeadByIdAsync(int id)
-        {
-            PharmacyHead Phead = null;
-            if (id >= 0)
-                Phead = await _iPHRepo.GetPharmacyHeadByIdAsync(id);
-            if (Phead != null)
-                return Phead;
-            throw new Exception("No data found.");
-        }
-
-        public async Task<IEnumerable<PharmacyHead>> GetPharmacyHeadInfo()
-        {
-            var PHeads = await _iPHRepo.GetPharmacyHeadInfo();
-            if (PHeads != null)
-                return PHeads;
-            throw new Exception("No Pharmacy heads found.");
-        }
-
-        public async Task<int> Login(PharmacyHead pharmacyHead)
-        {
-            var PHead = await _iPHRepo.GetPharmacyHeadByIdAsync(pharmacyHead.Id);
-            if (PHead.Password.Equals(pharmacyHead.Password))
-                return PHead.Id;
-            return -1;
-        }
-
-
-
-        public async Task UpdatePharmacyHead(PharmacyHeadDto pharmacyHead)
-        {
-            if (pharmacyHead != null)
-            {
-                var phead = _iPHRepo.GetPharmacyHead(pharmacyHead.Email);
-
-                phead.Medicines = _repository.GetPHMedicines(phead.Email).ToList();
-
-                var phmeds = await _repository.GetAllPHMedicines();
-
-                List<Medicine> medicines = _repository.GetMedicines().ToList();
-
-                List<Medicine> PHMedicines = new List<Medicine>();
-
-                List<PharmacyHeadMedicine> list = new List<PharmacyHeadMedicine>();
-
-
-                if (pharmacyHead.Medicines != null && pharmacyHead.Medicines.Count() > 0)
-                {
-                    foreach (var med in phead.Medicines)
-                    {
-                        var medicine = medicines.Where(x => x.Id == med.MedicineId).FirstOrDefault();
-                        if (medicine != null)
-                            PHMedicines.Add(medicine);
-                    }
-                    foreach(var phMed in PHMedicines)
-                    {
-                        if (!pharmacyHead.Medicines.Contains(phMed))
-                        {
-                            /*
-                             * USELESS
-                             * if (pharmacyHead.Medicines.Count() == 0)
-                            {
-                                phead.Medicines = null;
-                                int PHMId = phead.Medicines.Select(x => x.Id).Single();
-                                int phId = phead.Medicines.Select(x => x.PheadId).Single();
-                                int medId = phead.Medicines.Select(x => x.MedicineId).Single();
-                                _iPHRepo.DeletePHMedicine(PHMId, phId, medId);
-                                return;
-                            }*/
-                            if (phead.Medicines != null && phead.Medicines.Count() > 0)
-                            {
-                                foreach (var med in pharmacyHead.Medicines)
-                                {
-                                    Medicine medicine = new Medicine()
-                                    {
-                                        Name = med.Name,
-                                        Form = med.Form,
-                                        Manufacturer = med.Manufacturer,
-                                        Medicines = med.Medicines,
-                                        Packaging = med.Packaging,
-                                        Price = med.Price,
-                                        Strength = med.Strength,
-                                        WayOfIssuing = med.WayOfIssuing
-                                    };
-
-                                    PharmacyHeadMedicine phm = new PharmacyHeadMedicine()
-                                    {
-                                        PheadId = phead.Id,
-                                        Head = phead,
-                                        MedicineId = med.Id,
-                                        Medicine = medicine
-                                    };
-
-                                    bool ifExists = phead.Medicines.Contains(phm);
-                                    if (!ifExists)
-                                        list.Add(phm);
-
-                                }
-                            }
-                            else
-                            {
-                                foreach (var med in pharmacyHead.Medicines)
-                                {
-                                    PharmacyHead head1 = new PharmacyHead()
-                                    {
-                                        Id = pharmacyHead.Id,
-                                        Name = pharmacyHead.Name,
-                                        Email = pharmacyHead.Email,
-                                        Password = pharmacyHead.Password
-                                    };
-                                    PharmacyHeadMedicine phmed = new PharmacyHeadMedicine()
-                                    {
-                                        Head = head1,
-                                        Medicine = med
-                                    };
-                                    list.Add(phmed);
-                                }
-                            }
-
-
-                            phead.Medicines = list;
-
-                            await _iPHRepo.UpdatePharmacyHead(phead);
-
-                        }
-                    }
-                    
-                }
-                PharmacyHead head = new PharmacyHead()
-                {
-                    Name = pharmacyHead.Name,
-                    Email = pharmacyHead.Email,
-                    Password = pharmacyHead.Password,
-                    Medicines = phead.Medicines,
-                    Pharmacies = phead.Pharmacies
-                };
-                if (!phead.Name.Equals(head.Name) && !phead.Password.Equals(head.Email))
-                {
-                    await _iPHRepo.UpdatePharmacyHead(head);
-                }
-                List<Pharmacy> pharmacies = new List<Pharmacy>();
-                pharmacies = phead.Pharmacies;
-                if (head.Pharmacies != null && pharmacyHead.Pharmacies != null)
-                {
-                    if (head.Pharmacies.Count() > 0 && pharmacyHead.Pharmacies.Count() > 0)
-                    {
-                        foreach (var pharmacy in pharmacyHead.Pharmacies)
-                        {
-                            if (!head.Pharmacies.Contains(pharmacy))
-                            {
-                                pharmacy.PheadId = phead.Id;
-                                pharmacy.PharmacyHead = phead;
-                                pharmacies.Add(pharmacy);
-                            }
-                        }
-                        head.Pharmacies = pharmacies;
-                        await _iPHRepo.UpdatePharmacyHead(head);
-                    }
-                }
-            }
-            else throw new Exception("Cannot update pharmacy head since there was no changes.");
-        }
-        public async Task<bool> Add(PharmacyHeadDto pharmacyHead)
-        {
-            if (pharmacyHead != null)
-            {
-                PharmacyHead head = new PharmacyHead()
-                {
-                    Name = pharmacyHead.Name,
-                    Email = pharmacyHead.Email,
-                    Password = pharmacyHead.Password,
-                    Pharmacies = null,
-                    Medicines = null
-                };
-                await _iPHRepo.Add(head);
-                return true;
-            }
-            return false;
-        }
-
-        public async Task<bool> Remove(int id)
-        {
-            PharmacyHead Phead = await _iPHRepo.GetPharmacyHeadByIdAsync(id);
-            if (Phead != null && id >= 0)
-            {
-                Phead.DeletedOn = DateTime.UtcNow;
-                await _iPHRepo.Remove(Phead);
-                return true;
-            }
-            return false;
-        }
-
-        public async Task<bool> RemoveClaimingRequest(int id)
-        {
-            if (id >= 0)
-            {
-                await _iPHRepo.RemoveClaimingRequest(id);
-                return true;
-            }
-            return false;
-        }
-
-        public PharmacyHeadDto GetPharmacyHead(string userName)
-        {
-            if (userName != null)
-            {
-                var Phead = _iPHRepo.GetPharmacyHeadByUserName(userName);
-                List<PharmacyHeadMedicine> PHMedicines = _iPHRepo.GetPharmacyHeadMedicines(userName);
-                List<Medicine> Medicines = _repository.GetMedicines().ToList();
-                List<Medicine> MedicineList = new List<Medicine>();
-
-                var user = _repository.GetRole(userName);
-
-
-                if (user.UserRole.ToString().Equals("Admin"))
-                {
-                    List<Pharmacy> pharmacies = new List<Pharmacy>();
-                    pharmacies = Phead.Pharmacies;
-                    var Admin = new PharmacyHeadDto()
-                    {
-                        Id = user.Id,
-                        Email = user.Email,
-                        Name = user.Name,
-                        Password = user.Password,
-                        Pharmacies = pharmacies
-                    };
-
-                    return Admin;
-                }
-                else
-                {
-                    foreach (var med in Medicines)
-                    {
-                        if (Phead.Medicines == null || Phead.Medicines.Count() == 0)
-                            break;
-                        var PHMObj = Phead.Medicines.Where(x => x.MedicineId == med.Id).SingleOrDefault();
-                        if (PHMObj == null)
-                        {
-                            continue;
-                        }
-                        if (PHMObj.MedicineId == med.Id)
-                        {
-                            var medicine = new Medicine()
-                            {
-                                Id = med.Id,
-                                Name = med.Name,
-                                Strength = med.Strength,
-                                Form = med.Form,
-                                WayOfIssuing = med.WayOfIssuing,
-                                Manufacturer = med.Manufacturer,
-                                Price = med.Price,
-                                Packaging = med.Packaging
-                            };
-                            MedicineList.Add(medicine);
-                        }
-                    }
-                }
-
-                PharmacyHeadDto pharmacyHead = new PharmacyHeadDto()
-                {
-                    Id = Phead.Id,
-                    Medicines = MedicineList,
-                    Pharmacies = Phead.Pharmacies,
-                    Email = Phead.Email,
-                    Name = Phead.Name,
-                    Password = Phead.Password
-                };
-                return pharmacyHead;
-            }
-            else throw new Exception("Username is null.");
-        }
-    }
-}
Index: rmatikoServices/Services/ProcessJSONService.cs
===================================================================
--- FarmatikoServices/Services/ProcessJSONService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,223 +1,0 @@
-﻿using FarmatikoData.Models;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System;
-using Microsoft.Extensions.Logging;
-using System.Net;
-using System.Linq;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using RestSharp;
-using System.Threading.Tasks;
-using OfficeOpenXml;
-using System.IO;
-using GemBox.Spreadsheet;
-using System.Text;
-using FarmatikoData.FarmatikoRepoInterfaces;
-
-namespace FarmatikoServices.Services
-{
-    public class ProcessJSONService : IProcessJSONService
-    {
-
-        private readonly ILogger _logger;
-        private readonly IUpdateDataRepo _repo;
-        private readonly IService _service;
-        public ProcessJSONService(ILogger logger, IUpdateDataRepo repo, IService service)
-        {
-            _logger = logger;
-            _repo = repo;
-            _service = service;
-        }
-        //Excel reader
-        private bool ReadPharmaciesFromExcel(string Path)
-        {
-            string path = Directory.GetCurrentDirectory() + @"\ExcellDocs\1.xlsx";
-
-            FileInfo fileInfo = new FileInfo(path);
-            if (fileInfo != null)
-            {
-                using (var package = new ExcelPackage(fileInfo))
-                {
-                    var Sheet = package.Workbook.Worksheets.First();
-                    //var table = Sheet.Tables.First();
-                    int rowCount = Sheet.Dimension.End.Row;
-                    for (int i = 2; i < rowCount; ++i)
-                    {
-                        //Console.WriteLine();
-                        Pharmacy pharmacy = new Pharmacy()
-                        {
-                            Name = Sheet.Cells[i, 2].Value.ToString(),
-                            Address = Sheet.Cells[i, 3].Value.ToString(),
-                            Location = Sheet.Cells[i, 4].Value.ToString(),
-                            WorkAllTime = false
-                        };
-                        _service.AddPharmacy(pharmacy);
-                    }
-                    return true;
-                }
-
-            }
-            
-            return false;
-
-        }
-        public void DownloadPharmaciesExcel()
-        {
-            try
-            {
-                string pathToSave1 = Directory.GetCurrentDirectory() + @"\ExcellDocs\1.xlsx";
-
-                string pathToSave2 = Directory.GetCurrentDirectory() + @"\ExcellDocs\2.xlsx";
-                var client = new WebClient();
-                string url1 = "http://data.gov.mk/dataset/d84c31d9-e749-4b17-9faf-a5b4db3e7a70/resource/4806b744-f6f6-42d0-b0f0-d82e66d3b177/download/-.xlsxs";
-                /*string url2 = "http://data.gov.mk/dataset/d84c31d9-e749-4b17-9faf-a5b4db3e7a70/resource/a16379b4-ec81-4de7-994d-0ee503d71b55/download/registar-na-apteki-nadvor-od-mreza-na-fzo-12.08.2020.xlsx";*/
-                Uri uri1 = new Uri(url1);
-                //Uri uri2 = new Uri(url2);
-                client.DownloadFileAsync(uri1, pathToSave1);
-                //client.DownloadFile(uri2, @pathToSave2);
-
-
-                bool Success = ReadPharmaciesFromExcel(pathToSave1);
-                _logger.LogInformation(Success.ToString() + "1");
-
-                
-            }
-            catch (Exception e)
-            {
-                _logger.LogInformation(e.Message);
-                throw new Exception("Cannot process Pharmacies from Excel.");
-            }
-        }
-
-        //Healthfacilities
-        public void GetProcessedHealthFacilitiesFromJSON()
-        {
-            try
-            {
-                var client = new WebClient();
-                var json = client.DownloadString(@"http://www.otvorenipodatoci.gov.mk/datastore/dump/505db453-4de2-4761-8a81-2800f7820b06?format=json");
-
-                var jsonResponse = JObject.Parse(json);
-                var records = JArray.Parse(jsonResponse.GetValue("records").ToString());
-
-                foreach (var rec in records)
-                {
-                    dynamic obj = JsonConvert.DeserializeObject(rec.ToString());
-                    var Name = obj[2];
-                    var Municipality = obj[6];
-                    var Address = obj[9];
-                    var Email = obj[10];
-                    var Phone = obj[11];
-                    var Type = obj[5];
-                    HealthFacility healthFacility = new HealthFacility();
-                    //Name, Municipality, Address, Type, Email, Phone
-                    healthFacility.Name = Convert.ToString(Name);
-                    healthFacility.Municipality = Convert.ToString(Municipality);
-                    healthFacility.Address = Convert.ToString(Address);
-                    healthFacility.Type = Convert.ToString(Type);
-                    healthFacility.Email = Convert.ToString(Email);
-                    healthFacility.Phone = Convert.ToString(Phone);
-                    _service.AddFacility(healthFacility);
-
-                }
-                
-            }
-            catch (Exception e)
-            {
-                _logger.LogInformation(e.Message);
-                throw new Exception("Cannot process health facilities from JSON." + e.Message);
-            }
-        }
-              
-        //Healthcare workers
-        public void GetProcessedHealthcareWorkersFromJSON()
-        {
-            try
-            {
-                var client = new WebClient();
-                var jsonW = client.DownloadString(@"http://www.otvorenipodatoci.gov.mk/datastore/dump/5b661887-685b-4189-b6bb-9b52eb8ace16?format=json");
-
-                var jsonResponseW = JObject.Parse(jsonW);
-                var recordsW = JArray.Parse(jsonResponseW.GetValue("records").ToString());
-
-                foreach (var rec in recordsW)
-                {
-                    dynamic obj = JsonConvert.DeserializeObject(rec.ToString());
-                    var Name = Convert.ToString(obj[4]);
-                    var Branch = Convert.ToString(obj[2]);
-                    var FacilityName = Convert.ToString(obj[1]);
-                    var Title = Convert.ToString(obj[3]);
-
-                    HealthFacility facility = _repo.GetFacilityJSON(Convert.ToString(FacilityName));
-
-                    if (facility != null && facility != default)
-                    {
-                        HealthFacility Facility = new HealthFacility(
-                           facility.Name,
-                           facility.Municipality,
-                           facility.Address,
-                           facility.Type,
-                           facility.Email,
-                           facility.Phone
-                           );
-                        HealthcareWorker healthcareWorker = new HealthcareWorker(Name, Branch, Facility, Title);
-                        _service.AddWorker(healthcareWorker);
-                    }
-                    else
-                    {
-                        HealthFacility Facility = new HealthFacility(
-                           Convert.ToString(FacilityName),
-                           "",
-                           "",
-                           Convert.ToString(Branch),
-                           "",
-                           ""
-                           );
-                        HealthcareWorker healthcareWorker = new HealthcareWorker(Name, Branch, Facility, Title);
-                        _service.AddWorker(healthcareWorker);
-                    }
-                    
-
-                }
-                
-            }
-            catch (Exception e)
-            {
-                _logger.LogInformation(e.Message);
-            }
-        }
-        //Medicines
-        public void GetProcessedMedicinesFromJSON()
-        {
-            try
-            {
-                var client = new WebClient();
-                var jsonM = client.DownloadString(@"http://www.otvorenipodatoci.gov.mk/datastore/dump/ecff2aef-9c8e-4efd-a557-96df4fff9adb?format=json");
-
-                var jsonResponseM = JObject.Parse(jsonM);
-                var recordsM = JArray.Parse(jsonResponseM.GetValue("records").ToString());
-
-                foreach (var rec in recordsM)
-                {
-                    dynamic obj = JsonConvert.DeserializeObject(rec.ToString());
-                    var Name = obj[1];
-                    var Strength = obj[7];
-                    var Form = obj[6];
-                    var WayOfIssuing = obj[9];
-                    var Manufacturer = obj[11];
-                    var Price = float.Parse(Convert.ToString(obj[17]));
-                    var Packaging = obj[8];
-                    string price = Convert.ToString(Price);
-                    Medicine medicine = new Medicine(Convert.ToString(Name), Convert.ToString(Strength), Convert.ToString(Form), Convert.ToString(WayOfIssuing), Convert.ToString(Manufacturer), Price, Convert.ToString(Packaging));
-
-                    _service.AddMedicines(medicine);
-                }
-            }
-            catch (Exception e)
-            {
-                _logger.LogInformation(e.Message);
-                throw new Exception("medicine");
-            }
-        }
-    }
-}
Index: rmatikoServices/Services/Service.cs
===================================================================
--- FarmatikoServices/Services/Service.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,424 +1,0 @@
-﻿using FarmatikoData.DTOs;
-using FarmatikoData.FarmatikoRepoInterfaces;
-using FarmatikoData.Models;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using Microsoft.Extensions.Logging;
-using Newtonsoft.Json.Linq;
-using RestSharp;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.Services
-{
-    public class Service : IService
-    {
-        private readonly IRepository _repository;
-        private readonly IPHRepo _phrepo;
-        private readonly ILogger _logger;
-        public Service(IRepository repository, IPHRepo phrepo, ILogger logger)
-        {
-            _repository = repository;
-            _phrepo = phrepo;
-            _logger = logger;
-        }
-
-        //GET
-        public async Task<IEnumerable<HealthcareWorker>> GetAllWorkers()
-        {
-            var Workers = await _repository.GetAllWorkers();
-            return Workers;
-        }
-
-        public async Task<IEnumerable<HealthFacility>> GetFacilities()
-        {
-            var Facilities = await _repository.GetFacilities();
-            return Facilities;
-        }
-
-        public async Task<HealthFacility> GetFacility(int id)
-        {
-            var Facility = await _repository.GetFacility(id);
-            return Facility;
-        }
-
-        public async Task<Medicine> GetMedicine(int id)
-        {
-            var Medicine = await _repository.GetMedicine(id);
-            return Medicine;
-        }
-
-        public async Task<List<MedicineDTO>> GetMedicines()
-        {
-            var Medicines = await _repository.GetMedicinesAsync();
-            List<MedicineDTO> list = new List<MedicineDTO>();
-            var listPHMedicines = await _repository.GetAllPHMedicines();
-            List<string> headNames = new List<string>();
-            List<PharmacyHead> heads = new List<PharmacyHead>();
-            foreach (var med in Medicines)
-            {
-                var meds = listPHMedicines.Where(x => x.MedicineId == med.Id).ToList();
-                if (meds != null)
-                {
-                    heads = meds.Select(x => x.Head).ToList();
-                }
-                headNames = heads.Select(x => x.Name).ToList();
-                MedicineDTO medicine = new MedicineDTO()
-                {
-                    Name = med.Name,
-                    Manufacturer = med.Manufacturer,
-                    Packaging = med.Packaging,
-                    Form = med.Form,
-                    Price = med.Price,
-                    Strength = med.Strength,
-                    WayOfIssuing = med.WayOfIssuing,
-                    HeadNames = headNames
-                };
-
-                list.Add(medicine);
-            }
-
-            return list;
-        }
-
-        public Pandemic GetPandemic()
-        {
-            //var Pandemic = await _repository.GetPandemic();
-
-            try
-            {
-                var Date = DateTime.UtcNow.ToString("yyyy-MM-dd");
-                var client = new RestClient($"https://api.covid19tracking.narrativa.com/api/{Date}/country/north_macedonia");
-                var response = client.Execute(new RestRequest());
-                string original = response.Content;
-                var jsonResponsePandemic = JObject.Parse(original);
-                if (!jsonResponsePandemic.ContainsKey("total"))
-                {
-                    Date = DateTime.UtcNow.AddDays(-1).ToString("yyyy-MM-dd");
-                    client = new RestClient($"https://api.covid19tracking.narrativa.com/api/{Date}/country/north_macedonia");
-                    response = client.Execute(new RestRequest());
-                    original = response.Content;
-                    jsonResponsePandemic = JObject.Parse(original);
-                    if (!jsonResponsePandemic.ContainsKey("total"))
-                    {
-                        Date = DateTime.UtcNow.AddDays(-2).ToString("yyyy-MM-dd");
-                        client = new RestClient($"https://api.covid19tracking.narrativa.com/api/{Date}/country/north_macedonia");
-                        response = client.Execute(new RestRequest());
-                        original = response.Content;
-                        jsonResponsePandemic = JObject.Parse(original);
-                    }
-                }
-                var global = JObject.Parse(jsonResponsePandemic.GetValue("total").ToString());
-                var TotalConfirmed = long.Parse(global.GetValue("today_confirmed").ToString());
-                var TotalDeaths = long.Parse(global.GetValue("today_deaths").ToString());
-                var TotalRecovered = long.Parse(global.GetValue("today_new_recovered").ToString());
-
-                var mk = JObject.Parse(jsonResponsePandemic.GetValue("dates").ToString());
-
-                var date = JObject.Parse(mk.GetValue(Date).ToString());
-                var country = JObject.Parse(date.GetValue("countries").ToString());
-                var mkd = JObject.Parse(country.GetValue("North Macedonia").ToString());
-                dynamic objP = mkd;
-                var TotalMk = Int32.Parse(objP.GetValue("today_confirmed").ToString());
-                var TotalDeathsMK = Int32.Parse(objP.GetValue("today_deaths").ToString());
-                var TotalRecoveredMK = Int32.Parse(objP.GetValue("today_recovered").ToString());
-                var NewMK = Int32.Parse(objP.GetValue("today_new_confirmed").ToString());
-
-                var Name = "Coronavirus";
-                var ActiveMk = TotalMk - (TotalRecoveredMK + TotalDeathsMK);
-                var ActiveGlobal = TotalConfirmed - (TotalRecovered + TotalDeaths);
-
-                Pandemic pandemic = new Pandemic(Name, TotalMk, ActiveMk, TotalDeathsMK, NewMK, TotalConfirmed, TotalDeaths, ActiveGlobal);
-                return pandemic;
-            }
-            catch (Exception e)
-            {
-                _logger.LogInformation(e.Message);
-            }
-            return null;
-        }
-
-        public async Task<List<PharmacyDTO>> GetPharmacies()
-        {
-            var Pharmacies = await _repository.GetPharmacies();
-            List<PharmacyDTO> pharmacies = new List<PharmacyDTO>();
-
-            foreach (var pharm in Pharmacies)
-            {
-                PharmacyDTO pharmacyDTO = new PharmacyDTO()
-                {
-                    Name = pharm.Name,
-                    Location = pharm.Location,
-                    Address = pharm.Address,
-                    WorkAllTime = pharm.WorkAllTime
-                };
-                if (pharm.PharmacyHead != null)
-                {
-                    pharmacyDTO.HeadName = pharm.PharmacyHead.Name;
-                }
-
-                pharmacies.Add(pharmacyDTO);
-            }
-            return pharmacies;
-        }
-
-        public async Task<Pharmacy> GetPharmacy(int id)
-        {
-            var Pharmacy = await _repository.GetPharmacy(id);
-            return Pharmacy;
-        }
-
-        public async Task<HealthcareWorker> GetWorker(int id)
-        {
-            var Worker = await _repository.GetWorker(id);
-            return Worker;
-        }
-
-        public async Task<IEnumerable<HealthFacility>> SearchFacilities(string query)
-        {
-            var SearchQuery = await _repository.SearchFacilities(query);
-            return SearchQuery;
-        }
-
-        public async Task<IEnumerable<MedicineDTO>> SearchMedicines(string query)
-        {
-            var SearchQuery = await _repository.SearchMedicines(query);
-            List<MedicineDTO> list = new List<MedicineDTO>();
-            var listPHMedicines = await _repository.GetAllPHMedicines();
-            List<string> headNames = new List<string>();
-            List<PharmacyHead> heads = new List<PharmacyHead>();
-            foreach (var med in SearchQuery)
-            {
-                var meds = listPHMedicines.Where(x => x.MedicineId == med.Id).ToList();
-                if (meds != null)
-                {
-                    heads = meds.Select(x => x.Head).ToList();
-                }
-                if (heads != null)
-                    headNames = heads?.Select(x => x?.Name).ToList();
-                MedicineDTO medicine = new MedicineDTO()
-                {
-                    Name = med.Name,
-                    Manufacturer = med.Manufacturer,
-                    Packaging = med.Packaging,
-                    Form = med.Form,
-                    Price = med.Price,
-                    Strength = med.Strength,
-                    WayOfIssuing = med.WayOfIssuing,
-                    HeadNames = headNames
-                };
-
-                list.Add(medicine);
-                headNames = new List<string>();
-            }
-
-            return list;
-        }
-
-        public async Task<IEnumerable<PharmacyDTO>> SearchPharmacies(string query)
-        {
-            var SearchQuery = await _repository.SearchPharmacies(query);
-            List<PharmacyDTO> pharmacies = new List<PharmacyDTO>();
-            var heads = await _phrepo.GetPharmacyHeadInfo();
-
-            foreach (var pharm in SearchQuery)
-            {
-                PharmacyDTO pharmacyDTO = new PharmacyDTO()
-                {
-                    Name = pharm.Name,
-                    Location = pharm.Location,
-                    Address = pharm.Address,
-                    WorkAllTime = pharm.WorkAllTime
-                };
-
-                foreach (var head in heads.ToList())
-                {
-                    if (head.Pharmacies.Contains(pharm))
-                    {
-                        pharmacyDTO.HeadName = head.Name;
-                        break;
-                    }
-                }
-
-                pharmacies.Add(pharmacyDTO);
-            }
-            return pharmacies;
-        }
-
-        public async Task<IEnumerable<HealthcareWorker>> SearchWorkers(string query)
-        {
-            var SearchQuery = await _repository.SearchWorkers(query);
-            return SearchQuery;
-        }
-
-
-        //POST (ADD NEW OBJECTS)
-        //za json(Sys updateer)
-        public async Task AddFacility(HealthFacility healthFacility)
-        {
-            if (healthFacility != null)
-            {
-                var facilities = await _repository.GetFacilities();
-                if (!facilities.Contains(healthFacility))
-                {
-                    await _repository.AddFacility(healthFacility);
-                }
-                else throw new Exception("The facility already exists.");
-            }
-            else throw new Exception("Facility is null");
-        }
-        //za json(Sys updateer)
-        public async Task AddMedicines(Medicine medicine)
-        {
-            if (medicine != null)
-            {
-                var medicines = await _repository.GetMedicinesAsync();
-                if (!medicines.Contains(medicine))
-                    await _repository.AddMedicines(medicine);
-                else throw new Exception("Medicine already exists.");
-            }
-            else throw new Exception("Medicine is null");
-        }
-        //za json(Sys updateer)
-        public async Task AddPandemic(Pandemic pandemic)
-        {
-            if (pandemic != null)
-                await _repository.AddPandemic(pandemic);
-            else throw new Exception("Pandemic is null");
-        }
-        // Samo PharmacyHead i Admin imaat pristap
-        public async void AddPharmacy(Pharmacy pharmacy)
-        {
-            if (pharmacy != null)
-            {
-                var pharmacies = await _repository.GetPharmacies();
-                if (!pharmacies.Contains(pharmacy))
-                    await _repository.AddPharmacy(pharmacy);
-                else throw new Exception("Pharmacy already exists.");
-            }
-            else throw new Exception("Pharmacy is null");
-        }
-
-        // Ovaa kontrola ja ima samo admin
-
-        public async Task<bool> AddPharmacyHead(PharmacyHeadDto pharmacyHead)
-        {
-            if (pharmacyHead != null)
-            {
-                var phead = new PharmacyHead()
-                {
-                    Name = pharmacyHead.Name,
-                    Email = pharmacyHead.Email,
-                    Password = pharmacyHead.Password
-                };
-                User user = new User()
-                {
-                    Name = phead.Name,
-                    Password = phead.Password,
-                    Email = phead.Email,
-                    UserRole = User.Role.PharmacyHead
-                };
-                if (user is null)
-                {
-                    return false;
-                }
-                User user1 = new User()
-                {
-                    Name = user.Name,
-                    Password = user.Password,
-                    Email = user.Email,
-                    UserRole = user.UserRole
-                };
-                phead.User = user1;
-                await _repository.AddPharmacyHead(phead);
-                return true;
-            }
-            else throw new Exception("PharmacyHeadDto is null");
-        }
-        //za json(Sys updater)
-        public async Task AddWorker(HealthcareWorker worker)
-        {
-            if (worker != null)
-            {
-                var workers = await _repository.GetAllWorkers();
-                if (!workers.Contains(worker))
-                    await _repository.AddWorker(worker);
-                else throw new Exception("Worker already exists.");
-            }
-            else throw new Exception("Worker is null");
-        }
-
-        //za json(Sys updateer)
-        public async Task UpdateFacility(HealthFacility healthFacilities)
-        {
-            if (healthFacilities != null)
-                await _repository.UpdateFacility(healthFacilities);
-            else throw new Exception("Facility is null");
-        }
-        //PharmacyHead
-        public async Task RemoveMedicine(Medicine medicine)
-        {
-            if (medicine != null)
-                await _repository.RemoveMedicine(medicine);
-            else throw new Exception("Medicine is null");
-        }
-        //PharmacyHead
-        public async Task UpdateMedicine(Medicine medicine)
-        {
-            if (medicine != null)
-                await _repository.UpdateMedicine(medicine);
-            else throw new Exception("Medicine is null");
-        }
-        //za json(Sys updateer)
-        public async Task UpdatePandemic(Pandemic pandemic)
-        {
-            if (pandemic != null)
-                await _repository.UpdatePandemic(pandemic);
-            else throw new Exception("Pandemic is null");
-        }
-        //PharmacyHead
-        public async Task RemovePharmacy(Pharmacy pharmacy)
-        {
-            if (pharmacy != null)
-                await _repository.RemovePharmacy(pharmacy);
-            else throw new Exception("Pharmacy is null");
-        }
-        //PharamcyHead
-        public async Task UpdatePharmacy(Pharmacy pharmacy)
-        {
-            if (pharmacy != null)
-                await _repository.UpadatePharmacy(pharmacy);
-            else throw new Exception("Pharmacy is null");
-        }
-        //za json(Sys updateer)
-        public async Task UpdateWorker(HealthcareWorker worker)
-        {
-            if (worker != null)
-                await _repository.UpdateWorker(worker);
-            else throw new Exception("Worker is null");
-        }
-
-        public async Task RemovePharmacyHead(int Id)
-        {
-            if (Id > 0)
-            {
-                await _repository.RemovePharmacyHead(Id);
-            }
-            else throw new Exception("Index out of bounds.");
-        }
-
-        public HealthFacility GetFacilityJSON(string healthFacility)
-        {
-            if (healthFacility != null)
-                return _repository.GetFacilityJSON(healthFacility);
-            return null;
-        }
-
-        //PUT (EDIT OBJECTS)
-
-
-        //DELETE
-
-    }
-}
Index: rmatikoServices/Services/SingletonUpdateDataJobFactory.cs
===================================================================
--- FarmatikoServices/Services/SingletonUpdateDataJobFactory.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,29 +1,0 @@
-﻿using Microsoft.Extensions.DependencyInjection;
-using Quartz;
-using Quartz.Spi;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace FarmatikoServices.Services
-{
-    public class SingletonUpdateDataJobFactory : IJobFactory
-    {
-        private readonly IServiceProvider _serviceProvider;
-        public SingletonUpdateDataJobFactory(IServiceProvider serviceProvider)
-        {
-            _serviceProvider = serviceProvider;
-        }
-
-        public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
-        {
-            using (var scope = _serviceProvider.CreateScope())
-            {
-                return scope.ServiceProvider.GetRequiredService(bundle.JobDetail.JobType) as IJob;
-            }
-            
-        }
-
-        public void ReturnJob(IJob job) { }
-    }
-}
Index: rmatikoServices/Services/UpdateDataHostedService.cs
===================================================================
--- FarmatikoServices/Services/UpdateDataHostedService.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,71 +1,0 @@
-﻿using FarmatikoServices.Services.JobDTO;
-using Microsoft.Extensions.Hosting;
-using Quartz;
-using Quartz.Spi;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.Services
-{
-    public class UpdateDataHostedService : IHostedService
-    {
-        private readonly ISchedulerFactory _schedulerFactory;
-        private readonly IJobFactory _jobFactory;
-        private readonly IEnumerable<JobSchedule> _jobSchedules;
-
-        public UpdateDataHostedService(
-            ISchedulerFactory schedulerFactory,
-            IJobFactory jobFactory,
-            IEnumerable<JobSchedule> jobSchedules)
-        {
-            _schedulerFactory = schedulerFactory;
-            _jobSchedules = jobSchedules;
-            _jobFactory = jobFactory;
-        }
-        public IScheduler Scheduler { get; set; }
-
-        public async Task StartAsync(CancellationToken cancellationToken)
-        {
-            Scheduler = await _schedulerFactory.GetScheduler(cancellationToken);
-            Scheduler.JobFactory = _jobFactory;
-
-            foreach (var jobSchedule in _jobSchedules)
-            {
-                var job = CreateJob(jobSchedule);
-                var trigger = CreateTrigger(jobSchedule);
-
-                await Scheduler.ScheduleJob(job, trigger, cancellationToken);
-            }
-
-            await Scheduler.Start(cancellationToken);
-        }
-
-        public async Task StopAsync(CancellationToken cancellationToken)
-        {
-            await Scheduler?.Shutdown(cancellationToken);
-        }
-
-        private static IJobDetail CreateJob(JobSchedule schedule)
-        {
-            var jobType = schedule.JobType;
-            return JobBuilder
-                .Create(jobType)
-                .WithIdentity(jobType.FullName)
-                .WithDescription(jobType.Name)
-                .Build();
-        }
-
-        private static ITrigger CreateTrigger(JobSchedule schedule)
-        {
-            return TriggerBuilder
-                .Create()
-                .WithIdentity($"{schedule.JobType.FullName}.trigger")
-                .WithCronSchedule(schedule.CronExpression)
-                .WithDescription(schedule.CronExpression)
-                .Build();
-        }
-    }
-}
Index: rmatikoServices/Services/UpdateDataJob.cs
===================================================================
--- FarmatikoServices/Services/UpdateDataJob.cs	(revision 472dd7eebc4868fc35f23bfc46732aa38cc21a1d)
+++ 	(revision )
@@ -1,45 +1,0 @@
-﻿using FarmatikoData;
-using FarmatikoServices.FarmatikoServiceInterfaces;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Logging;
-using Quartz;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FarmatikoServices.Services
-{
-    [DisallowConcurrentExecution]
-    public class UpdateDataJob : IJob
-    {
-        private readonly ILogger<UpdateDataJob> _logger;
-        private readonly IProcessJSONService _JSONservice;
-        private readonly IServiceScopeFactory _provider;
-        public UpdateDataJob(ILogger<UpdateDataJob> logger, IProcessJSONService JSONservice, IServiceScopeFactory provider)
-        {
-            _logger = logger;
-            _JSONservice = JSONservice;
-            _provider = provider;
-        }
-       
-        public async Task Execute(IJobExecutionContext context)
-        {
-            _logger.LogInformation("UpdateData Job started");
-            using (var scope = _provider.CreateScope())
-            {
-                // Resolve the Scoped service
-                var service = scope.ServiceProvider.GetRequiredService<FarmatikoDataContext>();
-                _logger.LogInformation("UpdateData Job started");
-                _JSONservice.DownloadPharmaciesExcel();
-                _JSONservice.GetProcessedHealthcareWorkersFromJSON();
-                _JSONservice.GetProcessedHealthFacilitiesFromJSON();
-                _JSONservice.GetProcessedMedicinesFromJSON();
-                
-            }
-            
-            await Task.CompletedTask;
-        }
-    }
-}
