Index: .gitignore
===================================================================
--- .gitignore	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ .gitignore	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -2,5 +2,4 @@
 
 # dependencies
-.env
 node_modules
 /.pnp
Index: ckend/data.js
===================================================================
--- backend/data.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,54 +1,0 @@
-import bcrypt from "bcryptjs";
-
-const data = {
-  users: [
-    {
-      name: "Nace",
-      email: "nace@example.com",
-      password: bcrypt.hashSync("123456"),
-      isAdmin: true,
-    },
-    {
-      name: "tester1",
-      email: "tester@example.com",
-      password: bcrypt.hashSync("123456"),
-      isAdmin: false,
-    },
-  ],
-  products: [
-    {
-      //_id: "1",
-      name: "Арин",
-      slug: "gejmerski-stol-arin",
-      category: "office",
-      subCategory: "gaming-chair",
-      image: "/products/arin_0.jpg",
-      sideImage: "/products/arin__1.jpg",
-      price: 4400,
-      priceMontaza: 500,
-      countInStock: 20,
-      description:
-        "Димензии:\n -L58 B58 H92-102 см.\nЛицев материјал:\n -еко кожа\nГрадба:\n -пластика\n -челик\n* амортизер на гас",
-      dimension: "/products/arin_dp_0.jpg",
-      scheme: "/products/arin_ap_0.jpg",
-    },
-    {
-      //_id: "2",
-      name: "Торин",
-      slug: "gejmerski-stol-torin",
-      category: "office",
-      subCategory: "gaming-chair",
-      image: "/products/torin_0.jpg",
-      sideImage: "/products/torin_1.jpg",
-      price: 6300,
-      priceMontaza: 500,
-      countInStock: 20,
-      description:
-        "Димензии:\n-  L63 B62 H108 / 115 см.\nТапацир:\n-лицев материјал, еко кожа\n-полнење: полиуретанска пена\n- ротација на 360 °\n- амортизер на гас\n-Механизам за лулкање Тилит со заклучување\nи прилагодување на силата на лулкање според тежината\n- тапацирани потпирачи за рака со функција\n- еластична и издржлива еко кожа со лесно одржување",
-      dimension: "/products/thorin_dp.jpg",
-      scheme: "/products/thorin_ap.jpg",
-    },
-  ],
-};
-
-export default data;
Index: ckend/models/categoryModel.js
===================================================================
--- backend/models/categoryModel.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,19 +1,0 @@
-import mongoose from "mongoose";
-
-const categorySchema = new mongoose.Schema(
-  {
-    categoryName: { type: String, required: true, unique: true },
-    categorySlug: { type: String, required: true, unique: true },
-    subCategories: [
-      {
-        type: String,
-      },
-    ],
-  },
-  {
-    timestamps: true,
-  }
-);
-
-const Category = mongoose.model("Category", categorySchema);
-export default Category;
Index: ckend/models/orderModel.js
===================================================================
--- backend/models/orderModel.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,53 +1,0 @@
-import mongoose from "mongoose";
-
-const orderSchema = new mongoose.Schema(
-  {
-    orderItems: [
-      {
-        slug: { type: String, required: true },
-        name: { type: String, required: true },
-        quantity: { type: Number, required: true },
-        image: { type: String, required: true },
-        price: { type: Number, required: true },
-        product: {
-          type: mongoose.Schema.Types.ObjectId,
-          ref: "Product",
-          required: true,
-        },
-      },
-    ],
-    shippingAddress: {
-      fullName: { type: String, required: true },
-      address: { type: String, required: true },
-      city: { type: String, required: true },
-      postalCode: { type: String, required: true },
-      country: { type: String, required: true },
-    },
-    paymentMethod: { type: String, required: true },
-    paymentResult: {
-      id: String,
-      status: String,
-      update_time: String,
-      email_address: String,
-    },
-    itemsPrice: { type: Number, required: true },
-    shippingPrice: { type: Number, required: true },
-    totalPrice: { type: Number, required: true },
-    user: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: true },
-    isConfirmed: { type: Boolean, default: false },
-    isPaid: { type: Boolean, default: false },
-    contactNumber: { type: String },
-    paidAt: { type: Date },
-    paidAtFormat: { type: String },
-    shippedAt: { type: Date },
-    isShipped: { type: Boolean, default: false },
-    isDelivered: { type: Boolean, default: false },
-    deliveredAt: { type: Date },
-  },
-  {
-    timestamps: true,
-  }
-);
-
-const Order = mongoose.model("Order", orderSchema);
-export default Order;
Index: ckend/models/productModel.js
===================================================================
--- backend/models/productModel.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import mongoose from "mongoose";
-
-const productSchema = new mongoose.Schema(
-  {
-    name: { type: String, required: true, unique: true },
-    slug: { type: String, required: true, unique: true },
-    height: { type: Number, required: true },
-    width: { type: Number, required: true },
-    length: { type: Number, required: true },
-    image: { type: String, required: true },
-    sideImage: { type: String, required: true },
-    sideImage2: { type: String, required: true },
-    dimension: { type: String, required: true },
-    scheme: { type: String, required: true },
-    category: { type: String, required: true },
-    subCategory: { type: String, required: true },
-    description: { type: String, required: true },
-    price: { type: Number, required: true },
-    priceMontaza: { type: Number, required: true },
-    countInStock: { type: Number, required: true },
-  },
-  {
-    timestamps: true,
-  }
-);
-
-const Product = mongoose.model("Product", productSchema);
-export default Product;
Index: ckend/models/subCategoryModel.js
===================================================================
--- backend/models/subCategoryModel.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,14 +1,0 @@
-import mongoose from "mongoose";
-
-const subCategorySchema = new mongoose.Schema(
-  {
-    subCategoryName: { type: String, required: true, unique: true },
-    subCategorySlug: { type: String, required: true, unique: true },
-  },
-  {
-    timestamps: true,
-  }
-);
-
-const SubCategory = mongoose.model("SubCategory", subCategorySchema);
-export default SubCategory;
Index: ckend/models/userModel.js
===================================================================
--- backend/models/userModel.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,17 +1,0 @@
-import mongoose from "mongoose";
-
-const userSchema = new mongoose.Schema(
-  {
-    name: { type: String, required: true },
-    contact: { type: String, required: true },
-    email: { type: String, required: true, unique: true },
-    password: { type: String, required: true },
-    isAdmin: { type: Boolean, default: false, required: true },
-  },
-  {
-    timestamps: true,
-  }
-);
-
-const User = mongoose.model("User", userSchema);
-export default User;
Index: ckend/package-lock.json
===================================================================
--- backend/package-lock.json	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,2656 +1,0 @@
-{
-  "name": "backend",
-  "version": "1.0.0",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "backend",
-      "version": "1.0.0",
-      "license": "ISC",
-      "dependencies": {
-        "bcryptjs": "^2.4.3",
-        "dotenv": "^16.0.1",
-        "express": "^4.18.1",
-        "express-async-handler": "^1.2.0",
-        "jsonwebtoken": "^8.5.1",
-        "mongoose": "^6.5.3",
-        "multer": "^1.4.5-lts.1"
-      },
-      "devDependencies": {
-        "nodemon": "^2.0.19"
-      }
-    },
-    "node_modules/@types/node": {
-      "version": "18.7.13",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz",
-      "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw=="
-    },
-    "node_modules/@types/webidl-conversions": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
-      "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
-    },
-    "node_modules/@types/whatwg-url": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
-      "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
-      "dependencies": {
-        "@types/node": "*",
-        "@types/webidl-conversions": "*"
-      }
-    },
-    "node_modules/abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true
-    },
-    "node_modules/accepts": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
-      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
-      "dependencies": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "dev": true,
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/append-field": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
-      "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
-    },
-    "node_modules/array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "node_modules/base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/bcryptjs": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
-      "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/body-parser": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
-      "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
-      "dependencies": {
-        "bytes": "3.1.2",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "on-finished": "2.4.1",
-        "qs": "6.10.3",
-        "raw-body": "2.5.1",
-        "type-is": "~1.6.18",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "dependencies": {
-        "fill-range": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/bson": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz",
-      "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==",
-      "dependencies": {
-        "buffer": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "node_modules/buffer-equal-constant-time": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
-      "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
-    },
-    "node_modules/busboy": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
-      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
-      "dependencies": {
-        "streamsearch": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=10.16.0"
-      }
-    },
-    "node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/chokidar": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://paulmillr.com/funding/"
-        }
-      ],
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
-    },
-    "node_modules/concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "engines": [
-        "node >= 0.8"
-      ],
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "node_modules/content-disposition": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
-      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
-      "dependencies": {
-        "safe-buffer": "5.2.1"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
-    },
-    "node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/denque": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
-      "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/dotenv": {
-      "version": "16.0.1",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
-      "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/ecdsa-sig-formatter": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
-      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
-    },
-    "node_modules/encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
-    },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/express": {
-      "version": "4.18.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
-      "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
-      "dependencies": {
-        "accepts": "~1.3.8",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.20.0",
-        "content-disposition": "0.5.4",
-        "content-type": "~1.0.4",
-        "cookie": "0.5.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.2.0",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.7",
-        "qs": "6.10.3",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.2.1",
-        "send": "0.18.0",
-        "serve-static": "1.15.0",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/express-async-handler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/express-async-handler/-/express-async-handler-1.2.0.tgz",
-      "integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w=="
-    },
-    "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "dependencies": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
-      "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/http-errors": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
-      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
-      "dependencies": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/ignore-by-default": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
-      "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
-      "dev": true
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "node_modules/ip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
-    },
-    "node_modules/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==",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
-    },
-    "node_modules/jsonwebtoken": {
-      "version": "8.5.1",
-      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
-      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
-      "dependencies": {
-        "jws": "^3.2.2",
-        "lodash.includes": "^4.3.0",
-        "lodash.isboolean": "^3.0.3",
-        "lodash.isinteger": "^4.0.4",
-        "lodash.isnumber": "^3.0.3",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.isstring": "^4.0.1",
-        "lodash.once": "^4.0.0",
-        "ms": "^2.1.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=4",
-        "npm": ">=1.4.28"
-      }
-    },
-    "node_modules/jsonwebtoken/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-    },
-    "node_modules/jwa": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
-      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
-      "dependencies": {
-        "buffer-equal-constant-time": "1.0.1",
-        "ecdsa-sig-formatter": "1.0.11",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/jws": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
-      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
-      "dependencies": {
-        "jwa": "^1.4.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/kareem": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz",
-      "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA=="
-    },
-    "node_modules/lodash.includes": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
-      "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
-    },
-    "node_modules/lodash.isboolean": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
-      "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
-    },
-    "node_modules/lodash.isinteger": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
-      "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
-    },
-    "node_modules/lodash.isnumber": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
-      "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
-    },
-    "node_modules/lodash.isplainobject": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
-    },
-    "node_modules/lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
-    },
-    "node_modules/lodash.once": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
-    },
-    "node_modules/media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/memory-pager": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
-      "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
-      "optional": true
-    },
-    "node_modules/merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
-    },
-    "node_modules/methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
-    },
-    "node_modules/mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "dependencies": {
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "node_modules/mongodb": {
-      "version": "4.8.1",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.8.1.tgz",
-      "integrity": "sha512-/NyiM3Ox9AwP5zrfT9TXjRKDJbXlLaUDQ9Rg//2lbg8D2A8GXV0VidYYnA/gfdK6uwbnL4FnAflH7FbGw3TS7w==",
-      "dependencies": {
-        "bson": "^4.6.5",
-        "denque": "^2.0.1",
-        "mongodb-connection-string-url": "^2.5.2",
-        "socks": "^2.6.2"
-      },
-      "engines": {
-        "node": ">=12.9.0"
-      },
-      "optionalDependencies": {
-        "saslprep": "^1.0.3"
-      }
-    },
-    "node_modules/mongodb-connection-string-url": {
-      "version": "2.5.3",
-      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.3.tgz",
-      "integrity": "sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==",
-      "dependencies": {
-        "@types/whatwg-url": "^8.2.1",
-        "whatwg-url": "^11.0.0"
-      }
-    },
-    "node_modules/mongoose": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.5.3.tgz",
-      "integrity": "sha512-0L2ZOPzNQ7kcIgpdfpmVXc+/SypdhzcTlaHXYa983u1lrVp7/i3ekwHpPiTXxYBvV6FwBAsFoHI7+Ovf8tp3Mg==",
-      "dependencies": {
-        "bson": "^4.6.5",
-        "kareem": "2.4.1",
-        "mongodb": "4.8.1",
-        "mpath": "0.9.0",
-        "mquery": "4.0.3",
-        "ms": "2.1.3",
-        "sift": "16.0.0"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mongoose"
-      }
-    },
-    "node_modules/mongoose/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-    },
-    "node_modules/mpath": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
-      "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/mquery": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
-      "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
-      "dependencies": {
-        "debug": "4.x"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      }
-    },
-    "node_modules/mquery/node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/mquery/node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-    },
-    "node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-    },
-    "node_modules/multer": {
-      "version": "1.4.5-lts.1",
-      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
-      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
-      "dependencies": {
-        "append-field": "^1.0.0",
-        "busboy": "^1.0.0",
-        "concat-stream": "^1.5.2",
-        "mkdirp": "^0.5.4",
-        "object-assign": "^4.1.1",
-        "type-is": "^1.6.4",
-        "xtend": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/nodemon": {
-      "version": "2.0.19",
-      "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz",
-      "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==",
-      "dev": true,
-      "hasInstallScript": true,
-      "dependencies": {
-        "chokidar": "^3.5.2",
-        "debug": "^3.2.7",
-        "ignore-by-default": "^1.0.1",
-        "minimatch": "^3.0.4",
-        "pstree.remy": "^1.1.8",
-        "semver": "^5.7.1",
-        "simple-update-notifier": "^1.0.7",
-        "supports-color": "^5.5.0",
-        "touch": "^3.1.0",
-        "undefsafe": "^2.0.5"
-      },
-      "bin": {
-        "nodemon": "bin/nodemon.js"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/nodemon"
-      }
-    },
-    "node_modules/nodemon/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/nodemon/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "dev": true
-    },
-    "node_modules/nopt": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
-      "dev": true,
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/on-finished": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
-      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
-      "dependencies": {
-        "ee-first": "1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-    },
-    "node_modules/proxy-addr": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-      "dependencies": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/pstree.remy": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
-      "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
-      "dev": true
-    },
-    "node_modules/punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.10.3",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
-      "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
-      "dependencies": {
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
-      "dependencies": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dependencies": {
-        "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"
-      }
-    },
-    "node_modules/readable-stream/node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/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==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ]
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "node_modules/saslprep": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
-      "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
-      "optional": true,
-      "dependencies": {
-        "sparse-bitfield": "^3.0.3"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "dependencies": {
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "mime": "1.6.0",
-        "ms": "2.1.3",
-        "on-finished": "2.4.1",
-        "range-parser": "~1.2.1",
-        "statuses": "2.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/send/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-    },
-    "node_modules/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
-      "dependencies": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.18.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
-    },
-    "node_modules/side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/sift": {
-      "version": "16.0.0",
-      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
-      "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
-    },
-    "node_modules/simple-update-notifier": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
-      "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
-      "dev": true,
-      "dependencies": {
-        "semver": "~7.0.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/simple-update-notifier/node_modules/semver": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
-      "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
-      "engines": {
-        "node": ">= 6.0.0",
-        "npm": ">= 3.0.0"
-      }
-    },
-    "node_modules/socks": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
-      "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
-      "dependencies": {
-        "ip": "^2.0.0",
-        "smart-buffer": "^4.2.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 3.0.0"
-      }
-    },
-    "node_modules/sparse-bitfield": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
-      "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
-      "optional": true,
-      "dependencies": {
-        "memory-pager": "^1.0.2"
-      }
-    },
-    "node_modules/statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/streamsearch": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
-      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
-      "engines": {
-        "node": ">=10.0.0"
-      }
-    },
-    "node_modules/string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "node_modules/string_decoder/node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "node_modules/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,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/touch": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
-      "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
-      "dev": true,
-      "dependencies": {
-        "nopt": "~1.0.10"
-      },
-      "bin": {
-        "nodetouch": "bin/nodetouch.js"
-      }
-    },
-    "node_modules/tr46": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
-      "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
-      "dependencies": {
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
-    },
-    "node_modules/undefsafe": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
-      "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
-      "dev": true
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
-    },
-    "node_modules/utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/whatwg-url": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
-      "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
-      "dependencies": {
-        "tr46": "^3.0.0",
-        "webidl-conversions": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "engines": {
-        "node": ">=0.4"
-      }
-    }
-  },
-  "dependencies": {
-    "@types/node": {
-      "version": "18.7.13",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz",
-      "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw=="
-    },
-    "@types/webidl-conversions": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
-      "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
-    },
-    "@types/whatwg-url": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
-      "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
-      "requires": {
-        "@types/node": "*",
-        "@types/webidl-conversions": "*"
-      }
-    },
-    "abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true
-    },
-    "accepts": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
-      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
-      "requires": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      }
-    },
-    "anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-      "dev": true,
-      "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      }
-    },
-    "append-field": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
-      "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-    },
-    "bcryptjs": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
-      "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
-    },
-    "binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true
-    },
-    "body-parser": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
-      "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
-      "requires": {
-        "bytes": "3.1.2",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "on-finished": "2.4.1",
-        "qs": "6.10.3",
-        "raw-body": "2.5.1",
-        "type-is": "~1.6.18",
-        "unpipe": "1.0.0"
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "bson": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz",
-      "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==",
-      "requires": {
-        "buffer": "^5.6.0"
-      }
-    },
-    "buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "requires": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "buffer-equal-constant-time": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
-      "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
-    },
-    "buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
-    },
-    "busboy": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
-      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
-      "requires": {
-        "streamsearch": "^1.1.0"
-      }
-    },
-    "bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "chokidar": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
-      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
-      "dev": true,
-      "requires": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "fsevents": "~2.3.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      }
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "dev": true
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "content-disposition": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
-      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
-      "requires": {
-        "safe-buffer": "5.2.1"
-      }
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "cookie": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
-    },
-    "core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "denque": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
-      "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="
-    },
-    "depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
-    },
-    "destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
-    },
-    "dotenv": {
-      "version": "16.0.1",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
-      "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
-    },
-    "ecdsa-sig-formatter": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
-      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
-    },
-    "express": {
-      "version": "4.18.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
-      "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
-      "requires": {
-        "accepts": "~1.3.8",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.20.0",
-        "content-disposition": "0.5.4",
-        "content-type": "~1.0.4",
-        "cookie": "0.5.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.2.0",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.7",
-        "qs": "6.10.3",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.2.1",
-        "send": "0.18.0",
-        "serve-static": "1.15.0",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      }
-    },
-    "express-async-handler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/express-async-handler/-/express-async-handler-1.2.0.tgz",
-      "integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w=="
-    },
-    "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      }
-    },
-    "forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
-    },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "optional": true
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-    },
-    "get-intrinsic": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
-      "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.3"
-      }
-    },
-    "glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
-      "requires": {
-        "is-glob": "^4.0.1"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
-      "dev": true
-    },
-    "has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
-    },
-    "http-errors": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
-      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
-      "requires": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      }
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
-    },
-    "ignore-by-default": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
-      "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
-      "dev": true
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "ip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
-    },
-    "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=="
-    },
-    "is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "^2.0.0"
-      }
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
-    },
-    "jsonwebtoken": {
-      "version": "8.5.1",
-      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
-      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
-      "requires": {
-        "jws": "^3.2.2",
-        "lodash.includes": "^4.3.0",
-        "lodash.isboolean": "^3.0.3",
-        "lodash.isinteger": "^4.0.4",
-        "lodash.isnumber": "^3.0.3",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.isstring": "^4.0.1",
-        "lodash.once": "^4.0.0",
-        "ms": "^2.1.1",
-        "semver": "^5.6.0"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-        }
-      }
-    },
-    "jwa": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
-      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
-      "requires": {
-        "buffer-equal-constant-time": "1.0.1",
-        "ecdsa-sig-formatter": "1.0.11",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "jws": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
-      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
-      "requires": {
-        "jwa": "^1.4.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "kareem": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz",
-      "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA=="
-    },
-    "lodash.includes": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
-      "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
-    },
-    "lodash.isboolean": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
-      "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
-    },
-    "lodash.isinteger": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
-      "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
-    },
-    "lodash.isnumber": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
-      "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
-    },
-    "lodash.isplainobject": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
-    },
-    "lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
-    },
-    "lodash.once": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
-    },
-    "memory-pager": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
-      "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
-      "optional": true
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
-    },
-    "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
-    },
-    "mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
-    },
-    "mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "requires": {
-        "mime-db": "1.52.0"
-      }
-    },
-    "minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
-    },
-    "mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "requires": {
-        "minimist": "^1.2.6"
-      }
-    },
-    "mongodb": {
-      "version": "4.8.1",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.8.1.tgz",
-      "integrity": "sha512-/NyiM3Ox9AwP5zrfT9TXjRKDJbXlLaUDQ9Rg//2lbg8D2A8GXV0VidYYnA/gfdK6uwbnL4FnAflH7FbGw3TS7w==",
-      "requires": {
-        "bson": "^4.6.5",
-        "denque": "^2.0.1",
-        "mongodb-connection-string-url": "^2.5.2",
-        "saslprep": "^1.0.3",
-        "socks": "^2.6.2"
-      }
-    },
-    "mongodb-connection-string-url": {
-      "version": "2.5.3",
-      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.3.tgz",
-      "integrity": "sha512-f+/WsED+xF4B74l3k9V/XkTVj5/fxFH2o5ToKXd8Iyi5UhM+sO9u0Ape17Mvl/GkZaFtM0HQnzAG5OTmhKw+tQ==",
-      "requires": {
-        "@types/whatwg-url": "^8.2.1",
-        "whatwg-url": "^11.0.0"
-      }
-    },
-    "mongoose": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.5.3.tgz",
-      "integrity": "sha512-0L2ZOPzNQ7kcIgpdfpmVXc+/SypdhzcTlaHXYa983u1lrVp7/i3ekwHpPiTXxYBvV6FwBAsFoHI7+Ovf8tp3Mg==",
-      "requires": {
-        "bson": "^4.6.5",
-        "kareem": "2.4.1",
-        "mongodb": "4.8.1",
-        "mpath": "0.9.0",
-        "mquery": "4.0.3",
-        "ms": "2.1.3",
-        "sift": "16.0.0"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-        }
-      }
-    },
-    "mpath": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
-      "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="
-    },
-    "mquery": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
-      "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
-      "requires": {
-        "debug": "4.x"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-        }
-      }
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-    },
-    "multer": {
-      "version": "1.4.5-lts.1",
-      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
-      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
-      "requires": {
-        "append-field": "^1.0.0",
-        "busboy": "^1.0.0",
-        "concat-stream": "^1.5.2",
-        "mkdirp": "^0.5.4",
-        "object-assign": "^4.1.1",
-        "type-is": "^1.6.4",
-        "xtend": "^4.0.0"
-      }
-    },
-    "negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
-    },
-    "nodemon": {
-      "version": "2.0.19",
-      "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz",
-      "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==",
-      "dev": true,
-      "requires": {
-        "chokidar": "^3.5.2",
-        "debug": "^3.2.7",
-        "ignore-by-default": "^1.0.1",
-        "minimatch": "^3.0.4",
-        "pstree.remy": "^1.1.8",
-        "semver": "^5.7.1",
-        "simple-update-notifier": "^1.0.7",
-        "supports-color": "^5.5.0",
-        "touch": "^3.1.0",
-        "undefsafe": "^2.0.5"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "ms": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-          "dev": true
-        }
-      }
-    },
-    "nopt": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
-      "dev": true,
-      "requires": {
-        "abbrev": "1"
-      }
-    },
-    "normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
-    },
-    "object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
-    },
-    "on-finished": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
-      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
-      "requires": {
-        "ee-first": "1.1.1"
-      }
-    },
-    "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
-    },
-    "path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
-    },
-    "picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-    },
-    "proxy-addr": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-      "requires": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      }
-    },
-    "pstree.remy": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
-      "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
-      "dev": true
-    },
-    "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
-    },
-    "qs": {
-      "version": "6.10.3",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
-      "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
-      "requires": {
-        "side-channel": "^1.0.4"
-      }
-    },
-    "range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
-    },
-    "raw-body": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
-      "requires": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "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"
-      },
-      "dependencies": {
-        "safe-buffer": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        }
-      }
-    },
-    "readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
-      "requires": {
-        "picomatch": "^2.2.1"
-      }
-    },
-    "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=="
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "saslprep": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
-      "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
-      "optional": true,
-      "requires": {
-        "sparse-bitfield": "^3.0.3"
-      }
-    },
-    "semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-    },
-    "send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "mime": "1.6.0",
-        "ms": "2.1.3",
-        "on-finished": "2.4.1",
-        "range-parser": "~1.2.1",
-        "statuses": "2.0.1"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.18.0"
-      }
-    },
-    "setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
-    },
-    "side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
-    "sift": {
-      "version": "16.0.0",
-      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
-      "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
-    },
-    "simple-update-notifier": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
-      "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
-      "dev": true,
-      "requires": {
-        "semver": "~7.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
-          "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
-          "dev": true
-        }
-      }
-    },
-    "smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
-    },
-    "socks": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
-      "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
-      "requires": {
-        "ip": "^2.0.0",
-        "smart-buffer": "^4.2.0"
-      }
-    },
-    "sparse-bitfield": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
-      "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
-      "optional": true,
-      "requires": {
-        "memory-pager": "^1.0.2"
-      }
-    },
-    "statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
-    },
-    "streamsearch": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
-      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      },
-      "dependencies": {
-        "safe-buffer": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        }
-      }
-    },
-    "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"
-      }
-    },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "requires": {
-        "is-number": "^7.0.0"
-      }
-    },
-    "toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
-    },
-    "touch": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
-      "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
-      "dev": true,
-      "requires": {
-        "nopt": "~1.0.10"
-      }
-    },
-    "tr46": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
-      "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
-      "requires": {
-        "punycode": "^2.1.1"
-      }
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      }
-    },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
-    },
-    "undefsafe": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
-      "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
-      "dev": true
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
-    },
-    "webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
-    },
-    "whatwg-url": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
-      "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
-      "requires": {
-        "tr46": "^3.0.0",
-        "webidl-conversions": "^7.0.0"
-      }
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-    }
-  }
-}
Index: ckend/package.json
===================================================================
--- backend/package.json	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,25 +1,0 @@
-{
-  "name": "backend",
-  "type": "module",
-  "version": "1.0.0",
-  "description": "",
-  "main": "index.js",
-  "scripts": {
-    "start": "nodemon server.js",
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "bcryptjs": "^2.4.3",
-    "dotenv": "^16.0.1",
-    "express": "^4.18.1",
-    "express-async-handler": "^1.2.0",
-    "jsonwebtoken": "^8.5.1",
-    "mongoose": "^6.5.3",
-    "multer": "^1.4.5-lts.1"
-  },
-  "devDependencies": {
-    "nodemon": "^2.0.19"
-  }
-}
Index: ckend/routes/categoryRoutes.js
===================================================================
--- backend/routes/categoryRoutes.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,83 +1,0 @@
-import express from "express";
-import expressAsyncHandler from "express-async-handler";
-import Category from "../models/categoryModel.js";
-import SubCategory from "../models/subCategoryModel.js";
-
-const categoryRouter = express.Router();
-
-categoryRouter.post(
-  "/addCategory",
-  expressAsyncHandler(async (req, res) => {
-    const newCategory = new Category({
-      categoryName: req.body.category,
-      categorySlug: req.body.categorySlug,
-      subCategories: req.body.categories,
-    });
-    const category = await newCategory.save();
-    if (category)
-      res.status(201).send({ message: "New Category Created", category });
-    else res.status(404).send({ message: "Error creating category" });
-  })
-);
-
-categoryRouter.put(
-  "/updateCategory",
-  expressAsyncHandler(async (req, res) => {
-    const category = await Category.findOne({
-      categorySlug: req.body.category,
-    });
-
-    if (category) {
-      category.categoryName = category.categoryName;
-      category.categorySlug = category.categorySlug;
-      category.subCategories = req.body.categories;
-
-      const updatedCategory = await category.save();
-      res.send(updatedCategory);
-    } else {
-      res.status(404).send({ message: "Category Not Found" });
-    }
-  })
-);
-
-categoryRouter.get(
-  "/getCategories",
-  expressAsyncHandler(async (req, res) => {
-    const categories = await Category.find();
-    res.send(categories);
-  })
-);
-
-categoryRouter.get(
-  "/getCategory",
-  expressAsyncHandler(async (req, res) => {
-    const category = await Category.find({ categorySlug: req.query.category });
-    res.send(category);
-  })
-);
-
-categoryRouter.post(
-  "/addSubCategory",
-  expressAsyncHandler(async (req, res) => {
-    const newSubCategory = new SubCategory({
-      subCategoryName: req.body.subCategory,
-      subCategorySlug: req.body.subCategorySlug,
-    });
-    const subCategory = await newSubCategory.save();
-    if (subCategory)
-      res.status(201).send({ message: "New Category Created", subCategory });
-    else res.status(404).send({ message: "Error creating category" });
-  })
-);
-
-categoryRouter.get(
-  "/getSubCategory",
-  expressAsyncHandler(async (req, res) => {
-    const subCategory = await SubCategory.find({
-      subCategorySlug: req.query.subCategory,
-    });
-    res.send(subCategory);
-  })
-);
-
-export default categoryRouter;
Index: ckend/routes/orderRoutes.js
===================================================================
--- backend/routes/orderRoutes.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,145 +1,0 @@
-import express from "express";
-import expressAsyncHandler from "express-async-handler";
-import Order from "../models/orderModel.js";
-import bcrypt from "bcryptjs";
-import { isAuth } from "../utils.js";
-
-const orderRouter = express.Router();
-
-orderRouter.post(
-  "/",
-  isAuth,
-  expressAsyncHandler(async (req, res) => {
-    const newOrder = new Order({
-      orderItems: req.body.orderItems.map((x) => ({ ...x, product: x._id })),
-      shippingAddress: req.body.shippingAddress,
-      paymentMethod: req.body.paymentMethod,
-      itemsPrice: req.body.itemsPrice,
-      shippingPrice: req.body.shippingPrice,
-      totalPrice: req.body.totalPrice,
-      user: req.user._id,
-      isPaid: req.body.isPaid,
-      paidAt: req.body.paidAt,
-      isConfirmed: req.body.isConfirmed,
-      contactNumber: req.body.contactNumber,
-    });
-    const order = await newOrder.save();
-    res.status(201).send({ message: "New Order Created", order });
-  })
-);
-
-orderRouter.get(
-  "/mine",
-  isAuth,
-  expressAsyncHandler(async (req, res) => {
-    const orders = await Order.find({ user: req.user._id });
-    res.send(orders);
-  })
-);
-const PAGE_SIZE = 10;
-orderRouter.get(
-  "/",
-  expressAsyncHandler(async (req, res) => {
-    const { query } = req;
-    const pageSize = query.pageSize || PAGE_SIZE;
-    const page = query.page || 1;
-    const isConfirmed = query.isConfirmed || "";
-    const isShipped = query.isShipped || "";
-    const searchQuery = query.query || "";
-    const isDelivered = false;
-    const queryFilter =
-      searchQuery && searchQuery !== "all"
-        ? { _: { $regex: searchQuery, $options: "i" } }
-        : {};
-    const isConfirmedFilter =
-      isConfirmed && isConfirmed !== "all" ? { isConfirmed } : {};
-    const isShippedFilter =
-      isShipped && isShipped !== "all" ? { isShipped } : {};
-
-    const orders = await Order.find({
-      ...queryFilter,
-      ...isConfirmedFilter,
-      ...isShippedFilter,
-      ...isDelivered,
-    })
-      .skip(pageSize * (page - 1))
-      .limit(pageSize);
-    const countOrders = await Order.countDocuments({
-      ...isConfirmedFilter,
-      ...isShippedFilter,
-    });
-    res.send({
-      orders,
-      countOrders,
-      page,
-      pages: Math.ceil(countOrders / pageSize),
-    });
-    //const orders = await Order.find();
-    //res.send(orders);
-  })
-);
-
-orderRouter.get(
-  "/:id",
-  isAuth,
-  expressAsyncHandler(async (req, res) => {
-    const order = await Order.findById(req.params.id);
-    if (order) {
-      res.send(order);
-    } else {
-      res.status(404).send({ message: "Order Not Found" });
-    }
-  })
-);
-
-orderRouter.put(
-  "/action",
-  expressAsyncHandler(async (req, res) => {
-    if (req.body.isConfirmed) {
-      const order = await Order.updateOne(
-        { _id: req.body._id },
-        {
-          $set: {
-            isConfirmed: req.body.isConfirmed,
-          },
-        }
-      );
-    } else if (req.body.isShipped) {
-      const order = await Order.updateOne(
-        { _id: req.body._id },
-        {
-          $set: {
-            isShipped: req.body.isShipped,
-            shippedAt: req.body.shippedAt,
-          },
-        }
-      );
-    } else if (req.body.isDelivered && req.body.isPaid) {
-      const order = await Order.updateOne(
-        { _id: req.body._id },
-        {
-          $set: {
-            isDelivered: req.body.isDelivered,
-            deliveredAt: req.body.deliveredAt,
-            isPaid: req.body.isPaid,
-            paidAt: req.body.paidAt,
-          },
-        }
-      );
-    } else {
-      const order = await Order.updateOne(
-        { _id: req.body._id },
-        {
-          $set: {
-            isDelivered: req.body.isDelivered,
-            deliveredAt: req.body.deliveredAt,
-          },
-        }
-      );
-    }
-
-    res.status(200).send({ message: "Succesful" });
-  })
-);
-
-export default orderRouter;
Index: ckend/routes/productRoutes.js
===================================================================
--- backend/routes/productRoutes.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,225 +1,0 @@
-import express, { query } from "express";
-import Product from "../models/productModel.js";
-import multer from "multer";
-import expressAsyncHandler from "express-async-handler";
-import userRouter from "./userRoutes.js";
-
-const productRouter = express.Router();
-
-const storage = multer.diskStorage({
-  destination: (req, file, callback) => {
-    callback(null, "../frontend/public/uploads/");
-  },
-  filename: (req, file, callback) => {
-    callback(null, file.originalname);
-  },
-});
-
-const upload = multer({ storage: storage });
-const multipleUpload = upload.fields([
-  { name: "image", maxCount: 1 },
-  { name: "sideImage", maxCount: 1 },
-  { name: "sideImage2", maxCount: 1 },
-  { name: "dimension", maxCount: 1 },
-  { name: "scheme", maxCount: 1 },
-]);
-productRouter.post(
-  "/add",
-  multipleUpload,
-  expressAsyncHandler(async (req, res) => {
-    const newProduct = new Product({
-      name: req.body.name,
-      slug: req.body.slug,
-      image: `/uploads/${req.files.image[0].originalname}`,
-      sideImage: `/uploads/${req.files.sideImage[0].originalname}`,
-      sideImage2: `/uploads/${req.files.sideImage2[0].originalname}`,
-      dimension: `/uploads/${req.files.dimension[0].originalname}`,
-      scheme: `/uploads/${req.files.scheme[0].originalname}`,
-      category: req.body.category,
-      subCategory: req.body.subCategory,
-      description: req.body.description,
-      price: req.body.price,
-      priceMontaza: req.body.priceMontaza,
-      countInStock: req.body.countInStock,
-      height: req.body.H,
-      width: req.body.W,
-      length: req.body.L,
-    });
-
-    const product = await newProduct.save();
-    if (product)
-      res.status(201).send({ message: "New Product Created", product });
-    else res.status(404).send({ message: "Error creating product" });
-  })
-);
-
-const PAGE_SIZE = 7;
-
-productRouter.get(
-  "/search",
-  expressAsyncHandler(async (req, res) => {
-    const { query } = req;
-    const pageSize = query.pageSize || PAGE_SIZE;
-    const page = query.page || 1;
-    const searchQuery = query.text;
-    console.log("HEEEY: " + searchQuery);
-    const queryFilter =
-      searchQuery && searchQuery !== "all"
-        ? { name: { $regex: searchQuery, $options: "i" } }
-        : {};
-    const descriptionFilter =
-      searchQuery && searchQuery !== "all"
-        ? { description: { $regex: searchQuery, $options: "i" } }
-        : {};
-    const slug =
-      searchQuery && searchQuery !== "all"
-        ? { slug: { $regex: searchQuery, $options: "i" } }
-        : {};
-    const products = await Product.find({
-      $or: [
-        { name: { $regex: searchQuery, $options: "i" } },
-        { slug: { $regex: searchQuery, $options: "i" } },
-        { description: { $regex: searchQuery, $options: "i" } },
-      ],
-    })
-      .skip(pageSize * (page - 1))
-      .limit(pageSize);
-    const countProducts = await Product.countDocuments({
-      $or: [
-        { name: { $regex: searchQuery, $options: "i" } },
-        { slug: { $regex: searchQuery, $options: "i" } },
-        { description: { $regex: searchQuery, $options: "i" } },
-      ],
-    });
-    res.send({
-      products,
-      countProducts,
-      page,
-      pages: Math.ceil(countProducts / pageSize),
-    });
-  })
-);
-
-productRouter.get(
-  "/",
-  expressAsyncHandler(async (req, res) => {
-    const { query } = req;
-    const pageSize = query.pageSize || PAGE_SIZE;
-    const page = query.page || 1;
-    const category = query.category || "";
-    const subCategory = query.subCategory || "";
-    const order = query.order || "";
-    const searchQuery = query.query || "";
-    const HF = query.HF || 0;
-    const HT = query.HT || 1000;
-    const WF = query.WF || 0;
-    const WT = query.WT || 1000;
-    const LF = query.LF || 0;
-    const LT = query.LT || 1000;
-
-    const queryFilter =
-      searchQuery && searchQuery !== "all"
-        ? { name: { $regex: searchQuery, $options: "i" } }
-        : {};
-    const categoryFilter = category && category !== "all" ? { category } : {};
-    const subCategoryFilter =
-      subCategory && subCategory !== "all" ? { subCategory } : {};
-    const sortOrder =
-      order === "lowFirst"
-        ? { price: 1 }
-        : order === "highFirst"
-        ? { price: -1 }
-        : { createdAt: -1 };
-    const products = await Product.find({
-      ...queryFilter,
-      ...categoryFilter,
-      ...subCategoryFilter,
-      $and: [
-        { height: { $gte: HF } },
-        { height: { $lte: HT } },
-        { width: { $gte: WF } },
-        { width: { $lte: WT } },
-        { length: { $gte: LF } },
-        { length: { $lte: LT } },
-      ],
-    })
-      .sort(sortOrder)
-      .skip(pageSize * (page - 1))
-      .limit(pageSize);
-
-    const countProducts = await Product.countDocuments({
-      ...queryFilter,
-      ...categoryFilter,
-      ...subCategoryFilter,
-    });
-    res.send({
-      products,
-      countProducts,
-      page,
-      pages: Math.ceil(countProducts / pageSize),
-    });
-  })
-);
-/*
-productRouter.get("/", async (req, res) => {
-  const products = await Product.find();
-  res.send(products);
-});
-*/
-productRouter.get("/slug/:slug", async (req, res) => {
-  const product = await Product.findOne({ slug: req.params.slug });
-  if (product) {
-    res.send(product);
-  } else {
-    res.status(404).send({ message: "Продуктот не е пронајден" });
-  }
-});
-
-productRouter.get("/:id", async (req, res) => {
-  const product = await Product.findById(req.params.id);
-  if (product) {
-    res.send(product);
-  } else {
-    res.status(404).send({ message: "Продуктот не е пронајден" });
-  }
-});
-
-productRouter.put(
-  "/edit",
-  expressAsyncHandler(async (req, res) => {
-    const product = await Product.updateOne(
-      { slug: req.body.slug },
-      {
-        $set: {
-          name: req.body.name,
-          category: req.body.category,
-          slug: req.body.slug,
-          subCategory: req.body.subCategory,
-          description: req.body.description,
-          price: req.body.price,
-          priceMontaza: req.body.priceMontaza,
-          countInStock: req.body.countInStock,
-        },
-      }
-    );
-    /*
-    if (product) {
-      product.name = req.body.name || product.name;
-      product.slug = req.body.slug || product.slug;
-      product.price = req.body.price || product.price;
-      product.category = req.body.category || product.category;
-      product.subCategory = req.body.subCategory || product.subCategory;
-      product.description = req.body.description || product.description;
-      product.priceMontaza = req.body.priceMontaza || product.priceMontaza;
-      product.countInStock = req.body.countInStock || product.countInStock;
-      product.image = product.image;
-      product.sideImage = product.sideImage2;
-      product.sideImage2 = product.sideImage2;
-
-      const updatedProduct = await product.save();*/
-    res.status(200).send({ message: "Succesful" });
-    //else {
-    //res.status(404).send({ message: "Product Not Found" });
-  })
-);
-export default productRouter;
Index: ckend/routes/seedRoutes.js
===================================================================
--- backend/routes/seedRoutes.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import express from "express";
-import Product from "../models/productModel.js";
-import data from "../data.js";
-import User from "../models/userModel.js";
-
-const seedRouter = express.Router();
-
-seedRouter.get("/", async (req, res) => {
-  await Product.remove({});
-  const createdProducts = await Product.insertMany(data.products);
-  await User.remove({});
-  const createdUsers = await User.insertMany(data.users);
-  res.send({ createdProducts, createdUsers });
-});
-
-export default seedRouter;
Index: ckend/routes/userRoutes.js
===================================================================
--- backend/routes/userRoutes.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,79 +1,0 @@
-import express from "express";
-import expressAsyncHandler from "express-async-handler";
-import User from "../models/userModel.js";
-import bcrypt from "bcryptjs";
-import { generateToken, isAuth } from "../utils.js";
-
-const userRouter = express.Router();
-
-userRouter.post(
-  "/signin",
-  expressAsyncHandler(async (req, res) => {
-    const user = await User.findOne({ email: req.body.email });
-    if (user) {
-      if (bcrypt.compareSync(req.body.password, user.password)) {
-        res.send({
-          _id: user.id,
-          name: user.name,
-          contact: user.contact,
-          email: user.email,
-          isAdmin: user.isAdmin,
-          token: generateToken(user),
-        });
-        return;
-      }
-    }
-    res.status(401).send({ message: "Invalid email or password" });
-  })
-);
-
-userRouter.post(
-  "/signup",
-  expressAsyncHandler(async (req, res) => {
-    const newUser = new User({
-      name: req.body.name,
-      contact: req.body.contact,
-      email: req.body.email,
-      password: bcrypt.hashSync(req.body.password),
-    });
-    const user = await newUser.save();
-    res.send({
-      _id: user.id,
-      name: user.name,
-      contact: user.contact,
-      email: user.email,
-      isAdmin: user.isAdmin,
-      token: generateToken(user),
-    });
-  })
-);
-
-userRouter.put(
-  "/profile",
-  isAuth,
-  expressAsyncHandler(async (req, res) => {
-    const user = await User.findById(req.user._id);
-    if (user) {
-      user.name = req.body.name || user.name;
-      user.contact = req.body.contact || user.contact;
-      user.email = req.body.email || user.email;
-      if (req.body.password) {
-        user.password = bcrypt.hashSync(req.body.password, 8);
-      }
-
-      const updatedUser = await user.save();
-      res.send({
-        _id: updatedUser._id,
-        name: updatedUser.name,
-        contact: updatedUser.contact,
-        email: updatedUser.email,
-        isAdmin: updatedUser.isAdmin,
-        token: generateToken(updatedUser),
-      });
-    } else {
-      res.status(404).send({ message: "User Not Found" });
-    }
-  })
-);
-
-export default userRouter;
Index: ckend/server.js
===================================================================
--- backend/server.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,40 +1,0 @@
-import express from "express";
-import data from "./data.js";
-import mongoose from "mongoose";
-import dotenv from "dotenv";
-import seedRouter from "./routes/seedRoutes.js";
-import productRouter from "./routes/productRoutes.js";
-import userRouter from "./routes/userRoutes.js";
-import orderRouter from "./routes/orderRoutes.js";
-import categoryRouter from "./routes/categoryRoutes.js";
-
-dotenv.config();
-
-mongoose
-  .connect(process.env.MONGODB_URI)
-  .then(() => {
-    console.log("connected to db");
-  })
-  .catch((err) => {
-    console.log(err.message);
-  });
-
-const app = express();
-
-app.use(express.json());
-app.use(express.urlencoded({ extended: true }));
-
-app.use("/api/seed", seedRouter);
-app.use("/api/products", productRouter);
-app.use("/api/users", userRouter);
-app.use("/api/orders", orderRouter);
-app.use("/api/category", categoryRouter);
-
-app.use((err, req, res, next) => {
-  res.status(500).send({ message: err.message });
-});
-
-const port = process.env.PORT || 5000;
-app.listen(port, () => {
-  console.log(`serve at http://localhost:${port}`);
-});
Index: ckend/utils.js
===================================================================
--- backend/utils.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import jwt from "jsonwebtoken";
-export const generateToken = (user) => {
-  return jwt.sign(
-    { _id: user.id, name: user.name, email: user.email, isAdmin: user.isAdmin },
-    process.env.JWT_SECRET,
-    { expiresIn: "30d" }
-  );
-};
-
-export const isAuth = (req, res, next) => {
-  const authorization = req.headers.authorization;
-  if (authorization) {
-    const token = authorization.slice(7, authorization.length);
-    jwt.verify(token, process.env.JWT_SECRET, (err, decode) => {
-      if (err) {
-        res.status(401).send({ message: "Invalid Token" });
-      } else {
-        req.user = decode;
-        next();
-      }
-    });
-  } else {
-    res.status(401).send({ message: "No Token" });
-  }
-};
Index: frontend/package-lock.json
===================================================================
--- frontend/package-lock.json	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/package-lock.json	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -9,27 +9,10 @@
       "version": "0.1.0",
       "dependencies": {
-        "@emotion/react": "^11.10.0",
-        "@emotion/styled": "^11.10.0",
-        "@fortawesome/fontawesome-svg-core": "^6.1.2",
-        "@fortawesome/free-regular-svg-icons": "^6.1.2",
-        "@fortawesome/free-solid-svg-icons": "^6.1.2",
-        "@mui/icons-material": "^5.8.4",
-        "@mui/material": "^5.10.0",
         "@testing-library/jest-dom": "^5.16.5",
         "@testing-library/react": "^13.3.0",
         "@testing-library/user-event": "^13.5.0",
-        "axios": "^0.27.2",
-        "bootstrap": "^5.2.0",
-        "font-awesome": "^4.7.0",
-        "jquery": "^3.6.1",
         "react": "^18.2.0",
-        "react-bootstrap": "^2.5.0",
         "react-dom": "^18.2.0",
-        "react-helmet-async": "^1.3.0",
-        "react-router-bootstrap": "^0.26.2",
-        "react-router-dom": "^6.3.0",
         "react-scripts": "5.0.1",
-        "react-toastify": "^9.0.8",
-        "slugify": "^1.6.5",
         "web-vitals": "^2.1.4"
       }
@@ -2136,158 +2119,4 @@
       }
     },
-    "node_modules/@emotion/babel-plugin": {
-      "version": "11.10.0",
-      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz",
-      "integrity": "sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA==",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.16.7",
-        "@babel/plugin-syntax-jsx": "^7.17.12",
-        "@babel/runtime": "^7.18.3",
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/serialize": "^1.1.0",
-        "babel-plugin-macros": "^3.1.0",
-        "convert-source-map": "^1.5.0",
-        "escape-string-regexp": "^4.0.0",
-        "find-root": "^1.1.0",
-        "source-map": "^0.5.7",
-        "stylis": "4.0.13"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@emotion/babel-plugin/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@emotion/cache": {
-      "version": "11.10.1",
-      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz",
-      "integrity": "sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A==",
-      "dependencies": {
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/sheet": "^1.2.0",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "stylis": "4.0.13"
-      }
-    },
-    "node_modules/@emotion/hash": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
-      "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
-    },
-    "node_modules/@emotion/is-prop-valid": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
-      "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
-      "dependencies": {
-        "@emotion/memoize": "^0.8.0"
-      }
-    },
-    "node_modules/@emotion/memoize": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
-      "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
-    },
-    "node_modules/@emotion/react": {
-      "version": "11.10.0",
-      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.0.tgz",
-      "integrity": "sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==",
-      "dependencies": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.0",
-        "@emotion/cache": "^11.10.0",
-        "@emotion/serialize": "^1.1.0",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "hoist-non-react-statics": "^3.3.1"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "react": ">=16.8.0"
-      },
-      "peerDependenciesMeta": {
-        "@babel/core": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@emotion/serialize": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz",
-      "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==",
-      "dependencies": {
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/unitless": "^0.8.0",
-        "@emotion/utils": "^1.2.0",
-        "csstype": "^3.0.2"
-      }
-    },
-    "node_modules/@emotion/sheet": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz",
-      "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w=="
-    },
-    "node_modules/@emotion/styled": {
-      "version": "11.10.0",
-      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.0.tgz",
-      "integrity": "sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==",
-      "dependencies": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.0",
-        "@emotion/is-prop-valid": "^1.2.0",
-        "@emotion/serialize": "^1.1.0",
-        "@emotion/utils": "^1.2.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0",
-        "@emotion/react": "^11.0.0-rc.0",
-        "react": ">=16.8.0"
-      },
-      "peerDependenciesMeta": {
-        "@babel/core": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@emotion/unitless": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
-      "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
-    },
-    "node_modules/@emotion/utils": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
-      "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
-    },
-    "node_modules/@emotion/weak-memoize": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
-      "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
-    },
     "node_modules/@eslint/eslintrc": {
       "version": "1.3.0",
@@ -2348,49 +2177,4 @@
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@fortawesome/fontawesome-common-types": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.2.tgz",
-      "integrity": "sha512-wBaAPGz1Awxg05e0PBRkDRuTsy4B3dpBm+zreTTyd9TH4uUM27cAL4xWyWR0rLJCrRwzVsQ4hF3FvM6rqydKPA==",
-      "hasInstallScript": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@fortawesome/fontawesome-svg-core": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.2.tgz",
-      "integrity": "sha512-853G/Htp0BOdXnPoeCPTjFrVwyrJHpe8MhjB/DYE9XjwhnNDfuBCd3aKc2YUYbEfHEcBws4UAA0kA9dymZKGjA==",
-      "hasInstallScript": true,
-      "dependencies": {
-        "@fortawesome/fontawesome-common-types": "6.1.2"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@fortawesome/free-regular-svg-icons": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.1.2.tgz",
-      "integrity": "sha512-xR4hA+tAwsaTHGfb+25H1gVU/aJ0Rzu+xIUfnyrhaL13yNQ7TWiI2RvzniAaB+VGHDU2a+Pk96Ve+pkN3/+TTQ==",
-      "hasInstallScript": true,
-      "dependencies": {
-        "@fortawesome/fontawesome-common-types": "6.1.2"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@fortawesome/free-solid-svg-icons": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.2.tgz",
-      "integrity": "sha512-lTgZz+cMpzjkHmCwOG3E1ilUZrnINYdqMmrkv30EC3XbRsGlbIOL8H9LaNp5SV4g0pNJDfQ4EdTWWaMvdwyLiQ==",
-      "hasInstallScript": true,
-      "dependencies": {
-        "@fortawesome/fontawesome-common-types": "6.1.2"
-      },
-      "engines": {
-        "node": ">=6"
       }
     },
@@ -3154,250 +2938,4 @@
       "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
     },
-    "node_modules/@mui/base": {
-      "version": "5.0.0-alpha.92",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.92.tgz",
-      "integrity": "sha512-ZgnSLrTXL4iUdLQhjp01dAOTQPQlnwrqjZRwDT3E6LZXEYn6cMv1MY6LZkWcF/zxrUnyasnsyMAgZ5d8AXS7bA==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@emotion/is-prop-valid": "^1.1.3",
-        "@mui/types": "^7.1.5",
-        "@mui/utils": "^5.9.3",
-        "@popperjs/core": "^2.11.5",
-        "clsx": "^1.2.1",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0",
-        "react-dom": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/base/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/@mui/icons-material": {
-      "version": "5.8.4",
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz",
-      "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@mui/material": "^5.0.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/material": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.0.tgz",
-      "integrity": "sha512-MSEzkE2vhpM37m8Gh3+TcZCWL70p+MxzNvS8FHugBB6YZpafhBFmFKX7/pYJ2kVD87PpUhNR4szWub7/ohE02Q==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@mui/base": "5.0.0-alpha.92",
-        "@mui/system": "^5.10.0",
-        "@mui/types": "^7.1.5",
-        "@mui/utils": "^5.9.3",
-        "@types/react-transition-group": "^4.4.5",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.0",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0",
-        "react-transition-group": "^4.4.5"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@emotion/react": "^11.5.0",
-        "@emotion/styled": "^11.3.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0",
-        "react-dom": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@emotion/react": {
-          "optional": true
-        },
-        "@emotion/styled": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/material/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
-    "node_modules/@mui/private-theming": {
-      "version": "5.9.3",
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.3.tgz",
-      "integrity": "sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@mui/utils": "^5.9.3",
-        "prop-types": "^15.8.1"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/styled-engine": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.0.tgz",
-      "integrity": "sha512-V0MmOx7KBDomDYg2/dRItVsvrpHpd51uZZiNqeuXiZruUJ1vPwtxztpvtSjX/xKvIxN7C0mxf8jmuwVUn6uaEA==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@emotion/cache": "^11.9.3",
-        "csstype": "^3.1.0",
-        "prop-types": "^15.8.1"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@emotion/react": "^11.4.1",
-        "@emotion/styled": "^11.3.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@emotion/react": {
-          "optional": true
-        },
-        "@emotion/styled": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/system": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.0.tgz",
-      "integrity": "sha512-HNu3LdA+37cWqgJBEhOF4F5LX4WVmvg6SoHRfajRO0neKXLdooibMP3W1bhSd27QcPxyMUmvY9/Dlp9znDeCRw==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@mui/private-theming": "^5.9.3",
-        "@mui/styled-engine": "^5.10.0",
-        "@mui/types": "^7.1.5",
-        "@mui/utils": "^5.9.3",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.0",
-        "prop-types": "^15.8.1"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@emotion/react": "^11.5.0",
-        "@emotion/styled": "^11.3.0",
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@emotion/react": {
-          "optional": true
-        },
-        "@emotion/styled": {
-          "optional": true
-        },
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/types": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz",
-      "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==",
-      "peerDependencies": {
-        "@types/react": "*"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@mui/utils": {
-      "version": "5.9.3",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.9.3.tgz",
-      "integrity": "sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@types/prop-types": "^15.7.5",
-        "@types/react-is": "^16.7.1 || ^17.0.0",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "react": "^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/@mui/utils/node_modules/react-is": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
@@ -3481,55 +3019,4 @@
       }
     },
-    "node_modules/@popperjs/core": {
-      "version": "2.11.6",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
-      "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/popperjs"
-      }
-    },
-    "node_modules/@react-aria/ssr": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.3.0.tgz",
-      "integrity": "sha512-yNqUDuOVZIUGP81R87BJVi/ZUZp/nYOBXbPsRe7oltJOfErQZD+UezMpw4vM2KRz18cURffvmC8tJ6JTeyDtaQ==",
-      "dependencies": {
-        "@babel/runtime": "^7.6.2"
-      },
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
-      }
-    },
-    "node_modules/@restart/hooks": {
-      "version": "0.4.7",
-      "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.7.tgz",
-      "integrity": "sha512-ZbjlEHcG+FQtpDPHd7i4FzNNvJf2enAwZfJbpM8CW7BhmOAbsHpZe3tsHwfQUrBuyrxWqPYp2x5UMnilWcY22A==",
-      "dependencies": {
-        "dequal": "^2.0.2"
-      },
-      "peerDependencies": {
-        "react": ">=16.8.0"
-      }
-    },
-    "node_modules/@restart/ui": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.3.1.tgz",
-      "integrity": "sha512-MYvMs2eeZTHu2dBJHOXKx72vxzEZeWbZx2z1QjeXq62iYjpjIyukBC2ZEy8x+sb9Gl0AiOiHkPXrl1wn95aOGQ==",
-      "dependencies": {
-        "@babel/runtime": "^7.18.3",
-        "@popperjs/core": "^2.11.5",
-        "@react-aria/ssr": "^3.2.0",
-        "@restart/hooks": "^0.4.7",
-        "@types/warning": "^3.0.0",
-        "dequal": "^2.0.2",
-        "dom-helpers": "^5.2.0",
-        "uncontrollable": "^7.2.1",
-        "warning": "^4.0.3"
-      },
-      "peerDependencies": {
-        "react": ">=16.14.0",
-        "react-dom": ">=16.14.0"
-      }
-    },
     "node_modules/@rollup/plugin-babel": {
       "version": "5.3.1",
@@ -4455,20 +3942,4 @@
       }
     },
-    "node_modules/@types/react-is": {
-      "version": "17.0.3",
-      "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
-      "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
-      "dependencies": {
-        "@types/react": "*"
-      }
-    },
-    "node_modules/@types/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
-      "dependencies": {
-        "@types/react": "*"
-      }
-    },
     "node_modules/@types/resolve": {
       "version": "1.17.1",
@@ -4531,9 +4002,4 @@
       "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz",
       "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg=="
-    },
-    "node_modules/@types/warning": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
-      "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
     },
     "node_modules/@types/ws": {
@@ -5326,26 +4792,4 @@
       "engines": {
         "node": ">=4"
-      }
-    },
-    "node_modules/axios": {
-      "version": "0.27.2",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
-      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
-      "dependencies": {
-        "follow-redirects": "^1.14.9",
-        "form-data": "^4.0.0"
-      }
-    },
-    "node_modules/axios/node_modules/form-data": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 6"
       }
     },
@@ -5759,22 +5203,4 @@
       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
     },
-    "node_modules/bootstrap": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz",
-      "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/twbs"
-        },
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/bootstrap"
-        }
-      ],
-      "peerDependencies": {
-        "@popperjs/core": "^2.11.5"
-      }
-    },
     "node_modules/brace-expansion": {
       "version": "1.1.11",
@@ -6024,9 +5450,4 @@
       "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA=="
     },
-    "node_modules/classnames": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
-      "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
-    },
     "node_modules/clean-css": {
       "version": "5.3.1",
@@ -6056,12 +5477,4 @@
         "strip-ansi": "^6.0.0",
         "wrap-ansi": "^7.0.0"
-      }
-    },
-    "node_modules/clsx": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-      "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
-      "engines": {
-        "node": ">=6"
       }
     },
@@ -6854,12 +6267,4 @@
       }
     },
-    "node_modules/dequal": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/destroy": {
       "version": "1.2.0",
@@ -6996,13 +6401,4 @@
       "dependencies": {
         "utila": "~0.4"
-      }
-    },
-    "node_modules/dom-helpers": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
-      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
-      "dependencies": {
-        "@babel/runtime": "^7.8.7",
-        "csstype": "^3.0.2"
       }
     },
@@ -8371,9 +7767,4 @@
       }
     },
-    "node_modules/find-root": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
-      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
-    },
     "node_modules/find-up": {
       "version": "5.0.0",
@@ -8425,12 +7816,4 @@
           "optional": true
         }
-      }
-    },
-    "node_modules/font-awesome": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
-      "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==",
-      "engines": {
-        "node": ">=0.10.3"
       }
     },
@@ -8973,25 +8356,4 @@
       }
     },
-    "node_modules/history": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
-      "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
-      "dependencies": {
-        "@babel/runtime": "^7.7.6"
-      }
-    },
-    "node_modules/hoist-non-react-statics": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-      "dependencies": {
-        "react-is": "^16.7.0"
-      }
-    },
-    "node_modules/hoist-non-react-statics/node_modules/react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-    },
     "node_modules/hoopy": {
       "version": "0.1.4",
@@ -9352,12 +8714,4 @@
       "engines": {
         "node": ">= 0.4"
-      }
-    },
-    "node_modules/invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "dependencies": {
-        "loose-envify": "^1.0.0"
       }
     },
@@ -11730,9 +11084,4 @@
         "url": "https://github.com/chalk/supports-color?sponsor=1"
       }
-    },
-    "node_modules/jquery": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
-      "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw=="
     },
     "node_modules/js-tokens": {
@@ -14178,21 +13527,4 @@
       }
     },
-    "node_modules/prop-types-extra": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
-      "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
-      "dependencies": {
-        "react-is": "^16.3.2",
-        "warning": "^4.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=0.14.0"
-      }
-    },
-    "node_modules/prop-types-extra/node_modules/react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-    },
     "node_modules/prop-types/node_modules/react-is": {
       "version": "16.13.1",
@@ -14368,33 +13700,4 @@
       "engines": {
         "node": ">=14"
-      }
-    },
-    "node_modules/react-bootstrap": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.5.0.tgz",
-      "integrity": "sha512-j/aLR+okzbYk61TM3eDOU1NqOqnUdwyVrF+ojoCRUxPdzc2R0xXvqyRsjSoyRoCo7n82Fs/LWjPCin/QJNdwvA==",
-      "dependencies": {
-        "@babel/runtime": "^7.17.2",
-        "@restart/hooks": "^0.4.6",
-        "@restart/ui": "^1.3.1",
-        "@types/react-transition-group": "^4.4.4",
-        "classnames": "^2.3.1",
-        "dom-helpers": "^5.2.1",
-        "invariant": "^2.2.4",
-        "prop-types": "^15.8.1",
-        "prop-types-extra": "^1.1.0",
-        "react-transition-group": "^4.4.2",
-        "uncontrollable": "^7.2.1",
-        "warning": "^4.0.3"
-      },
-      "peerDependencies": {
-        "@types/react": ">=16.14.8",
-        "react": ">=16.14.0",
-        "react-dom": ">=16.14.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
       }
     },
@@ -14533,25 +13836,4 @@
       "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
     },
-    "node_modules/react-fast-compare": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
-      "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
-    },
-    "node_modules/react-helmet-async": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz",
-      "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==",
-      "dependencies": {
-        "@babel/runtime": "^7.12.5",
-        "invariant": "^2.2.4",
-        "prop-types": "^15.7.2",
-        "react-fast-compare": "^3.2.0",
-        "shallowequal": "^1.1.0"
-      },
-      "peerDependencies": {
-        "react": "^16.6.0 || ^17.0.0 || ^18.0.0",
-        "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0"
-      }
-    },
     "node_modules/react-is": {
       "version": "17.0.2",
@@ -14559,9 +13841,4 @@
       "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
     },
-    "node_modules/react-lifecycles-compat": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
-      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
-    },
     "node_modules/react-refresh": {
       "version": "0.11.0",
@@ -14570,40 +13847,4 @@
       "engines": {
         "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-router": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
-      "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
-      "dependencies": {
-        "history": "^5.2.0"
-      },
-      "peerDependencies": {
-        "react": ">=16.8"
-      }
-    },
-    "node_modules/react-router-bootstrap": {
-      "version": "0.26.2",
-      "resolved": "https://registry.npmjs.org/react-router-bootstrap/-/react-router-bootstrap-0.26.2.tgz",
-      "integrity": "sha512-YlpI9Xi+Uqp6zFAUO8D/wu6P8mr1ujqq+0V5MhJG1kx9dr/95fAMoGk4J+/CsysOkwtR3tYSac4DDWmHwXvC8w==",
-      "dependencies": {
-        "prop-types": "^15.7.2"
-      },
-      "peerDependencies": {
-        "react": ">=16.13.1",
-        "react-router-dom": ">=6.0.0"
-      }
-    },
-    "node_modules/react-router-dom": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
-      "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
-      "dependencies": {
-        "history": "^5.2.0",
-        "react-router": "6.3.0"
-      },
-      "peerDependencies": {
-        "react": ">=16.8",
-        "react-dom": ">=16.8"
       }
     },
@@ -14680,31 +13921,4 @@
       }
     },
-    "node_modules/react-toastify": {
-      "version": "9.0.8",
-      "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.0.8.tgz",
-      "integrity": "sha512-EwM+teWt49HSHx+67qI08yLAW1zAsBxCXLCsUfxHYv1W7/R3ZLhrqKalh7j+kjgPna1h5LQMSMwns4tB4ww2yQ==",
-      "dependencies": {
-        "clsx": "^1.1.1"
-      },
-      "peerDependencies": {
-        "react": ">=16",
-        "react-dom": ">=16"
-      }
-    },
-    "node_modules/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
-      "dependencies": {
-        "@babel/runtime": "^7.5.5",
-        "dom-helpers": "^5.0.1",
-        "loose-envify": "^1.4.0",
-        "prop-types": "^15.6.2"
-      },
-      "peerDependencies": {
-        "react": ">=16.6.0",
-        "react-dom": ">=16.6.0"
-      }
-    },
     "node_modules/read-cache": {
       "version": "1.0.0",
@@ -15396,9 +14610,4 @@
       "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
     },
-    "node_modules/shallowequal": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
-      "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
-    },
     "node_modules/shebang-command": {
       "version": "2.0.0",
@@ -15454,12 +14663,4 @@
       "engines": {
         "node": ">=8"
-      }
-    },
-    "node_modules/slugify": {
-      "version": "1.6.5",
-      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz",
-      "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==",
-      "engines": {
-        "node": ">=8.0.0"
       }
     },
@@ -15813,9 +15014,4 @@
         "postcss": "^8.2.15"
       }
-    },
-    "node_modules/stylis": {
-      "version": "4.0.13",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
-      "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
     },
     "node_modules/supports-color": {
@@ -16348,18 +15544,4 @@
       }
     },
-    "node_modules/uncontrollable": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
-      "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
-      "dependencies": {
-        "@babel/runtime": "^7.6.3",
-        "@types/react": ">=16.9.11",
-        "invariant": "^2.2.4",
-        "react-lifecycles-compat": "^3.0.4"
-      },
-      "peerDependencies": {
-        "react": ">=15.0.0"
-      }
-    },
     "node_modules/unicode-canonical-property-names-ecmascript": {
       "version": "2.0.0",
@@ -16563,12 +15745,4 @@
       "dependencies": {
         "makeerror": "1.0.12"
-      }
-    },
-    "node_modules/warning": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
-      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
-      "dependencies": {
-        "loose-envify": "^1.0.0"
       }
     },
@@ -18834,123 +18008,4 @@
       "requires": {}
     },
-    "@emotion/babel-plugin": {
-      "version": "11.10.0",
-      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz",
-      "integrity": "sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA==",
-      "requires": {
-        "@babel/helper-module-imports": "^7.16.7",
-        "@babel/plugin-syntax-jsx": "^7.17.12",
-        "@babel/runtime": "^7.18.3",
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/serialize": "^1.1.0",
-        "babel-plugin-macros": "^3.1.0",
-        "convert-source-map": "^1.5.0",
-        "escape-string-regexp": "^4.0.0",
-        "find-root": "^1.1.0",
-        "source-map": "^0.5.7",
-        "stylis": "4.0.13"
-      },
-      "dependencies": {
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
-        }
-      }
-    },
-    "@emotion/cache": {
-      "version": "11.10.1",
-      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz",
-      "integrity": "sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A==",
-      "requires": {
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/sheet": "^1.2.0",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "stylis": "4.0.13"
-      }
-    },
-    "@emotion/hash": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
-      "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
-    },
-    "@emotion/is-prop-valid": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
-      "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
-      "requires": {
-        "@emotion/memoize": "^0.8.0"
-      }
-    },
-    "@emotion/memoize": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
-      "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
-    },
-    "@emotion/react": {
-      "version": "11.10.0",
-      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.0.tgz",
-      "integrity": "sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==",
-      "requires": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.0",
-        "@emotion/cache": "^11.10.0",
-        "@emotion/serialize": "^1.1.0",
-        "@emotion/utils": "^1.2.0",
-        "@emotion/weak-memoize": "^0.3.0",
-        "hoist-non-react-statics": "^3.3.1"
-      }
-    },
-    "@emotion/serialize": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz",
-      "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==",
-      "requires": {
-        "@emotion/hash": "^0.9.0",
-        "@emotion/memoize": "^0.8.0",
-        "@emotion/unitless": "^0.8.0",
-        "@emotion/utils": "^1.2.0",
-        "csstype": "^3.0.2"
-      }
-    },
-    "@emotion/sheet": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz",
-      "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w=="
-    },
-    "@emotion/styled": {
-      "version": "11.10.0",
-      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.0.tgz",
-      "integrity": "sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==",
-      "requires": {
-        "@babel/runtime": "^7.18.3",
-        "@emotion/babel-plugin": "^11.10.0",
-        "@emotion/is-prop-valid": "^1.2.0",
-        "@emotion/serialize": "^1.1.0",
-        "@emotion/utils": "^1.2.0"
-      }
-    },
-    "@emotion/unitless": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
-      "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
-    },
-    "@emotion/utils": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
-      "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
-    },
-    "@emotion/weak-memoize": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
-      "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
-    },
     "@eslint/eslintrc": {
       "version": "1.3.0",
@@ -18995,33 +18050,4 @@
           "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
         }
-      }
-    },
-    "@fortawesome/fontawesome-common-types": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.2.tgz",
-      "integrity": "sha512-wBaAPGz1Awxg05e0PBRkDRuTsy4B3dpBm+zreTTyd9TH4uUM27cAL4xWyWR0rLJCrRwzVsQ4hF3FvM6rqydKPA=="
-    },
-    "@fortawesome/fontawesome-svg-core": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.2.tgz",
-      "integrity": "sha512-853G/Htp0BOdXnPoeCPTjFrVwyrJHpe8MhjB/DYE9XjwhnNDfuBCd3aKc2YUYbEfHEcBws4UAA0kA9dymZKGjA==",
-      "requires": {
-        "@fortawesome/fontawesome-common-types": "6.1.2"
-      }
-    },
-    "@fortawesome/free-regular-svg-icons": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.1.2.tgz",
-      "integrity": "sha512-xR4hA+tAwsaTHGfb+25H1gVU/aJ0Rzu+xIUfnyrhaL13yNQ7TWiI2RvzniAaB+VGHDU2a+Pk96Ve+pkN3/+TTQ==",
-      "requires": {
-        "@fortawesome/fontawesome-common-types": "6.1.2"
-      }
-    },
-    "@fortawesome/free-solid-svg-icons": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.2.tgz",
-      "integrity": "sha512-lTgZz+cMpzjkHmCwOG3E1ilUZrnINYdqMmrkv30EC3XbRsGlbIOL8H9LaNp5SV4g0pNJDfQ4EdTWWaMvdwyLiQ==",
-      "requires": {
-        "@fortawesome/fontawesome-common-types": "6.1.2"
       }
     },
@@ -19592,120 +18618,4 @@
       "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
     },
-    "@mui/base": {
-      "version": "5.0.0-alpha.92",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.92.tgz",
-      "integrity": "sha512-ZgnSLrTXL4iUdLQhjp01dAOTQPQlnwrqjZRwDT3E6LZXEYn6cMv1MY6LZkWcF/zxrUnyasnsyMAgZ5d8AXS7bA==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@emotion/is-prop-valid": "^1.1.3",
-        "@mui/types": "^7.1.5",
-        "@mui/utils": "^5.9.3",
-        "@popperjs/core": "^2.11.5",
-        "clsx": "^1.2.1",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        }
-      }
-    },
-    "@mui/icons-material": {
-      "version": "5.8.4",
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz",
-      "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==",
-      "requires": {
-        "@babel/runtime": "^7.17.2"
-      }
-    },
-    "@mui/material": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.0.tgz",
-      "integrity": "sha512-MSEzkE2vhpM37m8Gh3+TcZCWL70p+MxzNvS8FHugBB6YZpafhBFmFKX7/pYJ2kVD87PpUhNR4szWub7/ohE02Q==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@mui/base": "5.0.0-alpha.92",
-        "@mui/system": "^5.10.0",
-        "@mui/types": "^7.1.5",
-        "@mui/utils": "^5.9.3",
-        "@types/react-transition-group": "^4.4.5",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.0",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0",
-        "react-transition-group": "^4.4.5"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        }
-      }
-    },
-    "@mui/private-theming": {
-      "version": "5.9.3",
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.3.tgz",
-      "integrity": "sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@mui/utils": "^5.9.3",
-        "prop-types": "^15.8.1"
-      }
-    },
-    "@mui/styled-engine": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.0.tgz",
-      "integrity": "sha512-V0MmOx7KBDomDYg2/dRItVsvrpHpd51uZZiNqeuXiZruUJ1vPwtxztpvtSjX/xKvIxN7C0mxf8jmuwVUn6uaEA==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@emotion/cache": "^11.9.3",
-        "csstype": "^3.1.0",
-        "prop-types": "^15.8.1"
-      }
-    },
-    "@mui/system": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.0.tgz",
-      "integrity": "sha512-HNu3LdA+37cWqgJBEhOF4F5LX4WVmvg6SoHRfajRO0neKXLdooibMP3W1bhSd27QcPxyMUmvY9/Dlp9znDeCRw==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@mui/private-theming": "^5.9.3",
-        "@mui/styled-engine": "^5.10.0",
-        "@mui/types": "^7.1.5",
-        "@mui/utils": "^5.9.3",
-        "clsx": "^1.2.1",
-        "csstype": "^3.1.0",
-        "prop-types": "^15.8.1"
-      }
-    },
-    "@mui/types": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz",
-      "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==",
-      "requires": {}
-    },
-    "@mui/utils": {
-      "version": "5.9.3",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.9.3.tgz",
-      "integrity": "sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@types/prop-types": "^15.7.5",
-        "@types/react-is": "^16.7.1 || ^17.0.0",
-        "prop-types": "^15.8.1",
-        "react-is": "^18.2.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "18.2.0",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
-          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
-        }
-      }
-    },
     "@nodelib/fs.scandir": {
       "version": "2.1.5",
@@ -19745,41 +18655,4 @@
         "schema-utils": "^3.0.0",
         "source-map": "^0.7.3"
-      }
-    },
-    "@popperjs/core": {
-      "version": "2.11.6",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
-      "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
-    },
-    "@react-aria/ssr": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.3.0.tgz",
-      "integrity": "sha512-yNqUDuOVZIUGP81R87BJVi/ZUZp/nYOBXbPsRe7oltJOfErQZD+UezMpw4vM2KRz18cURffvmC8tJ6JTeyDtaQ==",
-      "requires": {
-        "@babel/runtime": "^7.6.2"
-      }
-    },
-    "@restart/hooks": {
-      "version": "0.4.7",
-      "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.7.tgz",
-      "integrity": "sha512-ZbjlEHcG+FQtpDPHd7i4FzNNvJf2enAwZfJbpM8CW7BhmOAbsHpZe3tsHwfQUrBuyrxWqPYp2x5UMnilWcY22A==",
-      "requires": {
-        "dequal": "^2.0.2"
-      }
-    },
-    "@restart/ui": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.3.1.tgz",
-      "integrity": "sha512-MYvMs2eeZTHu2dBJHOXKx72vxzEZeWbZx2z1QjeXq62iYjpjIyukBC2ZEy8x+sb9Gl0AiOiHkPXrl1wn95aOGQ==",
-      "requires": {
-        "@babel/runtime": "^7.18.3",
-        "@popperjs/core": "^2.11.5",
-        "@react-aria/ssr": "^3.2.0",
-        "@restart/hooks": "^0.4.7",
-        "@types/warning": "^3.0.0",
-        "dequal": "^2.0.2",
-        "dom-helpers": "^5.2.0",
-        "uncontrollable": "^7.2.1",
-        "warning": "^4.0.3"
       }
     },
@@ -20476,20 +19349,4 @@
       }
     },
-    "@types/react-is": {
-      "version": "17.0.3",
-      "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
-      "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
-      "requires": {
-        "@types/react": "*"
-      }
-    },
-    "@types/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
-      "requires": {
-        "@types/react": "*"
-      }
-    },
     "@types/resolve": {
       "version": "1.17.1",
@@ -20552,9 +19409,4 @@
       "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz",
       "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg=="
-    },
-    "@types/warning": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
-      "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
     },
     "@types/ws": {
@@ -21120,25 +19972,4 @@
       "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz",
       "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w=="
-    },
-    "axios": {
-      "version": "0.27.2",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
-      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
-      "requires": {
-        "follow-redirects": "^1.14.9",
-        "form-data": "^4.0.0"
-      },
-      "dependencies": {
-        "form-data": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-          "requires": {
-            "asynckit": "^0.4.0",
-            "combined-stream": "^1.0.8",
-            "mime-types": "^2.1.12"
-          }
-        }
-      }
     },
     "axobject-query": {
@@ -21466,10 +20297,4 @@
       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
     },
-    "bootstrap": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz",
-      "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==",
-      "requires": {}
-    },
     "brace-expansion": {
       "version": "1.1.11",
@@ -21642,9 +20467,4 @@
       "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA=="
     },
-    "classnames": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
-      "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
-    },
     "clean-css": {
       "version": "5.3.1",
@@ -21671,9 +20491,4 @@
         "wrap-ansi": "^7.0.0"
       }
-    },
-    "clsx": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-      "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg=="
     },
     "co": {
@@ -22233,9 +21048,4 @@
       "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
     },
-    "dequal": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
-    },
     "destroy": {
       "version": "1.2.0",
@@ -22342,13 +21152,4 @@
       "requires": {
         "utila": "~0.4"
-      }
-    },
-    "dom-helpers": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
-      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
-      "requires": {
-        "@babel/runtime": "^7.8.7",
-        "csstype": "^3.0.2"
       }
     },
@@ -23361,9 +22162,4 @@
       }
     },
-    "find-root": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
-      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
-    },
     "find-up": {
       "version": "5.0.0",
@@ -23393,9 +22189,4 @@
       "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
       "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
-    },
-    "font-awesome": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
-      "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg=="
     },
     "fork-ts-checker-webpack-plugin": {
@@ -23767,27 +22558,4 @@
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
     },
-    "history": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
-      "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
-      "requires": {
-        "@babel/runtime": "^7.7.6"
-      }
-    },
-    "hoist-non-react-statics": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-      "requires": {
-        "react-is": "^16.7.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "16.13.1",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-          "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        }
-      }
-    },
     "hoopy": {
       "version": "0.1.4",
@@ -24052,12 +22820,4 @@
         "has": "^1.0.3",
         "side-channel": "^1.0.4"
-      }
-    },
-    "invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "requires": {
-        "loose-envify": "^1.0.0"
       }
     },
@@ -25764,9 +24524,4 @@
         }
       }
-    },
-    "jquery": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
-      "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw=="
     },
     "js-tokens": {
@@ -27363,20 +26118,4 @@
       }
     },
-    "prop-types-extra": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
-      "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
-      "requires": {
-        "react-is": "^16.3.2",
-        "warning": "^4.0.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "16.13.1",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-          "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        }
-      }
-    },
     "proxy-addr": {
       "version": "2.0.7",
@@ -27494,23 +26233,4 @@
         "regenerator-runtime": "^0.13.9",
         "whatwg-fetch": "^3.6.2"
-      }
-    },
-    "react-bootstrap": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.5.0.tgz",
-      "integrity": "sha512-j/aLR+okzbYk61TM3eDOU1NqOqnUdwyVrF+ojoCRUxPdzc2R0xXvqyRsjSoyRoCo7n82Fs/LWjPCin/QJNdwvA==",
-      "requires": {
-        "@babel/runtime": "^7.17.2",
-        "@restart/hooks": "^0.4.6",
-        "@restart/ui": "^1.3.1",
-        "@types/react-transition-group": "^4.4.4",
-        "classnames": "^2.3.1",
-        "dom-helpers": "^5.2.1",
-        "invariant": "^2.2.4",
-        "prop-types": "^15.8.1",
-        "prop-types-extra": "^1.1.0",
-        "react-transition-group": "^4.4.2",
-        "uncontrollable": "^7.2.1",
-        "warning": "^4.0.3"
       }
     },
@@ -27615,21 +26335,4 @@
       "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
     },
-    "react-fast-compare": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
-      "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
-    },
-    "react-helmet-async": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz",
-      "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==",
-      "requires": {
-        "@babel/runtime": "^7.12.5",
-        "invariant": "^2.2.4",
-        "prop-types": "^15.7.2",
-        "react-fast-compare": "^3.2.0",
-        "shallowequal": "^1.1.0"
-      }
-    },
     "react-is": {
       "version": "17.0.2",
@@ -27637,38 +26340,8 @@
       "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
     },
-    "react-lifecycles-compat": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
-      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
-    },
     "react-refresh": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
       "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
-    },
-    "react-router": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
-      "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
-      "requires": {
-        "history": "^5.2.0"
-      }
-    },
-    "react-router-bootstrap": {
-      "version": "0.26.2",
-      "resolved": "https://registry.npmjs.org/react-router-bootstrap/-/react-router-bootstrap-0.26.2.tgz",
-      "integrity": "sha512-YlpI9Xi+Uqp6zFAUO8D/wu6P8mr1ujqq+0V5MhJG1kx9dr/95fAMoGk4J+/CsysOkwtR3tYSac4DDWmHwXvC8w==",
-      "requires": {
-        "prop-types": "^15.7.2"
-      }
-    },
-    "react-router-dom": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
-      "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
-      "requires": {
-        "history": "^5.2.0",
-        "react-router": "6.3.0"
-      }
     },
     "react-scripts": {
@@ -27727,23 +26400,4 @@
       }
     },
-    "react-toastify": {
-      "version": "9.0.8",
-      "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.0.8.tgz",
-      "integrity": "sha512-EwM+teWt49HSHx+67qI08yLAW1zAsBxCXLCsUfxHYv1W7/R3ZLhrqKalh7j+kjgPna1h5LQMSMwns4tB4ww2yQ==",
-      "requires": {
-        "clsx": "^1.1.1"
-      }
-    },
-    "react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
-      "requires": {
-        "@babel/runtime": "^7.5.5",
-        "dom-helpers": "^5.0.1",
-        "loose-envify": "^1.4.0",
-        "prop-types": "^15.6.2"
-      }
-    },
     "read-cache": {
       "version": "1.0.0",
@@ -28251,9 +26905,4 @@
       "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
     },
-    "shallowequal": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
-      "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
-    },
     "shebang-command": {
       "version": "2.0.0",
@@ -28298,9 +26947,4 @@
       "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
       "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
-    },
-    "slugify": {
-      "version": "1.6.5",
-      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz",
-      "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ=="
     },
     "sockjs": {
@@ -28561,9 +27205,4 @@
         "postcss-selector-parser": "^6.0.4"
       }
-    },
-    "stylis": {
-      "version": "4.0.13",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
-      "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
     },
     "supports-color": {
@@ -28964,15 +27603,4 @@
       }
     },
-    "uncontrollable": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
-      "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
-      "requires": {
-        "@babel/runtime": "^7.6.3",
-        "@types/react": ">=16.9.11",
-        "invariant": "^2.2.4",
-        "react-lifecycles-compat": "^3.0.4"
-      }
-    },
     "unicode-canonical-property-names-ecmascript": {
       "version": "2.0.0",
@@ -29117,12 +27745,4 @@
       "requires": {
         "makeerror": "1.0.12"
-      }
-    },
-    "warning": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
-      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
-      "requires": {
-        "loose-envify": "^1.0.0"
       }
     },
Index: frontend/package.json
===================================================================
--- frontend/package.json	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/package.json	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -1,31 +1,13 @@
 {
   "name": "frontend",
-  "proxy": "http://localhost:5000",
   "version": "0.1.0",
   "private": true,
   "dependencies": {
-    "@emotion/react": "^11.10.0",
-    "@emotion/styled": "^11.10.0",
-    "@fortawesome/fontawesome-svg-core": "^6.1.2",
-    "@fortawesome/free-regular-svg-icons": "^6.1.2",
-    "@fortawesome/free-solid-svg-icons": "^6.1.2",
-    "@mui/icons-material": "^5.8.4",
-    "@mui/material": "^5.10.0",
     "@testing-library/jest-dom": "^5.16.5",
     "@testing-library/react": "^13.3.0",
     "@testing-library/user-event": "^13.5.0",
-    "axios": "^0.27.2",
-    "bootstrap": "^5.2.0",
-    "font-awesome": "^4.7.0",
-    "jquery": "^3.6.1",
     "react": "^18.2.0",
-    "react-bootstrap": "^2.5.0",
     "react-dom": "^18.2.0",
-    "react-helmet-async": "^1.3.0",
-    "react-router-bootstrap": "^0.26.2",
-    "react-router-dom": "^6.3.0",
     "react-scripts": "5.0.1",
-    "react-toastify": "^9.0.8",
-    "slugify": "^1.6.5",
     "web-vitals": "^2.1.4"
   },
Index: frontend/public/manifest.json
===================================================================
--- frontend/public/manifest.json	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/public/manifest.json	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -7,4 +7,14 @@
       "sizes": "64x64 32x32 24x24 16x16",
       "type": "image/x-icon"
+    },
+    {
+      "src": "logo192.png",
+      "type": "image/png",
+      "sizes": "192x192"
+    },
+    {
+      "src": "logo512.png",
+      "type": "image/png",
+      "sizes": "512x512"
     }
   ],
Index: frontend/src/App.css
===================================================================
--- frontend/src/App.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/src/App.css	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -1,3 +1,38 @@
-body {
-  overflow-x: hidden;
+.App {
+  text-align: center;
 }
+
+.App-logo {
+  height: 40vmin;
+  pointer-events: none;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .App-logo {
+    animation: App-logo-spin infinite 20s linear;
+  }
+}
+
+.App-header {
+  background-color: #282c34;
+  min-height: 100vh;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  font-size: calc(10px + 2vmin);
+  color: white;
+}
+
+.App-link {
+  color: #61dafb;
+}
+
+@keyframes App-logo-spin {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
Index: frontend/src/App.js
===================================================================
--- frontend/src/App.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/src/App.js	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -1,77 +1,23 @@
-import "./App.css";
-import Home from "./screens/HomeWithJumbo";
-import ProductScreen from "./screens/ProductScreen";
-import Test from "./screens/ProductScreenBootstrap";
-import { BrowserRouter, Route, Routes } from "react-router-dom";
-import { useContext } from "react";
-import { Store } from "./Store";
-import Header from "./components/Header";
-import Footer from "./components/Footer";
-import CartScreen from "./screens/CartScreen";
-import CategoryScreen from "./screens/CategoryScreen";
-import SigninScreen from "./screens/SigninScreen";
-import { ToastContainer } from "react-toastify";
-import "react-toastify/dist/ReactToastify.css";
-import ShippingAddressScreen from "./screens/ShippingAddressScreen";
-import SignupScreen from "./screens/SignupScreen";
-import PaymentMethodScreen from "./screens/PaymentMethodScreen";
-import PlaceOrderScreen from "./screens/PlaceOrderScreen";
-import OrderScreen from "./screens/OrderScreen";
-import CardPaymentScreen from "./screens/CardPaymentScreen";
-import OrderHistoryScreen from "./screens/OrderHistoryScreen";
-import ProfileScreen from "./screens/ProfileScreen";
-import AdminDashboardScreen from "./screens/AdminDashboardScreen";
-import ListProducts from "./components/ListProducts";
-import AdminAddProductScreen from "./screens/AdminAddProductScreen";
-import AdminProductsScreen from "./screens/AdminProductsScreen";
-import AdminEditProductScreen from "./screens/AdminEditProductScreen";
-import AdminOrdersScreen from "./screens/AdminOrdersScreen";
-import AdminOrderScreen from "./screens/AdminOrderScreen";
-import AdminAddCategoryScreen from "./screens/AdminAddCategoryScreen";
-import SearchScreen from "./screens/SearchScreen";
+import logo from './logo.svg';
+import './App.css';
+
 function App() {
-  const { state } = useContext(Store);
-  const { cart } = state;
-  //<Route path="/search" element={<AdminProductsScreen />} />
   return (
-    <BrowserRouter>
-      <ToastContainer position="bottom-center" limit={1} />
-      <Header />
-
-      <Routes>
-        <Route path="/product/:slug" element={<Test />} />
-        <Route path="/" element={<Home />} />
-        <Route path="/cart" element={<CartScreen />} />
-        <Route path="/signin" element={<SigninScreen />} />
-        <Route path="/signup" element={<SignupScreen />} />
-        <Route path="/shipping" element={<ShippingAddressScreen />} />
-        <Route path="/payment" element={<PaymentMethodScreen />} />
-        <Route path="/placeorder" element={<PlaceOrderScreen />} />
-        <Route path="placeorder/payment" element={<CardPaymentScreen />} />
-        <Route path="/orderhistory" element={<OrderHistoryScreen />} />
-        <Route path="/profile" element={<ProfileScreen />} />
-        <Route path="/order/:id" element={<OrderScreen />} />
-        <Route
-          path="/products/:category/:subCategory"
-          element={<CategoryScreen />}
-        />
-        <Route path="/products/search" element={<SearchScreen />} />
-        <Route path="/admin/dashboard" element={<AdminDashboardScreen />} />
-        <Route path="/admin/addProduct" element={<AdminAddProductScreen />} />
-        <Route
-          path="/admin/addCategory"
-          element={<AdminAddCategoryScreen />}
-        ></Route>
-        <Route path="/admin/products" element={<AdminProductsScreen />} />
-        <Route path="/admin/orders" element={<AdminOrdersScreen />} />
-        <Route path="/admin/order/:id" element={<AdminOrderScreen />} />
-        <Route
-          path="/admin/product/:slug"
-          element={<AdminEditProductScreen />}
-        />
-      </Routes>
-
-      <Footer />
-    </BrowserRouter>
+    <div className="App">
+      <header className="App-header">
+        <img src={logo} className="App-logo" alt="logo" />
+        <p>
+          Edit <code>src/App.js</code> and save to reload.
+        </p>
+        <a
+          className="App-link"
+          href="https://reactjs.org"
+          target="_blank"
+          rel="noopener noreferrer"
+        >
+          Learn React
+        </a>
+      </header>
+    </div>
   );
 }
Index: ontend/src/Images/icon1.svg
===================================================================
--- frontend/src/Images/icon1.svg	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,45 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.0.5, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 38.03 37.92" style="enable-background:new 0 0 38.03 37.92;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#808285;}
-</style>
-<path class="st0" d="M36.76,20.51c-0.38-0.46-0.9-0.76-1.51-0.87l-0.09-0.02l-0.31-4.23h0.13c0.23,0,0.43-0.17,0.47-0.4l0.11-0.64
-	c0.12-0.66-0.04-1.3-0.44-1.77c-0.39-0.47-0.97-0.73-1.63-0.73H28.9l0.25-1.37c0.05-0.31-0.03-0.62-0.22-0.85s-0.48-0.36-0.79-0.36
-	H18.09v0.96h10.13l-1.95,11.05c-0.02,0.12,0,0.25,0.08,0.36c0.07,0.1,0.18,0.17,0.39,0.2c0.23,0,0.43-0.17,0.47-0.39l0.16-0.9h7.34
-	c0.54,0,1,0.2,1.31,0.57c0.21,0.25,0.34,0.57,0.37,0.92l0.01,0.13h-2.15c-0.23,0-0.43,0.17-0.47,0.4l-0.23,1.29
-	c-0.08,0.48,0.04,0.96,0.33,1.31c0.29,0.34,0.73,0.54,1.21,0.54h0.72l-0.52,2.91h-1.8l-0.02-0.1c-0.1-0.52-0.32-0.98-0.66-1.38
-	c-0.59-0.71-1.47-1.1-2.46-1.1c-1.58,0-3.15,1.01-3.9,2.51l-0.03,0.07h-0.47l0.81-4.59c0.02-0.13-0.01-0.26-0.08-0.36
-	c-0.07-0.11-0.19-0.18-0.4-0.21c-0.23,0-0.43,0.17-0.47,0.4l-0.84,4.76h-11.4l-0.02-0.1c-0.1-0.52-0.32-0.98-0.66-1.38
-	c-0.59-0.71-1.47-1.1-2.46-1.1c-1.58,0-3.15,1.01-3.9,2.51L6.5,28.62H2.8L3.09,27H2.11l-0.24,1.38C1.82,28.69,1.89,29,2.09,29.23
-	c0.19,0.22,0.47,0.35,0.78,0.35h3.3l-0.02,0.15c-0.16,0.99,0.08,1.92,0.67,2.62c0.6,0.71,1.47,1.1,2.47,1.1c2,0,3.91-1.62,4.26-3.62
-	l0.04-0.25h12.5l-0.02,0.15c-0.16,0.99,0.08,1.92,0.67,2.62c0.6,0.71,1.47,1.1,2.47,1.1c2,0,3.91-1.62,4.27-3.62l0.03-0.25h2.19
-	c0.23,0,0.43-0.16,0.47-0.39l1.14-6.45C37.46,21.9,37.26,21.1,36.76,20.51z M27.54,19.59l0.74-4.2h5.6l0.31,4.2H27.54z M34.57,14.43
-	h-6.12l0.29-1.62h4.75c0.37,0,0.69,0.14,0.9,0.38c0.21,0.26,0.29,0.61,0.23,0.99L34.57,14.43z M12.61,29.66
-	c-0.28,1.57-1.77,2.83-3.32,2.83c-0.71,0-1.33-0.26-1.73-0.75c-0.42-0.5-0.59-1.18-0.46-1.91C7.38,28.27,8.87,27,10.43,27
-	c0.7,0,1.32,0.27,1.73,0.76C12.58,28.26,12.74,28.94,12.61,29.66z M32.53,29.66c-0.27,1.57-1.76,2.83-3.32,2.83
-	c-0.71,0-1.32-0.26-1.73-0.75c-0.42-0.5-0.58-1.18-0.46-1.91C27.3,28.27,28.79,27,30.35,27c0.7,0,1.32,0.27,1.73,0.76
-	C32.5,28.26,32.66,28.94,32.53,29.66z M35.98,24.75h-0.89c-0.2,0-0.36-0.07-0.47-0.2c-0.12-0.13-0.16-0.32-0.12-0.52l0.16-0.9h1.6
-	L35.98,24.75z"/>
-<path class="st0" d="M9.74,30.87c-0.31,0-0.6-0.13-0.79-0.36c-0.19-0.23-0.27-0.54-0.22-0.85c0.1-0.58,0.64-1.04,1.23-1.04
-	c0.31,0,0.6,0.13,0.79,0.36c0.19,0.23,0.27,0.54,0.22,0.85C10.87,30.42,10.33,30.87,9.74,30.87z"/>
-<path class="st0" d="M29.66,30.87c-0.31,0-0.6-0.13-0.79-0.36c-0.19-0.23-0.27-0.54-0.22-0.85c0.1-0.58,0.64-1.04,1.23-1.04
-	c0.31,0,0.6,0.13,0.79,0.36c0.19,0.23,0.27,0.54,0.22,0.85C30.79,30.42,30.25,30.87,29.66,30.87z"/>
-<path class="st0" d="M1.98,27.75l0.54-3.05c0.04-0.23,0.24-0.4,0.47-0.4c0.21,0.03,0.32,0.1,0.39,0.2c0.07,0.1,0.1,0.23,0.08,0.36
-	l-0.69,3.89"/>
-<path class="st0" d="M18.96,10.23l-3.62-0.01c-0.23,0-0.43-0.17-0.47-0.4C14.86,9.62,14.91,9.49,15,9.4
-	c0.09-0.09,0.21-0.14,0.34-0.14l4.47,0.01"/>
-<g>
-	<path class="st0" d="M3.89,22.83c-0.1,0-0.2-0.03-0.29-0.09c-0.23-0.16-0.28-0.47-0.12-0.7l8.6-12.32c0.16-0.23,0.47-0.28,0.7-0.12
-		c0.23,0.16,0.28,0.47,0.12,0.7L4.3,22.62C4.2,22.75,4.05,22.83,3.89,22.83z"/>
-</g>
-<g>
-	<path class="st0" d="M12.1,22.05c-1.64,0-2.98-1.33-2.98-2.98s1.33-2.98,2.98-2.98s2.98,1.33,2.98,2.98S13.74,22.05,12.1,22.05z
-		 M12.1,17.1c-1.09,0-1.98,0.89-1.98,1.98s0.89,1.98,1.98,1.98s1.98-0.89,1.98-1.98S13.19,17.1,12.1,17.1z"/>
-</g>
-<g>
-	<path class="st0" d="M4.33,16.26c-1.64,0-2.98-1.33-2.98-2.98s1.33-2.98,2.98-2.98s2.98,1.33,2.98,2.98S5.97,16.26,4.33,16.26z
-		 M4.33,11.31c-1.09,0-1.98,0.89-1.98,1.98s0.89,1.98,1.98,1.98s1.98-0.89,1.98-1.98S5.42,11.31,4.33,11.31z"/>
-</g>
-</svg>
Index: ontend/src/Images/icon2.svg
===================================================================
--- frontend/src/Images/icon2.svg	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,38 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.0.5, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 39.69 39.69" style="enable-background:new 0 0 39.69 39.69;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#808285;}
-</style>
-<g>
-	<g>
-		<g>
-			<path class="st0" d="M6.56,34.33c-0.7,0-1.36-0.3-1.94-0.88c-0.59-0.59-0.89-1.24-0.89-1.94V14.55
-				c-1.58-0.97-2.59-2.73-2.59-4.57c0-1.91,1.02-3.67,2.66-4.61c0.17-0.09,0.37-0.09,0.53,0C4.5,5.48,4.6,5.65,4.6,5.84v3.53
-				l1.85,1.04l1.86-1.04V5.84c0-0.19,0.1-0.37,0.27-0.46c0.17-0.1,0.37-0.1,0.53,0c1.64,0.93,2.66,2.7,2.66,4.61
-				c0,1.81-0.91,3.49-2.39,4.46v17.07C9.38,33.04,8.09,34.33,6.56,34.33z M3.53,6.91C2.7,7.69,2.21,8.8,2.21,9.98
-				c0,1.55,0.91,3.04,2.31,3.78c0.18,0.09,0.28,0.28,0.28,0.47v17.27c0,0.41,0.19,0.79,0.57,1.18c1.26,1.26,2.93,0.18,2.93-1.18
-				V14.14c0-0.19,0.1-0.37,0.27-0.47c1.33-0.75,2.12-2.13,2.12-3.69c0-1.18-0.49-2.29-1.32-3.08v2.78c0,0.19-0.1,0.37-0.27,0.47
-				L6.71,11.5c-0.16,0.09-0.36,0.09-0.53,0L3.8,10.15c-0.17-0.09-0.27-0.27-0.27-0.47V6.91z"/>
-		</g>
-	</g>
-	<g>
-		<path class="st0" d="M31.89,21.66H20.41c-0.3,0-0.54-0.24-0.54-0.54v-9.19c0-1.56,1.27-2.83,2.83-2.83h6.48
-			c1.79,0,3.24,1.45,3.24,3.24v8.77C32.42,21.42,32.18,21.66,31.89,21.66z M20.94,20.58h10.41v-8.24c0-1.2-0.97-2.17-2.17-2.17H22.7
-			c-0.97,0-1.76,0.79-1.76,1.76V20.58z M18.57,21.66H11.2c-0.3,0-0.54-0.24-0.54-0.54s0.24-0.54,0.54-0.54h6.84v-8.65
-			c0-0.97-0.79-1.76-1.76-1.76h-2.9c-0.3,0-0.54-0.24-0.54-0.54s0.24-0.54,0.54-0.54h2.9c1.56,0,2.83,1.27,2.83,2.83v9.19
-			C19.11,21.42,18.87,21.66,18.57,21.66z"/>
-	</g>
-	<g>
-		<path class="st0" d="M35.4,34.38h-2.95c-0.27,0-0.5-0.2-0.53-0.47l-0.56-4.17c-0.02-0.15,0.03-0.31,0.13-0.42
-			c0.1-0.12,0.25-0.18,0.4-0.18h2.95c0.27,0,0.5,0.2,0.53,0.47l0.56,4.17c0.02,0.15-0.03,0.31-0.13,0.42
-			C35.7,34.31,35.55,34.38,35.4,34.38z M32.91,33.3h1.87l-0.41-3.1H32.5L32.91,33.3z"/>
-	</g>
-	<g>
-		<path class="st0" d="M38.55,30.2H11.2c-0.3,0-0.54-0.24-0.54-0.54c0-0.3,0.24-0.54,0.54-0.54h26.27V18.06c0-0.49-0.4-0.9-0.9-0.9
-			h-1.37v6.15c0,0.58-0.47,1.06-1.06,1.06H11.2c-0.3,0-0.54-0.24-0.54-0.54c0-0.3,0.24-0.54,0.54-0.54h22.95l-0.02-7.21h2.44
-			c1.09,0,1.97,0.88,1.97,1.97V30.2z"/>
-	</g>
-</g>
-</svg>
Index: ontend/src/Images/icon3.svg
===================================================================
--- frontend/src/Images/icon3.svg	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,38 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.0.5, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 39.69 39.69" style="enable-background:new 0 0 39.69 39.69;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#808285;}
-</style>
-<g>
-	<path class="st0" d="M8.19,20.26c-0.26,0-0.47-0.21-0.47-0.47s0.21-0.47,0.47-0.47h16.57c0.26,0,0.47,0.21,0.47,0.47
-		s-0.21,0.47-0.47,0.47H8.19z"/>
-	<path class="st0" d="M30.88,31.93c-1,0-1.87-0.39-2.47-1.1c-0.59-0.7-0.83-1.64-0.67-2.63l0.02-0.14h-12.5l-0.04,0.25
-		c-0.35,2-2.27,3.62-4.27,3.62c-1,0-1.87-0.39-2.47-1.1c-0.59-0.7-0.83-1.64-0.67-2.63l0.02-0.14h-3.3c-0.31,0-0.6-0.13-0.79-0.36
-		c-0.19-0.23-0.27-0.54-0.22-0.85l0.24-1.37H1.13c-0.26,0-0.48-0.22-0.48-0.48s0.22-0.48,0.48-0.48h6.45c0.26,0,0.48,0.22,0.48,0.48
-		s-0.22,0.48-0.48,0.48H4.76L4.48,27.1h3.69l0.03-0.07c0.75-1.5,2.32-2.51,3.9-2.51c1,0,1.87,0.39,2.47,1.1
-		c0.33,0.4,0.55,0.86,0.66,1.38l0.02,0.1h11.4l0.84-4.76c0.04-0.23,0.24-0.4,0.47-0.4c0.21,0.03,0.32,0.1,0.39,0.2
-		c0.07,0.1,0.1,0.23,0.08,0.36l-0.81,4.6h0.47l0.03-0.07c0.75-1.5,2.32-2.51,3.9-2.51c1,0,1.87,0.39,2.47,1.1
-		c0.33,0.4,0.55,0.86,0.66,1.38l0.02,0.1h1.8l0.51-2.91h-0.72c-0.48,0-0.92-0.2-1.21-0.54c-0.29-0.35-0.41-0.83-0.33-1.31l0.23-1.29
-		c0.04-0.23,0.24-0.4,0.47-0.4h2.15l-0.01-0.14c-0.03-0.35-0.16-0.66-0.37-0.92c-0.31-0.37-0.77-0.57-1.31-0.57h-7.34l-0.16,0.89
-		c-0.04,0.23-0.24,0.4-0.47,0.4c-0.21-0.03-0.32-0.1-0.39-0.21c-0.07-0.1-0.1-0.23-0.08-0.36l1.95-11.05H7.96
-		c-0.12,0-0.26,0.12-0.29,0.25L5.74,19.93c-0.04,0.23-0.24,0.4-0.47,0.4c-0.34-0.05-0.52-0.3-0.47-0.56L6.73,8.79
-		c0.1-0.58,0.64-1.04,1.23-1.04h21.86c0.31,0,0.6,0.13,0.79,0.36c0.19,0.23,0.27,0.54,0.22,0.85l-0.24,1.37h4.59
-		c0.66,0,1.23,0.26,1.63,0.73c0.39,0.47,0.55,1.12,0.44,1.77l-0.11,0.65c-0.04,0.23-0.24,0.39-0.47,0.4l-0.13,0l0.31,4.23l0.09,0.02
-		c0.6,0.11,1.12,0.41,1.5,0.86c0.5,0.6,0.7,1.39,0.55,2.23l-1.14,6.45c-0.04,0.23-0.24,0.4-0.47,0.4h-2.19l-0.04,0.25
-		C34.8,30.31,32.88,31.93,30.88,31.93z M32.02,25.48c-1.56,0-3.05,1.27-3.32,2.83c-0.13,0.73,0.03,1.41,0.45,1.91
-		c0.41,0.49,1.02,0.76,1.73,0.76c1.56,0,3.05-1.27,3.32-2.83c0.13-0.73-0.03-1.41-0.45-1.91C33.35,25.75,32.73,25.48,32.02,25.48z
-		 M12.1,25.48c-1.56,0-3.05,1.27-3.32,2.83c-0.13,0.73,0.03,1.41,0.45,1.91c0.41,0.49,1.02,0.76,1.73,0.76
-		c1.56,0,3.05-1.27,3.32-2.83c0.13-0.73-0.03-1.41-0.45-1.91C13.42,25.75,12.81,25.48,12.1,25.48z M36.17,22.51
-		c-0.04,0.21,0.01,0.39,0.12,0.53c0.11,0.13,0.27,0.2,0.47,0.2l0.89,0l0.29-1.62h-1.61L36.17,22.51z M29.22,18.07h6.65l-0.31-4.2
-		h-5.6L29.22,18.07z M30.13,12.91h6.12l0.04-0.25c0.07-0.38-0.01-0.73-0.23-0.99c-0.21-0.25-0.52-0.38-0.89-0.38h-4.76L30.13,12.91z
-		"/>
-	<path class="st0" d="M11.42,29.35c-0.31,0-0.6-0.13-0.79-0.36c-0.19-0.23-0.27-0.54-0.22-0.85c0.1-0.58,0.64-1.04,1.23-1.04
-		c0.31,0,0.6,0.13,0.79,0.36c0.19,0.23,0.27,0.54,0.22,0.85C12.55,28.9,12.01,29.35,11.42,29.35z"/>
-	<path class="st0" d="M31.34,29.35c-0.31,0-0.6-0.13-0.79-0.36c-0.19-0.23-0.27-0.54-0.22-0.85c0.1-0.58,0.64-1.04,1.23-1.04
-		c0.31,0,0.6,0.13,0.79,0.36c0.19,0.23,0.27,0.54,0.22,0.85C32.47,28.9,31.93,29.35,31.34,29.35z"/>
-	<path class="st0" d="M2.88,22.9c-0.26,0-0.48-0.22-0.48-0.48c0-0.26,0.22-0.48,0.48-0.48h11.16c0.26,0,0.48,0.22,0.48,0.48
-		c0,0.26-0.22,0.48-0.48,0.48H2.88z"/>
-</g>
-</svg>
Index: ontend/src/Store.js
===================================================================
--- frontend/src/Store.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,72 +1,0 @@
-import { createContext, useReducer } from "react";
-
-export const Store = createContext();
-
-const initialState = {
-  userInfo: localStorage.getItem("userInfo")
-    ? JSON.parse(localStorage.getItem("userInfo"))
-    : null,
-  cart: {
-    shippingAddress: localStorage.getItem("shippingAddress")
-      ? JSON.parse(localStorage.getItem("shippingAddress"))
-      : {},
-    paymentMethod: localStorage.getItem("paymentMethod")
-      ? localStorage.getItem("paymentMethod")
-      : "",
-    cartItems: localStorage.getItem("cartItems")
-      ? JSON.parse(localStorage.getItem("cartItems"))
-      : [],
-  },
-};
-
-function reducer(state, action) {
-  switch (action.type) {
-    case "CART_ADD_ITEM":
-      const newItem = action.payload;
-      const existItem = state.cart.cartItems.find(
-        (item) => item._id === newItem._id
-      );
-      const cartItems = existItem
-        ? state.cart.cartItems.map((item) =>
-            item._id === existItem._id ? newItem : item
-          )
-        : [...state.cart.cartItems, newItem];
-      localStorage.setItem("cartItems", JSON.stringify(cartItems));
-      return { ...state, cart: { ...state.cart, cartItems } };
-    case "CART_REMOVE_ITEM": {
-      const cartItems = state.cart.cartItems.filter(
-        (item) => item._id !== action.payload._id
-      );
-      localStorage.setItem("cartItems", JSON.stringify(cartItems));
-      return { ...state, cart: { ...state.cart, cartItems } };
-    }
-    case "CART_CLEAR":
-      return { ...state, cart: { ...state.cart, cartItems: [] } };
-    case "USER_SIGNIN":
-      return { ...state, userInfo: action.payload };
-    case "USER_SIGNOUT":
-      return {
-        ...state,
-        userInfo: null,
-        cart: { cartItems: [], shippingAddress: {}, paymentMethod: "" },
-      };
-    case "SAVE_SHIPPING_ADDRESS":
-      return {
-        ...state,
-        cart: { ...state.cart, shippingAddress: action.payload },
-      };
-    case "SAVE_PAYMENT_METHOD":
-      return {
-        ...state,
-        cart: { ...state.cart, paymentMethod: action.payload },
-      };
-    default:
-      return state;
-  }
-}
-
-export function StoreProvider(props) {
-  const [state, dispatch] = useReducer(reducer, initialState);
-  const value = { state, dispatch };
-  return <Store.Provider value={value}>{props.children}</Store.Provider>;
-}
Index: ontend/src/components/AddProductForm.js
===================================================================
--- frontend/src/components/AddProductForm.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,345 +1,0 @@
-import axios from "axios";
-import React, { useState } from "react";
-import Button from "react-bootstrap/Button";
-import Form from "react-bootstrap/Form";
-import { toast } from "react-toastify";
-
-function AddProductForm() {
-  const [name, setName] = useState("");
-  const [slug, setSlug] = useState("");
-  const [category, setCategory] = useState("dnevna");
-  const [subCategory, setSubCategory] = useState("");
-  const [description, setDescription] = useState("");
-  const [price, setPrice] = useState("");
-  const [priceMontaza, setPriceMontaza] = useState("");
-  const [countInStock, setCountInStock] = useState("");
-  const [image, setImage] = useState("");
-  const [sideImage, setSideImage] = useState("");
-  const [sideImage2, setSideImage2] = useState("");
-  const [dimension, setDimension] = useState("");
-  const [scheme, setScheme] = useState("");
-  const [message, setMessage] = useState("");
-
-  const onChangeImage = (e) => {
-    setImage(e.target.files[0]);
-  };
-  const onChangeSideImage = (e) => {
-    setSideImage(e.target.files[0]);
-  };
-  const onChangeSideImage2 = (e) => {
-    setSideImage2(e.target.files[0]);
-  };
-  const onChangeDimension = (e) => {
-    setDimension(e.target.files[0]);
-  };
-  const onChangeScheme = (e) => {
-    setScheme(e.target.files[0]);
-  };
-
-  const submitHandler = async (e) => {
-    e.preventDefault();
-
-    const formData = new FormData();
-
-    formData.append("name", name);
-    formData.append("slug", slug);
-    formData.append("category", category);
-    formData.append("subCategory", subCategory);
-    formData.append("description", description);
-    formData.append("price", price);
-    formData.append("priceMontaza", priceMontaza);
-    formData.append("countInStock", countInStock);
-    formData.append("image", image);
-    formData.append("sideImage", sideImage);
-    formData.append("sideImage2", sideImage2);
-    formData.append("dimension", dimension);
-    formData.append("scheme", scheme);
-
-    try {
-      const result = await axios.post("/api/products/add", formData);
-      if (result) toast.success("Product Added");
-      return;
-    } catch (error) {
-      console.log(error);
-    }
-  };
-
-  return (
-    <div className="taskContainer">
-      <h1>Додади нов продукт</h1>
-      <Form
-        onSubmit={submitHandler}
-        encType="multipart/form-data"
-        className="newProductFormCointainer"
-      >
-        <div className="firstRow" style={{ display: "flex" }}>
-          <Form.Group>
-            <Form.Label>Име</Form.Label>
-            <Form.Control
-              value={name}
-              onChange={(e) => setName(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Слуг</Form.Label>
-            <Form.Control
-              value={slug}
-              onChange={(e) => setSlug(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Категорија</Form.Label>
-            <Form.Select onChange={(e) => setCategory(e.target.value)}>
-              <option value={"dnevna"}>Дневна</option>
-              <option value={"spalna"}>Спална</option>
-              <option value={"kancelarija"}>Канцеларија</option>
-              <option value={"hodnik"}>Ходник</option>
-              <option value={"gradina"}>Градина</option>
-              <option value={"trpezarija"}>Трпезарија</option>
-              <option value={"kujna"}>Кујна</option>
-              <option value={"detska"}>Детска</option>
-            </Form.Select>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Подкатегорија</Form.Label>
-            <Form.Select onChange={(e) => setSubCategory(e.target.value)}>
-              <option value="default">Подкатегорија</option>
-              {category === "dnevna" && (
-                <option value="agolni-garnituri">Аголни Гарнитури</option>
-              )}
-              {category === "dnevna" && <option value="sofi">Софи</option>}
-              {category === "dnevna" && (
-                <option value="fotelji">Фотелји</option>
-              )}
-              {category === "dnevna" && (
-                <option value="taburetki">Табуретки</option>
-              )}
-              {category === "dnevna" && (
-                <option value="klub-masi">Клуб маси</option>
-              )}
-              {category === "dnevna" && (
-                <option value="tv-komodi">ТВ комоди</option>
-              )}
-              {category === "dnevna" && <option value="komodi">Комоди</option>}
-              {category === "spalna" && (
-                <option value="spalni-kompleti">Спални Комплети</option>
-              )}
-              {category === "spalna" && <option value="lezai">Лежаи</option>}
-              {category === "spalna" && (
-                <option value="kreveti">Кревети</option>
-              )}
-              {category === "spalna" && (
-                <option value="plakari">Плакари</option>
-              )}
-              {category === "spalna" && (
-                <option value="nokni-skafcinja">Ноќни шкафчиња</option>
-              )}
-              {category === "spalna" && (
-                <option value="toaletni-masi">Тоалетни маси</option>
-              )}
-              {category === "kancelarija" && (
-                <option value="biroa">Бироа</option>
-              )}
-              {category === "kancelarija" && (
-                <option value="kancelariski-stolovi">
-                  Канцелариски столови
-                </option>
-              )}
-              {category === "kancelarija" && (
-                <option value="gejmerski-stolovi">Гејмерски столови</option>
-              )}
-              {category === "kancelarija" && (
-                <option value="kancelariski-skafovi">
-                  Канцелариски шкафови
-                </option>
-              )}
-              {category === "hodnik" && (
-                <option value="skafovi-za-cevli">Шкафови за чевли</option>
-              )}
-              {category === "hodnik" && (
-                <option value="zakacalki-i-ogledala">
-                  Закачалки и огледала
-                </option>
-              )}
-              {category === "hodnik" && (
-                <option value="kolekcii-za-hodnik">Колекции за ходник</option>
-              )}
-              {category === "gradina" && (
-                <option value="gradinarski-kompleti">
-                  Градинарски комплети
-                </option>
-              )}
-              {category === "gradina" && (
-                <option value="gradinarski-lulki">Градинарски лулки</option>
-              )}
-              {category === "gradina" && (
-                <option value="gradinarski-cadori">Градинарски чадори</option>
-              )}
-              {category === "gradina" && (
-                <option value="gradinarski-masi">Градинарски маси</option>
-              )}
-              {category === "gradina" && (
-                <option value="gradinarski-stolovi">Градинарски столови</option>
-              )}
-              {category === "gradina" && (
-                <option value="gradinarsko-osvetluvanje">
-                  Градинарско осветлување
-                </option>
-              )}
-              {category === "trpezarija" && (
-                <option value="trpezariski-masi">Трпезариски маси</option>
-              )}
-              {category === "trpezarija" && (
-                <option value="trpezariski-stolovi">Трпезариски столови</option>
-              )}
-              {category === "trpezarija" && (
-                <option value="kujnski-garnituri">Кујнски гарнитури</option>
-              )}
-              {category === "trpezarija" && (
-                <option value="bar-stolovi-i-masi">Бар столови и маси</option>
-              )}
-              {category === "kujna" && (
-                <option value="kujnski-agolni-garnituri">
-                  Кујнски аголни гарнитури
-                </option>
-              )}
-              {category === "kujna" && (
-                <option value="standardni-kujni">Стандардни кујни</option>
-              )}
-              {category === "detska" && (
-                <option value="kolekcii-za-detska-soba">
-                  Колекции за детска соба
-                </option>
-              )}
-              {category === "detska" && (
-                <option value="detski-biroa">Детски бироа</option>
-              )}
-              {category === "detska" && (
-                <option value="detski-lezai">Детски лежаи</option>
-              )}
-            </Form.Select>
-          </Form.Group>
-        </div>
-        <div className="secondRow">
-          <Form.Group style={{ width: "60%", marginTop: "20px" }}>
-            <Form.Label>Опис</Form.Label>
-            <Form.Control
-              id="textArea"
-              value={description}
-              onChange={(e) => setDescription(e.target.value)}
-              as="textarea"
-              required
-            ></Form.Control>
-          </Form.Group>
-          <div
-            style={{
-              display: "flex",
-              flexDirection: "column",
-              alignItems: "center",
-              justifyContent: "center",
-              width: "40%",
-            }}
-          >
-            <Form.Group style={{ marginTop: "20px" }}>
-              <Form.Label>Цена</Form.Label>
-              <Form.Control
-                value={price}
-                onChange={(e) => setPrice(e.target.value)}
-                type="number"
-                required
-              ></Form.Control>
-            </Form.Group>
-            <Form.Group style={{ marginTop: "10px" }}>
-              <Form.Label>Цена Монтажа</Form.Label>
-              <Form.Control
-                value={priceMontaza}
-                onChange={(e) => setPriceMontaza(e.target.value)}
-                type="number"
-                required
-              ></Form.Control>
-            </Form.Group>
-            <Form.Group style={{ marginTop: "10px" }}>
-              <Form.Label>Залиха</Form.Label>
-              <Form.Control
-                value={countInStock}
-                onChange={(e) => setCountInStock(e.target.value)}
-                type="number"
-                required
-              ></Form.Control>
-            </Form.Group>
-          </div>
-        </div>
-        <div className="thirdRow">
-          <div
-            style={{
-              display: "flex",
-              flexDirection: "column",
-              alignItems: "center",
-              justifyContent: "center",
-            }}
-          >
-            <Form.Group>
-              <Form.Label>Главна слика</Form.Label>
-              <Form.Control
-                type="file"
-                name="image"
-                onChange={onChangeImage}
-                required
-              ></Form.Control>
-            </Form.Group>
-
-            <Form.Group style={{ marginTop: "10px" }}>
-              <Form.Label>Споредна слика бр.1</Form.Label>
-              <Form.Control
-                type="file"
-                name="sideImage"
-                onChange={onChangeSideImage}
-                required
-              ></Form.Control>
-            </Form.Group>
-
-            <Form.Group style={{ marginTop: "10px" }}>
-              <Form.Label>Споредна слика бр.2</Form.Label>
-              <Form.Control
-                type="file"
-                name="sideImage2"
-                onChange={onChangeSideImage2}
-                required
-              ></Form.Control>
-            </Form.Group>
-          </div>
-          <div>
-            <Form.Group>
-              <Form.Label>Слика со димензии</Form.Label>
-              <Form.Control
-                type="file"
-                name="dimension"
-                onChange={onChangeDimension}
-                required
-              ></Form.Control>
-            </Form.Group>
-
-            <Form.Group style={{ marginTop: "10px" }}>
-              <Form.Label>Слика од шема</Form.Label>
-              <Form.Control
-                type="file"
-                name="scheme"
-                onChange={onChangeScheme}
-                required
-              ></Form.Control>
-            </Form.Group>
-          </div>
-        </div>
-        <div className="submitBtnContainer">
-          <Button variant="danger" size="lg" type="submit">
-            Додади
-          </Button>
-        </div>
-      </Form>
-    </div>
-  );
-}
-
-export default AddProductForm;
Index: ontend/src/components/CategoryMenu.js
===================================================================
--- frontend/src/components/CategoryMenu.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,30 +1,0 @@
-import React from "react";
-import { Link } from "react-router-dom";
-import SubCategoryMenu from "./SubCategoryMenu";
-
-function CategoryMenu(props) {
-  let ul = document.getElementById("subCategoryList");
-
-  const result = [];
-
-  props.category.subCategories.forEach((sub) => {
-    result.push(
-      <SubCategoryMenu
-        subCategory={sub}
-        category={props.category}
-      ></SubCategoryMenu>
-    );
-  });
-
-  const categoryUrl = `/products/${props.category.categorySlug}/all`;
-  return (
-    <div>
-      <Link to={categoryUrl}>
-        <span>{props.category.categoryName}</span>
-      </Link>
-      <ul id="subCategoryList">{result}</ul>
-    </div>
-  );
-}
-
-export default CategoryMenu;
Index: ontend/src/components/CheckoutSteps.js
===================================================================
--- frontend/src/components/CheckoutSteps.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import React from "react";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-
-function CheckoutSteps(props) {
-  return (
-    <Row className="checkout-steps">
-      <Col className={props.step1 ? "active" : ""}>Најава</Col>
-      <Col className={props.step2 ? "active" : ""}>Адреса</Col>
-      <Col className={props.step3 ? "active" : ""}>Плаќање</Col>
-      <Col className={props.step4 ? "active" : ""}>Потврди</Col>
-    </Row>
-  );
-}
-
-export default CheckoutSteps;
Index: ontend/src/components/Footer.js
===================================================================
--- frontend/src/components/Footer.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,41 +1,0 @@
-import React from "react";
-import "../styles/Footer.css";
-import fbIcon from "../Images/facebook.png";
-import igIcon from "../Images/instragram.png";
-import twIcon from "../Images/twitter.png";
-import piIcon from "../Images/pinterest.png";
-
-function Footer() {
-  return (
-    <div className="footer">
-      <div className="footer__contact">
-        <h2>Контакти</h2>
-        <p>E-mail: mebelcity@gmail.com</p>
-        <p>Од понеделник до сабота: 08:00 - 19:00</p>
-        <p>Недела: 09:00 - 16:00</p>
-        <p>Call Center: 0123456789 </p>
-      </div>
-      <div className="footer__social">
-        <h2>Следете не</h2>
-        <div className="socialIconText">
-          <img alt="facebook" src={fbIcon}></img>
-          <span>Facebook</span>
-        </div>
-        <div className="socialIconText">
-          <img alt="instagram" src={igIcon}></img>
-          <span>Instagram</span>
-        </div>
-        <div className="socialIconText">
-          <img alt="twitter" src={twIcon}></img>
-          <span>Twitter</span>
-        </div>
-        <div className="socialIconText">
-          <img alt="pinterest" src={piIcon}></img>
-          <span>Pinterest</span>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default Footer;
Index: ontend/src/components/Header.js
===================================================================
--- frontend/src/components/Header.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,1271 +1,0 @@
-import React, { useEffect, useState } from "react";
-import logo from "../Images/logo.png";
-import "../styles/Header.css";
-import SearchIcon from "@mui/icons-material/Search";
-import AccountCircleIcon from "@mui/icons-material/AccountCircle";
-//import ShoppingBasketIcon from '@mui/icons-material/ShoppingBasket';
-import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
-import WeekendIcon from "@mui/icons-material/Weekend";
-import MeetingRoomIcon from "@mui/icons-material/MeetingRoom";
-import TableRestaurantIcon from "@mui/icons-material/TableRestaurant";
-import BedIcon from "@mui/icons-material/Bed";
-import KitchenIcon from "@mui/icons-material/Kitchen";
-import ChairAltIcon from "@mui/icons-material/ChairAlt";
-import BedroomChildIcon from "@mui/icons-material/BedroomChild";
-import DeckIcon from "@mui/icons-material/Deck";
-import ShoppingBasketIcon from "@mui/icons-material/ShoppingCart";
-import MenuIcon from "@mui/icons-material/Menu";
-import { Link, NavLink, useNavigate } from "react-router-dom";
-import logo2 from "../Images/logo2.png";
-import Badge from "react-bootstrap/Badge";
-import ArrowBackIcon from "@mui/icons-material/ArrowBack";
-import { Store } from "../Store";
-import { useContext } from "react";
-import NavDropdown from "react-bootstrap/NavDropdown";
-import { height } from "@mui/system";
-import Axios from "axios";
-import CategoryMenu from "./CategoryMenu";
-
-const toggleMenu = (event) => {
-  event.stopPropagation();
-  let menu = document.querySelector(".mobile-menu-container");
-  menu.classList.remove("hidden");
-  menu.classList.add("visible");
-};
-
-const toggleSubMenu = (event) => {
-  event.stopPropagation();
-  let menu = document.querySelector(".subDropdown");
-  menu.classList.remove("hidden");
-  menu.classList.add("visible");
-  let tog = document.querySelector(".subMenu");
-  tog.removeAttribute("onClick");
-  console.log("SubMenu Visible");
-};
-
-const categoryMenuTrigger = (event) => {
-  event.stopPropagation();
-  let span = event.target;
-  let menu = document.querySelector(`.${span.classList[0]}-menu`);
-  menu.classList.remove("hidden");
-  menu.classList.add("visible");
-};
-
-const closeMenu = (event) => {
-  let menu = document.querySelector(".mobile-menu-container");
-  menu.classList.remove("visible");
-  menu.classList.add("hidden");
-};
-
-const backToMenu = (event) => {
-  event.stopPropagation();
-  let menu1 = document.querySelector(".subDropdown");
-  menu1.classList.remove("visible");
-  menu1.classList.add("hidden");
-  console.log("SubMenu Invisible");
-};
-
-const backToSubMenu = (event) => {
-  event.stopPropagation();
-  let menu = document.querySelector(`.${event.target.classList[0]}-menu`);
-  menu.classList.remove("visible");
-  menu.classList.add("hidden");
-};
-
-function Header() {
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { cart, userInfo } = state;
-  const navigate = useNavigate();
-
-  const [categories, setCategories] = useState([]);
-  //const []
-
-  const signoutHandler = () => {
-    ctxDispatch({ type: "USER_SIGNOUT" });
-    localStorage.removeItem("userInfo");
-    localStorage.removeItem("shippingAddress");
-    localStorage.removeItem("paymentMethod");
-    window.location.href = "/signin";
-  };
-
-  const searchHandler = () => {
-    let text = document.querySelector(".header__searchInput").value;
-    console.log(text);
-    navigate(`/products/search?text=${text}`);
-  };
-
-  useEffect(() => {
-    const fetchData = async () => {
-      const cat = await Axios.get(`/api/category/getCategories`);
-      categories.splice(0, categories.length);
-      for (let i = 0; i < cat.data.length; i++) {
-        categories.push(cat.data[i]);
-      }
-      console.log(categories[0]);
-    };
-    fetchData();
-  }, [categories]);
-  const results = [];
-  const results1 = [];
-  const results2 = [];
-  const results3 = [];
-  if (categories) createMenu(categories);
-  function createMenu(categories) {
-    /*
-    let ul = document.getElementById("category-ul-1");
-    for(let i=0;i<categories.length;i++){
-      ul.appendChild()
-    }*/
-    results.splice(0, results.length);
-    categories.forEach((category) => {
-      results.push(<CategoryMenu category={category} />);
-    });
-    for (let i = 0; i < categories.length; i++) {
-      if (i < 3) {
-        results1.push(<CategoryMenu category={categories[i]} />);
-      } else if (i < 5) {
-        results2.push(<CategoryMenu category={categories[i]} />);
-      } else {
-        results3.push(<CategoryMenu category={categories[i]} />);
-      }
-    }
-    console.log("Results:");
-    console.log(categories);
-  }
-
-  return (
-    <div className="header">
-      <div className="header__iconContainer">
-        <MenuIcon
-          className="header__icon"
-          fontSize="large"
-          onClick={toggleMenu}
-        />
-        <img
-          className="header__icon"
-          src={logo2}
-          alt="logo"
-          onClick={() => {
-            navigate("/");
-          }}
-        ></img>
-      </div>
-      <div className="mobile-menu-container hidden">
-        <div className="closeBtn" onClick={closeMenu}>
-          x
-        </div>
-        <ul className="mobile-menu">
-          <Link
-            to="/"
-            style={{ textDecoration: "none", color: "black" }}
-            onClick={closeMenu}
-          >
-            <li>Почетна</li>
-          </Link>
-          <li onClick={toggleSubMenu} className="subMenu">
-            Производи <ArrowDropDownIcon />
-            <div className="subDropdown hidden">
-              <div className="backBtn" onClick={backToMenu}>
-                <ArrowBackIcon />
-                Назад
-              </div>
-              <ul className="mobile-submenu">
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="dnevna">
-                    <WeekendIcon /> Дневна
-                  </span>
-                  <div className="category-menu dnevna-menu hidden">
-                    <div onClick={backToSubMenu} className="dnevna">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/dnevna/agolni-garnituri"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Аголни гарнитури
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/dnevna/sofi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Софи
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/dnevna/fotelji"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Фотелји
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/dnevna/taburetki"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Табуретки
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/dnevna/klub-masi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Клуб Маси
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/dnevna/tv-komodi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          ТВ Комоди
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/dnevna/komodi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Комоди
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="hodnik">
-                    <MeetingRoomIcon />
-                    Ходник
-                  </span>
-                  <div className="category-menu hodnik-menu hidden">
-                    <div onClick={backToSubMenu} className="hodnik">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/hodnik/skafovi-za-cevli"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Шкафови за чевли
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/hodnik/zakacalki-i-ogledala"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Закачалки и огледала
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/hodnik/kolekcii-za-hodnik"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Колекции за ходник
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="kujna">
-                    <KitchenIcon />
-                    Кујна
-                  </span>
-                  <div className="category-menu kujna-menu hidden">
-                    <div onClick={backToSubMenu} className="kujna">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/kujna/kujnski-agolni-garnituri"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Кујнски аголни гарнитури
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/kujna/standarni-kujni"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Стандардни кујни
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="spalna">
-                    <BedIcon />
-                    Спална
-                  </span>
-                  <div className="category-menu spalna-menu hidden">
-                    <div onClick={backToSubMenu} className="spalna">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/spalna/spalni-kompleti"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Спални комплети
-                        </Link>
-                      </li>
-
-                      <li>
-                        <Link
-                          to="/products/spalna/lezai"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Лежаи
-                        </Link>
-                      </li>
-
-                      <li>
-                        <Link
-                          to="/products/spalna/kreveti"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Кревети
-                        </Link>
-                      </li>
-
-                      <li>
-                        <Link
-                          to="/products/spalna/plakari"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Плакари
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/spalna/nokni-skafcinja"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Ноќни шкафчиња
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/spalna/toaletni-masi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Тоалетни маси
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="gradina">
-                    <DeckIcon />
-                    Градина
-                  </span>
-                  <div className="category-menu gradina-menu hidden">
-                    <div onClick={backToSubMenu} className="gradina">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/gradina/gradinarski-kompleti"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Градинарски комплети
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/gradina/gradinarski-lulki"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Градинарски лулки
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/gradina/gradinarski-cadori"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Градинарски чадори
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/gradina/gradinarski-masi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Градинарски маси
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/gradina/gradinarski-stolovi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Градинарски столови
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/gradina/gradinarsko-osvetluvanje"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Градинарско осветлување
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="kancelarija">
-                    <ChairAltIcon />
-                    Канцеларија
-                  </span>
-                  <div className="category-menu kancelarija-menu hidden">
-                    <div onClick={backToSubMenu} className="kancelarija">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/kancelarija/biroa"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Бироа
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/kancelarija/kancelariski-stolovi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Канцелариски столови
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/kancelarija/gejmerski-stolovi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Гејмерски столови
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/kancelarija/kancelariski-skafovi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Канцелариски шкафови
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="trpezarija">
-                    <TableRestaurantIcon />
-                    Трпезарија
-                  </span>
-                  <div className="category-menu trpezarija-menu hidden">
-                    <div onClick={backToSubMenu} className="trpezarija">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/trpezarija/trpezariski-masi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Трпезариски маси
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/trpezarija/trpezariski-stolovi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Трпезариски столови
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/trpezarija/kujnski-garnituri"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Кујнски гарнитури
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/trpezarija/bar-stolovi-i-masi"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Бар столови и маси
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-                <li
-                  className="category-menu-trigger"
-                  onClick={categoryMenuTrigger}
-                >
-                  <span className="detska">
-                    <BedroomChildIcon />
-                    Детска соба
-                  </span>
-                  <div className="category-menu detska-menu hidden">
-                    <div onClick={backToSubMenu} className="detska">
-                      <ArrowBackIcon />
-                      Назад
-                    </div>
-                    <ul>
-                      <li>
-                        <Link
-                          to="/products/detska/kolekcii-za-detska-soba"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Колекции за детска соба
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/detska/detski-biroa"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Детски бироа
-                        </Link>
-                      </li>
-                      <li>
-                        <Link
-                          to="/products/detska/detski-lezai"
-                          style={{
-                            textDecoration: "none",
-                            color: "black",
-                            width: "100%",
-                            height: "100%",
-                            display: "flex",
-                            justifyContent: "center",
-                            alignItems: "center",
-                          }}
-                        >
-                          Лежаи
-                        </Link>
-                      </li>
-                    </ul>
-                  </div>
-                </li>
-              </ul>
-            </div>
-          </li>
-          <li>За Нас</li>
-          <li>Контакти</li>
-        </ul>
-      </div>
-      <nav className="header__menu">
-        <img src={logo} alt="logo"></img>
-        <li>
-          <Link to={"/"} className="link">
-            Почетна
-          </Link>
-        </li>
-        <li className="header__products">
-          <span className="header__productsSpan">
-            Производи <ArrowDropDownIcon />
-          </span>
-          <div className="header__dropdown">
-            <div className="header__dropdownColumn">
-              <ul id="category-ul-1">
-                <li>{categories[0] && results1}</li>
-                {/*
-                <li>
-                  <Link to="/products/dnevna/all">
-                    <span>
-                      <WeekendIcon /> Дневна
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/dnevna/agolni-garnituri">
-                        Аголни гарнитури
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/dnevna/sofi">Софи</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/dnevna/fotelji">Фотелји</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/dnevna/taburetki">Табуретки</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/dnevna/klub-masi">Клуб Маси</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/dnevna/tv-komodi">ТВ Комоди</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/dnevna/komodi">Комоди</Link>
-                    </li>
-                  </ul>
-                </li>
-                <li>
-                  <Link to="/products/hodnik/all">
-                    <span>
-                      <MeetingRoomIcon />
-                      Ходник
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/hodnik/skafovi-za-cevli">
-                        Шкафови за чевли
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/hodnik/zakacalki-i-ogledala">
-                        Закачалки и огледала
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/hodnik/kolekcii-za-hodnik">
-                        Колекции за ходник
-                      </Link>
-                    </li>
-                  </ul>
-                </li>
-                <li>
-                  <Link to="/products/kujna/all">
-                    <span>
-                      <KitchenIcon />
-                      Кујна
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/kujna/kujnski-agolni-garnituri">
-                        Кујнски аголни гарнитури
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/kujna/standarni-kujni">
-                        Стандардни кујни
-                      </Link>
-                    </li>
-                  </ul>
-                        </li>*/}
-              </ul>
-            </div>
-            <div className="header__dropdownColumn">
-              <ul>
-                <li>{categories[0] && results2}</li>
-                {/*
-                <li>
-                  <Link to="/products/spalna/all">
-                    <span>
-                      <BedIcon />
-                      Спална
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/spalna/spalni-kompleti">
-                        Спални комплети
-                      </Link>
-                    </li>
-
-                    <li>
-                      <Link to="/products/spalna/lezai">Лежаи</Link>
-                    </li>
-
-                    <li>
-                      <Link to="/products/spalna/kreveti">Кревети</Link>
-                    </li>
-
-                    <li>
-                      <Link to="/products/spalna/plakari">Плакари</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/spalna/nokni-skafcinja">
-                        Ноќни шкафчиња
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/spalna/toaletni-masi">
-                        Тоалетни маси
-                      </Link>
-                    </li>
-                  </ul>
-                </li>
-                <li>
-                  <Link to="/products/gradina/all">
-                    <span>
-                      <DeckIcon />
-                      Мебел за градина
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/gradina/gradinarski-kompleti">
-                        Градинарски комплети
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/gradina/gradinarski-lulki">
-                        Градинарски лулки
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/gradina/gradinarski-cadori">
-                        Градинарски чадори
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/gradina/gradinarski-masi">
-                        Градинарски маси
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/gradina/gradinarski-stolovi">
-                        Градинарски столови
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/gradina/gradinarsko-osvetluvanje">
-                        Градинарско осветлување
-                      </Link>
-                    </li>
-                  </ul>
-                </li>
-                      */}
-              </ul>
-            </div>
-            <div className="header__dropdownColumn">
-              <ul>
-                <li>{categories[0] && results3}</li>
-                {/*
-                <li>
-                  <Link to="/products/kancelarija/all">
-                    <span>
-                      <ChairAltIcon />
-                      Канцеларија
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/kancelarija/biroa">Бироа</Link>
-                    </li>
-                    <li>
-                      <Link to="/products/kancelarija/kancelariski-stolovi">
-                        Канцелариски столови
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/kancelarija/gejmerski-stolovi">
-                        Гејмерски столови
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/kancelarija/kancelariski-skafovi">
-                        Канцелариски шкафови
-                      </Link>
-                    </li>
-                  </ul>
-                </li>
-                <li>
-                  <Link to="/products/trpezarija/all">
-                    <span>
-                      <TableRestaurantIcon />
-                      Трпезарија
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/trpezarija/trpezariski-masi">
-                        Трпезариски маси
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/trpezarija/trpezariski-stolovi">
-                        Трпезариски столови
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/trpezarija/kujnski-garnituri">
-                        Кујнски гарнитури
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/trpezarija/bar-stolovi-i-masi">
-                        Бар столови и маси
-                      </Link>
-                    </li>
-                  </ul>
-                </li>
-                <li>
-                  <Link to="/products/detska/all">
-                    <span>
-                      <BedroomChildIcon />
-                      Детска соба
-                    </span>
-                  </Link>
-                  <ul>
-                    <li>
-                      <Link to="/products/detska/kolekcii-za-detska-soba">
-                        Колекции за детска соба
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/detska/detski-biroa">
-                        Детски бироа
-                      </Link>
-                    </li>
-                    <li>
-                      <Link to="/products/detska/detski-lezai">Лежаи</Link>
-                    </li>
-                  </ul>
-                </li>
-                */}
-              </ul>
-            </div>
-            <div className="header__dropdownColumn">
-              <ul></ul>
-            </div>
-          </div>
-        </li>
-        <li className="header__aboutUs">За Нас</li>
-        <li className="header__contacts">Контакти</li>
-      </nav>
-      <div className="header__right">
-        <div className="header__buttons">
-          {userInfo && userInfo.isAdmin && (
-            <NavDropdown
-              title={
-                <span>
-                  <AccountCircleIcon
-                    className="header__login"
-                    fontSize="large"
-                  />
-                  <p>{userInfo.name}</p>
-                </span>
-              }
-              id="basic-nav-dropdown"
-            >
-              <NavDropdown.Item
-                onClick={() => {
-                  navigate("/profile");
-                }}
-              >
-                Профил
-              </NavDropdown.Item>
-
-              <NavDropdown.Item
-                onClick={() => {
-                  navigate("/admin/dashboard");
-                }}
-              >
-                Dashboard
-              </NavDropdown.Item>
-
-              <NavDropdown.Divider />
-              <NavDropdown.Item
-                className="drowdown-item"
-                to="#signout"
-                onClick={signoutHandler}
-              >
-                Одјави се
-              </NavDropdown.Item>
-            </NavDropdown>
-          )}
-          {userInfo && !userInfo.isAdmin && (
-            <NavDropdown
-              title={
-                <span>
-                  <AccountCircleIcon
-                    className="header__login"
-                    fontSize="large"
-                  />
-                  <p>{userInfo.name}</p>
-                </span>
-              }
-              id="basic-nav-dropdown"
-            >
-              <NavDropdown.Item
-                onClick={() => {
-                  navigate("/profile");
-                }}
-              >
-                Профил
-              </NavDropdown.Item>
-
-              <NavDropdown.Item
-                onClick={() => {
-                  navigate("/orderhistory");
-                }}
-              >
-                Нарачки
-              </NavDropdown.Item>
-
-              <NavDropdown.Divider />
-              <NavDropdown.Item
-                className="drowdown-item"
-                to="#signout"
-                onClick={signoutHandler}
-              >
-                Одјави се
-              </NavDropdown.Item>
-            </NavDropdown>
-          )}
-          {!userInfo && (
-            <Link
-              to={"/signin"}
-              className="link"
-              onClick={() => {
-                navigate("/orderhistory");
-              }}
-            >
-              <span>
-                <AccountCircleIcon className="header__login" fontSize="large" />
-                <p>Најави се</p>
-              </span>
-            </Link>
-          )}
-
-          <Link to="/cart" className="badgee">
-            <span>
-              <ShoppingBasketIcon className="header__cart" fontSize="large" />
-
-              {cart.cartItems.length > 0 && (
-                <Badge pill bg="danger">
-                  {cart.cartItems.reduce((a, c) => a + c.quantity, 0)}
-                </Badge>
-              )}
-            </span>
-          </Link>
-        </div>
-        <div className="header__search">
-          <input className="header__searchInput" type="text" name="text" />
-          <button onClick={searchHandler}>
-            <SearchIcon className="header__searchIcon" fontSize="large" />
-          </button>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default Header;
Index: ontend/src/components/ImageSlider.js
===================================================================
--- frontend/src/components/ImageSlider.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,96 +1,0 @@
-import React from 'react'
-import { useState } from 'react'
-
-
-const ImageSlider = ({ slides }) => {
-    const [currentIndex, setCurrentIndex] = useState(0);
-
-    const sliderStyles = {
-        height: "100%",
-        position: "relative",
-    }
-
-    const slideStyles = {
-        display: "flex",
-        justifyContent: "space-between",
-        alignItems: "center",
-        width: "100%",
-        height: "100%",
-        backgroundPosition: "center",
-        backgroundSize: 'cover',
-        backgroundImage: `url(${slides[currentIndex].url})`
-    }
-
-    const leftArrowStyle = {
-        fontSize: '60px',
-        color: '#fff',
-        userSelect: 'none',
-        zIndex: 2,
-        cursor: 'pointer',
-        marginLeft: "10px",
-    };
-
-    const rightArrowStyle = {
-        fontSize: '60px',
-        userSelect: 'none',
-        color: '#fff',
-        zIndex: 2,
-        cursor: 'pointer',
-        marginRight: "10px",
-    };
-
-    const goToPrevious = () =>{
-        const isFirstSlide = currentIndex === 0;
-        const newIndex = isFirstSlide ? slides.length - 1 : currentIndex - 1;
-        setCurrentIndex(newIndex);
-    }
-
-    const goToNext = () =>{
-        const isLastSlide = currentIndex === slides.length - 1;
-        const newIndex = isLastSlide ? 0 : currentIndex + 1;
-        setCurrentIndex(newIndex);
-    }
-
-    /*
-    const slideBtnContainer = {
-        display: "flex",
-        justifyContent: "center",
-        alignItems: "center",
-        marginTop: "5px",
-
-    }
-
-    const slideBtn = {
-        marginLeft: "5px",
-        width: "20px",
-        height: "20px",
-        borderRadius: "50%",
-        backgroundColor: "grey",
-        cursor: "pointer",
-    }
-    
-    const changeSlide = (index) =>{
-        setCurrentIndex(index);
-    }
-
-     <div style={slideBtnContainer}>
-                <button style={slideBtn} onClick={()=>changeSlide(0)}></button>
-                <button style={slideBtn} onClick={()=>changeSlide(1)}></button>
-                <button style={slideBtn} onClick={()=>changeSlide(2)}></button>
-            </div>
-    */
-
-    return(
-        <div style={sliderStyles}>
-            
-            <div style={slideStyles}>
-                <div style={leftArrowStyle} onClick={goToPrevious}>{"<"}</div>
-                <div style={rightArrowStyle} onClick={goToNext}>{">"}</div>
-            </div>
-           
-            
-        </div>
-    )
-}
-
-export default ImageSlider
Index: ontend/src/components/JumboSlider.js
===================================================================
--- frontend/src/components/JumboSlider.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import Carousel from "react-bootstrap/Carousel";
-import image1 from "../Images/slideshow1.png";
-import image2 from "../Images/slideshow2.png";
-import image3 from "../Images/slideshow3.png";
-function CarouselFadeExample() {
-  return (
-    <Carousel fade>
-      <Carousel.Item>
-        <img className="d-block w-100" src={image1} alt="First slide" />
-      </Carousel.Item>
-      <Carousel.Item>
-        <img className="d-block w-100" src={image2} alt="Second slide" />
-      </Carousel.Item>
-      <Carousel.Item>
-        <img className="d-block w-100" src={image3} alt="Third slide" />
-      </Carousel.Item>
-    </Carousel>
-  );
-}
-
-export default CarouselFadeExample;
Index: ontend/src/components/ListProducts.js
===================================================================
--- frontend/src/components/ListProducts.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,354 +1,0 @@
-/*
-import axios from "axios";
-import React, { useEffect, useReducer, useState } from "react";
-import { useNavigate, useLocation } from "react-router-dom";
-import ListGroup from "react-bootstrap/ListGroup";
-import Button from "react-bootstrap/Button";
-import Form from "react-bootstrap/Form";
-import { getError } from "./utils";
-import { toast } from "react-toastify";
-import LoadingBox from "./LoadingBox";
-import MessageBox from "./MessageBox";
-import LinkContainer from "react-router-bootstrap/LinkContainer";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return {
-        ...state,
-        products: action.payload.products,
-        page: action.payload.page,
-        pages: action.payload.pages,
-        countProducts: action.payload.countProducts,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function ListProducts() {
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const sp = new URLSearchParams(search);
-  const category = sp.get("category") || "all";
-  const query = sp.get("query") || "all";
-  const subCategory = sp.get("subCategory") || "all";
-  const name = sp.get("name") || "all";
-  const order = sp.get("order") || "newest";
-  const page = sp.get("page") || 1;
-
-  const [{ loading, error, products, pages, countProducts }, dispatch] =
-    useReducer(reducer, { loading: true, error: "" });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );
-        dispatch({ type: "FETCH_SUCCSS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(error) });
-      }
-    };
-    fetchData();
-  }, [category, order, page, query, subCategory, error]);
-  /*
-  const [categories, setCategories] = useState([]);
-  useEffect(() => {
-    const fetchCategories = async () => {
-      try {
-        const { data } = await axios.get(`api/products/categories`);
-        setCategories(data);
-      } catch (err) {
-        toast.error(getError(err));
-      }
-    };
-    fetchCategories();
-  }, [dispatch]);
-  
-  const getFilterUrl = (filter) => {
-    const filterPage = filter.page || page;
-    const filterCategorry = filter.category || category;
-    const filterQuery = filter.query || query;
-    const filterSubCategory = filter.subCategory || subCategory;
-    const sortOrder = filter.order || order;
-    return `/search?category=${filterCategorry}&query=${filterQuery}&subCategory=${filterSubCategory}&order=${sortOrder}&page=${filterPage}`;
-  };
-
-  return (
-    <div
-      style={{
-        display: "flex",
-        flexDirection: "column",
-        alignItems: "center",
-        justifyContent: "center",
-      }}
-    >
-      {loading ? (
-        <LoadingBox></LoadingBox>
-      ) : error ? (
-        <MessageBox varriant="danger">{error}</MessageBox>
-      ) : (
-        <div className="taskContainer">
-          <h1>Производи</h1>
-          <div className="filterContainer" style={{ width: "100%" }}>
-            <Form
-              id="fff"
-              style={{
-                display: "flex",
-                alignItems: "center",
-                justifyContent: "space-around",
-              }}
-            >
-              <Form.Group>
-                <Form.Control
-                  id="filterName"
-                  placeholder="Име"
-                  value={name}
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <Form.Group>
-                <Form.Select
-                  value={category}
-                  onChange={(e) => {
-                    navigate(getFilterUrl({ category: e.target.value }));
-                  }}
-                >
-                  <option value="default">Категорија</option>
-                  <option value={"dnevna"}>Дневна</option>
-                  <option value={"spalna"}>Спална</option>
-                  <option value={"kancelarija"}>Канцеларија</option>
-                  <option value={"hodnik"}>Ходник</option>
-                  <option value={"gradina"}>Градина</option>
-                  <option value={"trpezarija"}>Трпезарија</option>
-                  <option value={"kujna"}>Кујна</option>
-                  <option value={"detska"}>Детска</option>
-                </Form.Select>
-              </Form.Group>
-              <Form.Group>
-                <Form.Select
-                  value={subCategory}
-                  onChange={(e) => {
-                    navigate(getFilterUrl({ subCategory: e.target.value }));
-                  }}
-                >
-                  <option value="default">Подкатегорија</option>
-
-                  {category === "dnevna" && (
-                    <option value="agolni-garnituri">Аголни Гарнитури</option>
-                  )}
-                  {category === "dnevna" && <option value="sofi">Софи</option>}
-                  {category === "dnevna" && (
-                    <option value="fotelji">Фотелји</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="taburetki">Табуретки</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="klub-masi">Клуб маси</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="tv-komodi">ТВ комоди</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="komodi">Комоди</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="spalni-kompleti">Спални Комплети</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="lezai">Лежаи</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="kreveti">Кревети</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="plakari">Плакари</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="nokni-skafcinja">Ноќни шкафчиња</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="toaletni-masi">Тоалетни маси</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="biroa">Бироа</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="kancelariski-stolovi">
-                      Канцелариски столови
-                    </option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="gejmerski-stolovi">Гејмерски столови</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="kancelariski-skafovi">
-                      Канцелариски шкафови
-                    </option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="skafovi-za-cevli">Шкафови за чевли</option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="zakacalki-i-ogledala">
-                      Закачалки и огледала
-                    </option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="kolekcii-za-hodnik">
-                      Колекции за ходник
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-kompleti">
-                      Градинарски комплети
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-lulki">Градинарски лулки</option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-cadori">
-                      Градинарски чадори
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-masi">Градинарски маси</option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-stolovi">
-                      Градинарски столови
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarsko-osvetluvanje">
-                      Градинарско осветлување
-                    </option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="trpezariski-masi">Трпезариски маси</option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="trpezariski-stolovi">
-                      Трпезариски столови
-                    </option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="kujnski-garnituri">Кујнски гарнитури</option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="bar-stolovi-i-masi">
-                      Бар столови и маси
-                    </option>
-                  )}
-                  {category === "kujna" && (
-                    <option value="kujnski-agolni-garnituri">
-                      Кујнски аголни гарнитури
-                    </option>
-                  )}
-                  {category === "kujna" && (
-                    <option value="standardni-kujni">Стандардни кујни</option>
-                  )}
-                  {category === "detska" && (
-                    <option value="kolekcii-za-detska-soba">
-                      Колекции за детска соба
-                    </option>
-                  )}
-                  {category === "detska" && (
-                    <option value="detski-biroa">Детски бироа</option>
-                  )}
-                  {category === "detska" && (
-                    <option value="detski-lezai">Детски лежаи</option>
-                  )}
-                </Form.Select>
-              </Form.Group>
-              <Form.Group>
-                <Form.Select
-                  id="sortOrder"
-                  value={order}
-                  onChange={(e) => {
-                    navigate(getFilterUrl({ order: e.target.value }));
-                  }}
-                >
-                  <option value={"default"}>Сортирај по цена</option>
-                  <option value={"lowFirst"}>Од ниска кон висока</option>
-                  <option value={"highFirst"}>Од висока кон ниска</option>
-                </Form.Select>
-              </Form.Group>
-              <Button variant="danger">Филтрирај</Button>
-            </Form>
-          </div>
-          <ListGroup
-            id="filteredProductsContainer"
-            variant="success"
-            style={{ width: "95%", margin: "auto", marginTop: "20px" }}
-          >
-            {products.map((item) => (
-              <ListGroup.Item key={item._id}>
-                <div
-                  style={{
-                    display: "flex",
-                    alignItems: "center",
-                    justifyContent: "space-between",
-                  }}
-                >
-                  <div style={{ display: "flex", alignItems: "center" }}>
-                    <img
-                      src={item.image}
-                      alt={item.name}
-                      className="img-fluid rounded img-thumbnail"
-                      style={{ margin: "0px" }}
-                    ></img>
-                    <span style={{ marginLeft: "20px" }}>{item.name}</span>
-                  </div>
-                  <span>{item.category}</span>
-                  <span>{item.subCategory}</span>
-                  <span>{item.countInStock}</span>
-
-                  <span>{item.price} ден</span>
-                  <Button
-                    type="button"
-                    variant="primary"
-                    style={{ height: "50px" }}
-                  >
-                    Измени
-                  </Button>
-                </div>
-              </ListGroup.Item>
-            ))}
-          </ListGroup>
-          <div>
-            {[...Array(pages).keys()].map((x) => (
-              <LinkContainer
-                key={x + 1}
-                className="mx-1"
-                to={getFilterUrl({ page: x + 1 })}
-              >
-                <Button
-                  className={Number(page) === x + 1 ? "text-bold" : ""}
-                  variant="light"
-                >
-                  {x + 1}
-                </Button>
-              </LinkContainer>
-            ))}
-          </div>
-          {/*products.map((product) => (
-          <Product key={product.slug} product={product} />
-           ))}
-        </div>
-      )}
-    </div>
-  );
-}
-
-export default ListProducts;
-*/
Index: ontend/src/components/LoadingBox.js
===================================================================
--- frontend/src/components/LoadingBox.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,12 +1,0 @@
-import Spinner from "react-bootstrap/Spinner";
-import Header from "./Header";
-
-export default function LoadingBox() {
-  return (
-    <div>
-      <Spinner animation="border" role="status">
-        <span className="visually-hidden">Loading...</span>
-      </Spinner>
-    </div>
-  );
-}
Index: ontend/src/components/MessageBox.js
===================================================================
--- frontend/src/components/MessageBox.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import Alert from "react-bootstrap/Alert";
-import Header from "./Header";
-
-export default function MessageBox(props) {
-  return (
-    <div>
-      <Alert variant={props.variant || "info"}>{props.children}</Alert>
-    </div>
-  );
-}
Index: ontend/src/components/Product.js
===================================================================
--- frontend/src/components/Product.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,96 +1,0 @@
-import React, { useContext } from "react";
-import "../styles/Product.css";
-import ShoppingBasketIcon from "@mui/icons-material/ShoppingCart";
-import { Link } from "react-router-dom";
-import { Store } from "../Store";
-import CheckIcon from "@mui/icons-material/Check";
-import ClearIcon from "@mui/icons-material/Clear";
-
-function Product({ product }) {
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const addToCartHandler = () => {
-    ctxDispatch({
-      type: "CART_ADD_ITEM",
-      payload: { ...product, quantity: 1 },
-    });
-  };
-  return (
-    <div
-      className="product__container"
-      style={{ marginLeft: "5px", marginRight: "5px", marginTop: "10px" }}
-    >
-      <Link to={`/product/${product.slug}`} style={{ height: "165.91px" }}>
-        <div className="product__img" style={{ height: "100%" }}>
-          <img
-            src={product.image}
-            alt="product"
-            style={{ height: "100%" }}
-          ></img>
-        </div>
-      </Link>
-      <div
-        className="product__textContainer"
-        style={{
-          display: "flex",
-          justifyContent: "space-evenly",
-          alignItems: "center",
-          marginLeft: "25px",
-        }}
-      >
-        <Link
-          to={`/product/${product.slug}`}
-          style={{ textDecoration: "none", color: "black" }}
-        >
-          <div className="product__name">
-            <h3>{product.name}</h3>
-          </div>
-        </Link>
-        <div className="product__price">
-          <h3 style={{ textDecoration: "none", color: "black" }}>
-            {product.price}ден
-          </h3>
-        </div>
-      </div>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-around",
-          alignItems: "center",
-        }}
-      >
-        <h5>H: {product.height}</h5>
-        <h5>W: {product.width}</h5>
-        <h5>L: {product.length}</h5>
-      </div>
-      <div
-        className="product__addToCart"
-        style={{ marginTop: "15px", display: "flex", justifyContent: "center" }}
-      >
-        <button onClick={addToCartHandler}>
-          <ShoppingBasketIcon />
-        </button>
-        <div
-          style={{
-            //width: "100%",
-            display: "flex",
-            justifyContent: "center",
-            alignItems: "center",
-            marginLeft: "10px",
-          }}
-        >
-          {product.countInStock > 0 ? (
-            <span style={{ color: "green" }}>
-              <CheckIcon></CheckIcon>Залиха
-            </span>
-          ) : (
-            <span style={{ color: "red" }}>
-              <ClearIcon></ClearIcon>Залиха
-            </span>
-          )}
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default Product;
Index: ontend/src/components/SubCategoryMenu.js
===================================================================
--- frontend/src/components/SubCategoryMenu.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,56 +1,0 @@
-import axios from "axios";
-import React, { useEffect, useReducer } from "react";
-import { Link } from "react-router-dom";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return {
-        ...state,
-        getCategories: action.payload,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function SubCategoryMenu(props) {
-  const [{ loading, getCategories }, dispatch] = useReducer(reducer, {
-    loading: true,
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        const { data } = await axios.get(
-          `/api/category/getSubCategory?subCategory=${props.subCategory}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: err });
-      }
-    };
-    fetchData();
-  }, [props.subCategory]);
-
-  return (
-    <li>
-      {getCategories && (
-        <Link
-          to={`/products/${props.category.categorySlug}/${getCategories[0].subCategorySlug}`}
-        >
-          {getCategories && getCategories[0].subCategoryName}
-        </Link>
-      )}
-    </li>
-  );
-}
-
-export default SubCategoryMenu;
Index: ontend/src/components/utils.js
===================================================================
--- frontend/src/components/utils.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export const getError = (error) => {
-  return error.response && error.response.data.message
-    ? error.response.data.message
-    : error.message;
-};
Index: ontend/src/data.js
===================================================================
--- frontend/src/data.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,32 +1,0 @@
-const data = {
-  products: [
-    {
-      name: "Арин",
-      slug: "gejmerski-stol-arin",
-      category: "office",
-      subCategory: "gaming-chair",
-      image: "/products/arin_0.jpg",
-      price: 4400,
-      countInStock: 20,
-      description:
-        "Димензии:\n- L58 B58 H92-102 см.\nЛицев материјал:\n- еко кожа\nГрадба:\n- пластика\n- челик\n* амортизер на гас",
-      dimension: "/products/arin_dp_0.jpg",
-      scheme: "products/arin_ap_0.jpg",
-    },
-    {
-      name: "Торин",
-      slug: "gejmerski-stol-torin",
-      category: "office",
-      subCategory: "gaming-chair",
-      image: "/products/torin_0.jpg",
-      price: 6300,
-      countInStock: 20,
-      description:
-        "Димензии:\n-  L63 B62 H108 / 115 см.\nЛицев материјал:\n- еко кожа\nГрадба:\n- пластика\n- челик\n* амортизер на гас",
-      dimension: "/products/arin_dp_0.jpg",
-      scheme: "products/arin_ap_0.jpg",
-    },
-  ],
-};
-
-export default data;
Index: frontend/src/index.css
===================================================================
--- frontend/src/index.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/src/index.css	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -1,9 +1,13 @@
-.checkout-steps > div {
-  border-bottom: 0.2rem solid #a0a0a0;
-  color: #a0a0a0;
+body {
+  margin: 0;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+    sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
 }
 
-.checkout-steps > div.active {
-  border-bottom: 0.2rem solid #f08000;
-  color: #f08000;
+code {
+  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+    monospace;
 }
Index: frontend/src/index.js
===================================================================
--- frontend/src/index.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ frontend/src/index.js	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -1,18 +1,12 @@
-import React from "react";
-import ReactDOM from "react-dom/client";
-import { HelmetProvider } from "react-helmet-async";
-import "./index.css";
-import App from "./App";
-import reportWebVitals from "./reportWebVitals";
-import { StoreProvider } from "./Store";
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import App from './App';
+import reportWebVitals from './reportWebVitals';
 
-const root = ReactDOM.createRoot(document.getElementById("root"));
+const root = ReactDOM.createRoot(document.getElementById('root'));
 root.render(
   <React.StrictMode>
-    <StoreProvider>
-      <HelmetProvider>
-        <App />
-      </HelmetProvider>
-    </StoreProvider>
+    <App />
   </React.StrictMode>
 );
Index: frontend/src/logo.svg
===================================================================
--- frontend/src/logo.svg	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
+++ frontend/src/logo.svg	(revision 3c906619c6626922bbed7a5782cbbcb4dc0c5b15)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
Index: ontend/src/screens/AdminAddCategoryScreen.js
===================================================================
--- frontend/src/screens/AdminAddCategoryScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,282 +1,0 @@
-import React, { useContext, useEffect, useReducer, useState } from "react";
-import Button from "react-bootstrap/Button";
-import "../styles/AdminDashboard.css";
-import { Store } from "../Store";
-import { useNavigate, Link } from "react-router-dom";
-import { Helmet } from "react-helmet-async";
-import Form from "react-bootstrap/Form";
-import Axios from "axios";
-import { toast } from "react-toastify";
-import axios from "axios";
-
-// Mesto podkategorii cuvaj stringovi od slugovite na podkategoriite vo kategoriite. Posle koga ce treba da gi stavas
-//ce pravis get povik i ce gi zemis site podkategorii so tia slugovi zacuvani u kategorijata, i vnesi gi vo lista i vrati
-//gi kako objekti (podkategorija)
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return {
-        ...state,
-        getCategories: action.payload,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function AdminDashboardScreen() {
-  const navigate = useNavigate();
-  const { state } = useContext(Store);
-  const { userInfo } = state;
-  useEffect(() => {
-    if (!userInfo || !userInfo.isAdmin) {
-      return navigate("/");
-    }
-  }, [userInfo, navigate]);
-
-  const [category, setCategory] = useState("");
-  const [categorySlug, setCategorySlug] = useState("");
-  const [categories, setCategories] = useState([]);
-  const [subCategory, setSubCategory] = useState("");
-  const [subCategorySlug, setSubCategorySlug] = useState("");
-  let counter = 0;
-  const addCategoryHandler = async (e) => {
-    e.preventDefault();
-    setCategories([]);
-    try {
-      const { data } = await Axios.post("/api/category/addCategory", {
-        category,
-        categorySlug,
-        categories,
-      });
-      toast.success("Категоријата е додадена");
-      counter++;
-    } catch (err) {
-      console.log(err);
-      toast.error("Грешка");
-    }
-  };
-
-  const addSubCategoryHandler = async (e) => {
-    e.preventDefault();
-
-    try {
-      const data3 = await Axios.get(
-        `/api/category/getCategory?category=${category}`
-      );
-
-      //console.log("<=============KATEGORII POCETNA SOSTOJBA==============>");
-      //console.log(categories);
-      let subcategoriesSlugs = data3.data[0].subCategories;
-      for (let i = 0; i < subcategoriesSlugs.length; i++) {
-        categories.push(subcategoriesSlugs[i]);
-      }
-
-      console.log(
-        "<=============KATEGORII PO DOBIVANJETO NA PODKATEGORIITE==============>"
-      );
-      console.log(categories);
-
-      const { data } = await Axios.post("/api/category/addSubCategory", {
-        subCategory,
-        subCategorySlug,
-      });
-
-      categories.push(data.subCategory.subCategorySlug);
-      console.log("<=============KATEGORII POSLE PUSH==============>");
-      console.log(categories);
-
-      //categories.push(data.subCategory);
-      //console.log(categories);
-
-      const { data1 } = await Axios.put("/api/category/updateCategory", {
-        category,
-        //categorySlug,
-        categories,
-      });
-      toast.success("Категоријата е додадена");
-      categories.splice(0, categories.length);
-
-      counter++;
-    } catch (err) {
-      console.log(err);
-      toast.error("Грешка");
-    } finally {
-    }
-  };
-
-  const [{ loading, getCategories }, dispatch] = useReducer(reducer, {
-    loading: true,
-    error: "",
-  });
-
-  const flag = 1;
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        /*
-      const { data } = await axios.get(
-        `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-      );*/
-        const { data } = await Axios.get(`/api/category/getCategories`);
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: err });
-      }
-      console.log(counter);
-    };
-    fetchData();
-  }, [counter]);
-  if (getCategories) foo(getCategories);
-  function foo(getCategories) {
-    let container = document.getElementById("selectContainer");
-    container.innerHTML = "";
-    for (let i = 0; i < getCategories.length; i++) {
-      let option = document.createElement("option");
-      option.setAttribute("value", getCategories[i].categorySlug);
-      option.innerHTML = getCategories[i].categoryName;
-      container.appendChild(option);
-    }
-  }
-
-  return (
-    <div id="pgContainer">
-      <Helmet>
-        <title>Dashboard</title>
-      </Helmet>
-      <div id="sidebarMenu">
-        <Link
-          to={"/admin/addProduct"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn" to="/admin/addProduct">
-            Додади нов производ
-          </div>
-        </Link>
-        <Link
-          to={"/admin/addCategory"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Додади категорија</div>
-        </Link>
-        <Link
-          to={"/admin/products"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Производи</div>
-        </Link>
-        <Link
-          to={"/admin/orders"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Нарачки</div>
-        </Link>
-      </div>
-      <div
-        style={{
-          display: "flex",
-          justifyContent: "space-around",
-          width: "100%",
-        }}
-      >
-        <div
-          id="category-form-container"
-          style={{
-            display: "flex",
-            flexDirection: "column",
-            alignItems: "center",
-            marginTop: "40px",
-          }}
-        >
-          <h2>Додади категорија</h2>
-          <Form
-            className="formCointainer"
-            onSubmit={addCategoryHandler}
-            style={{ marginTop: "30px" }}
-          >
-            <Form.Group controlId="category">
-              <Form.Control
-                type="text"
-                placeholder="Категорија"
-                required
-                onChange={(e) => setCategory(e.target.value)}
-              />
-            </Form.Group>
-            <Form.Group controlId="categorySlug" style={{ marginTop: "20px" }}>
-              <Form.Control
-                type="text"
-                placeholder="slug"
-                required
-                onChange={(e) => setCategorySlug(e.target.value)}
-              />
-            </Form.Group>
-            <div className="submitBtnContainer">
-              <Button variant="danger" size="lg" type="submit">
-                Додади категорија
-              </Button>
-            </div>
-          </Form>
-        </div>
-        <div
-          id="subcategory-form-container"
-          style={{
-            display: "flex",
-            flexDirection: "column",
-            alignItems: "center",
-            marginTop: "40px",
-          }}
-        >
-          <h2>Додади подкатегорија</h2>
-          <Form
-            className="formCointainer"
-            onSubmit={addSubCategoryHandler}
-            style={{ marginTop: "30px" }}
-          >
-            <Form.Group>
-              <Form.Select
-                id="selectContainer"
-                value={category}
-                onChange={(e) => {
-                  setCategory(e.target.value);
-                }}
-              ></Form.Select>
-            </Form.Group>
-            <Form.Group controlId="subcategory" style={{ marginTop: "20px" }}>
-              <Form.Control
-                type="text"
-                placeholder="Подкатегорија"
-                required
-                onChange={(e) => setSubCategory(e.target.value)}
-              />
-            </Form.Group>
-            <Form.Group
-              controlId="subcategorySlug"
-              style={{ marginTop: "20px" }}
-            >
-              <Form.Control
-                type="text"
-                placeholder="slug"
-                required
-                onChange={(e) => setSubCategorySlug(e.target.value)}
-              />
-            </Form.Group>
-            <div className="submitBtnContainer">
-              <Button variant="danger" size="lg" type="submit">
-                Додади подкатегорија
-              </Button>
-            </div>
-          </Form>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default AdminDashboardScreen;
Index: ontend/src/screens/AdminAddProductScreen.js
===================================================================
--- frontend/src/screens/AdminAddProductScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,452 +1,0 @@
-import axios from "axios";
-import React, { useState } from "react";
-import { Link } from "react-router-dom";
-import { toast } from "react-toastify";
-import Button from "react-bootstrap/Button";
-import Form from "react-bootstrap/Form";
-
-function AdminAddProductScreen() {
-  const [name, setName] = useState("");
-  const [slug, setSlug] = useState("");
-  const [category, setCategory] = useState("dnevna");
-  const [subCategory, setSubCategory] = useState("");
-  const [description, setDescription] = useState("");
-  const [price, setPrice] = useState("");
-  const [priceMontaza, setPriceMontaza] = useState("");
-  const [countInStock, setCountInStock] = useState("");
-  const [image, setImage] = useState("");
-  const [sideImage, setSideImage] = useState("");
-  const [sideImage2, setSideImage2] = useState("");
-  const [dimension, setDimension] = useState("");
-  const [scheme, setScheme] = useState("");
-  const [H, setH] = useState("");
-  const [W, setW] = useState("");
-  const [L, setL] = useState("");
-  const [message, setMessage] = useState("");
-
-  const onChangeImage = (e) => {
-    setImage(e.target.files[0]);
-  };
-  const onChangeSideImage = (e) => {
-    setSideImage(e.target.files[0]);
-  };
-  const onChangeSideImage2 = (e) => {
-    setSideImage2(e.target.files[0]);
-  };
-  const onChangeDimension = (e) => {
-    setDimension(e.target.files[0]);
-  };
-  const onChangeScheme = (e) => {
-    setScheme(e.target.files[0]);
-  };
-
-  const submitHandler = async (e) => {
-    e.preventDefault();
-
-    const formData = new FormData();
-
-    formData.append("name", name);
-    formData.append("slug", slug);
-    formData.append("category", category);
-    formData.append("subCategory", subCategory);
-    formData.append("description", description);
-    formData.append("price", price);
-    formData.append("priceMontaza", priceMontaza);
-    formData.append("countInStock", countInStock);
-    formData.append("image", image);
-    formData.append("sideImage", sideImage);
-    formData.append("sideImage2", sideImage2);
-    formData.append("dimension", dimension);
-    formData.append("scheme", scheme);
-    formData.append("H", H);
-    formData.append("W", W);
-    formData.append("L", L);
-    try {
-      const result = await axios.post("/api/products/add", formData);
-      if (result) toast.success("Product Added");
-      return;
-    } catch (error) {
-      console.log(error);
-    }
-  };
-
-  return (
-    <div id="pgContainer">
-      <div id="sidebarMenu">
-        <Link
-          to={"/admin/addProduct"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn" to="/admin/addProduct">
-            Додади нов производ
-          </div>
-        </Link>
-        <Link
-          to={"/admin/addCategory"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Додади категорија</div>
-        </Link>
-        <Link
-          to={"/admin/products"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Производи</div>
-        </Link>
-        <Link
-          to={"/admin/orders"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Нарачки</div>
-        </Link>
-      </div>
-      <div id="mainScreen">
-        <div className="taskContainer">
-          <h1>Додади нов продукт</h1>
-          <Form
-            onSubmit={submitHandler}
-            encType="multipart/form-data"
-            className="newProductFormCointainer"
-          >
-            <div className="firstRow" style={{ display: "flex" }}>
-              <Form.Group>
-                <Form.Label>Име</Form.Label>
-                <Form.Control
-                  value={name}
-                  onChange={(e) => setName(e.target.value)}
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <Form.Group>
-                <Form.Label>Слуг</Form.Label>
-                <Form.Control
-                  value={slug}
-                  onChange={(e) => setSlug(e.target.value)}
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <Form.Group>
-                <Form.Label>Категорија</Form.Label>
-                <Form.Select onChange={(e) => setCategory(e.target.value)}>
-                  <option value={"dnevna"}>Дневна</option>
-                  <option value={"spalna"}>Спална</option>
-                  <option value={"kancelarija"}>Канцеларија</option>
-                  <option value={"hodnik"}>Ходник</option>
-                  <option value={"gradina"}>Градина</option>
-                  <option value={"trpezarija"}>Трпезарија</option>
-                  <option value={"kujna"}>Кујна</option>
-                  <option value={"detska"}>Детска</option>
-                </Form.Select>
-              </Form.Group>
-              <Form.Group>
-                <Form.Label>Подкатегорија</Form.Label>
-                <Form.Select onChange={(e) => setSubCategory(e.target.value)}>
-                  <option value="default">Подкатегорија</option>
-                  {category === "dnevna" && (
-                    <option value="agolni-garnituri">Аголни Гарнитури</option>
-                  )}
-                  {category === "dnevna" && <option value="sofi">Софи</option>}
-                  {category === "dnevna" && (
-                    <option value="fotelji">Фотелји</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="taburetki">Табуретки</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="klub-masi">Клуб маси</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="tv-komodi">ТВ комоди</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="komodi">Комоди</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="spalni-kompleti">Спални Комплети</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="lezai">Лежаи</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="kreveti">Кревети</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="plakari">Плакари</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="nokni-skafcinja">Ноќни шкафчиња</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="toaletni-masi">Тоалетни маси</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="biroa">Бироа</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="kancelariski-stolovi">
-                      Канцелариски столови
-                    </option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="gejmerski-stolovi">Гејмерски столови</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="kancelariski-skafovi">
-                      Канцелариски шкафови
-                    </option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="skafovi-za-cevli">Шкафови за чевли</option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="zakacalki-i-ogledala">
-                      Закачалки и огледала
-                    </option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="kolekcii-za-hodnik">
-                      Колекции за ходник
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-kompleti">
-                      Градинарски комплети
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-lulki">Градинарски лулки</option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-cadori">
-                      Градинарски чадори
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-masi">Градинарски маси</option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-stolovi">
-                      Градинарски столови
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarsko-osvetluvanje">
-                      Градинарско осветлување
-                    </option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="trpezariski-masi">Трпезариски маси</option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="trpezariski-stolovi">
-                      Трпезариски столови
-                    </option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="kujnski-garnituri">Кујнски гарнитури</option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="bar-stolovi-i-masi">
-                      Бар столови и маси
-                    </option>
-                  )}
-                  {category === "kujna" && (
-                    <option value="kujnski-agolni-garnituri">
-                      Кујнски аголни гарнитури
-                    </option>
-                  )}
-                  {category === "kujna" && (
-                    <option value="standardni-kujni">Стандардни кујни</option>
-                  )}
-                  {category === "detska" && (
-                    <option value="kolekcii-za-detska-soba">
-                      Колекции за детска соба
-                    </option>
-                  )}
-                  {category === "detska" && (
-                    <option value="detski-biroa">Детски бироа</option>
-                  )}
-                  {category === "detska" && (
-                    <option value="detski-lezai">Детски лежаи</option>
-                  )}
-                </Form.Select>
-              </Form.Group>
-            </div>
-            <div className="secondRow">
-              <Form.Group style={{ width: "60%", marginTop: "20px" }}>
-                <Form.Label>Опис</Form.Label>
-                <Form.Control
-                  id="textArea"
-                  value={description}
-                  onChange={(e) => setDescription(e.target.value)}
-                  as="textarea"
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <div
-                style={{
-                  display: "flex",
-                  flexDirection: "column",
-                  alignItems: "center",
-                  justifyContent: "center",
-                  width: "40%",
-                }}
-              >
-                <Form.Group style={{ marginTop: "20px" }}>
-                  <Form.Label>Цена</Form.Label>
-                  <Form.Control
-                    value={price}
-                    onChange={(e) => setPrice(e.target.value)}
-                    type="number"
-                    required
-                  ></Form.Control>
-                </Form.Group>
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Цена Монтажа</Form.Label>
-                  <Form.Control
-                    value={priceMontaza}
-                    onChange={(e) => setPriceMontaza(e.target.value)}
-                    type="number"
-                    required
-                  ></Form.Control>
-                </Form.Group>
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Залиха</Form.Label>
-                  <Form.Control
-                    value={countInStock}
-                    onChange={(e) => setCountInStock(e.target.value)}
-                    type="number"
-                    required
-                  ></Form.Control>
-                </Form.Group>
-              </div>
-            </div>
-            <div className="thirdRow">
-              <div
-                style={{
-                  display: "flex",
-                  flexDirection: "column",
-                  alignItems: "center",
-                  justifyContent: "center",
-                }}
-              >
-                <Form.Group>
-                  <Form.Label>Главна слика</Form.Label>
-                  <Form.Control
-                    type="file"
-                    name="image"
-                    onChange={onChangeImage}
-                    required
-                  ></Form.Control>
-                </Form.Group>
-
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Споредна слика бр.1</Form.Label>
-                  <Form.Control
-                    type="file"
-                    name="sideImage"
-                    onChange={onChangeSideImage}
-                    required
-                  ></Form.Control>
-                </Form.Group>
-
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Споредна слика бр.2</Form.Label>
-                  <Form.Control
-                    type="file"
-                    name="sideImage2"
-                    onChange={onChangeSideImage2}
-                    required
-                  ></Form.Control>
-                </Form.Group>
-              </div>
-              <div>
-                <Form.Group
-                  style={{ display: "flex", justifyContent: "space-around" }}
-                >
-                  <div
-                    style={{
-                      display: "flex",
-                      flexDirection: "row",
-                      alignItems: "center",
-                    }}
-                  >
-                    <Form.Label>H:</Form.Label>
-                    <Form.Control
-                      type="text"
-                      name="dimension"
-                      style={{ width: "60px" }}
-                      value={H}
-                      onChange={(e) => setH(e.target.value)}
-                      required
-                    ></Form.Control>
-                  </div>
-                  <div
-                    style={{
-                      display: "flex",
-                      flexDirection: "row",
-                      alignItems: "center",
-                    }}
-                  >
-                    <Form.Label>W:</Form.Label>
-                    <Form.Control
-                      type="text"
-                      name="dimension"
-                      value={W}
-                      onChange={(e) => setW(e.target.value)}
-                      style={{ width: "60px" }}
-                      required
-                    ></Form.Control>
-                  </div>
-                  <div
-                    style={{
-                      display: "flex",
-                      flexDirection: "row",
-                      alignItems: "center",
-                    }}
-                  >
-                    <Form.Label>L:</Form.Label>
-                    <Form.Control
-                      type="text"
-                      name="dimension"
-                      style={{ width: "60px" }}
-                      value={L}
-                      onChange={(e) => setL(e.target.value)}
-                      required
-                    ></Form.Control>
-                  </div>
-                </Form.Group>
-                <Form.Group>
-                  <Form.Label>Слика со димензии</Form.Label>
-                  <Form.Control
-                    type="file"
-                    name="dimension"
-                    onChange={onChangeDimension}
-                    required
-                  ></Form.Control>
-                </Form.Group>
-
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Слика од шема</Form.Label>
-                  <Form.Control
-                    type="file"
-                    name="scheme"
-                    onChange={onChangeScheme}
-                    required
-                  ></Form.Control>
-                </Form.Group>
-              </div>
-            </div>
-            <div className="submitBtnContainer">
-              <Button variant="danger" size="lg" type="submit">
-                Додади
-              </Button>
-            </div>
-          </Form>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default AdminAddProductScreen;
Index: ontend/src/screens/AdminDashboardScreen.js
===================================================================
--- frontend/src/screens/AdminDashboardScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,57 +1,0 @@
-import React, { useContext, useEffect, useState } from "react";
-import Button from "react-bootstrap/Button";
-import "../styles/AdminDashboard.css";
-import AddProductForm from "../components/AddProductForm";
-import { Store } from "../Store";
-import { useNavigate, Link } from "react-router-dom";
-import ListProducts from "../components/ListProducts";
-import { Helmet } from "react-helmet-async";
-
-function AdminDashboardScreen() {
-  const navigate = useNavigate();
-  const { state } = useContext(Store);
-  const { userInfo } = state;
-  useEffect(() => {
-    if (!userInfo || !userInfo.isAdmin) {
-      return navigate("/");
-    }
-  }, [userInfo, navigate]);
-
-  return (
-    <div id="pgContainer">
-      <Helmet>
-        <title>Dashboard</title>
-      </Helmet>
-      <div id="sidebarMenu">
-        <Link
-          to={"/admin/addProduct"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn" to="/admin/addProduct">
-            Додади нов производ
-          </div>
-        </Link>
-        <Link
-          to={"/admin/addCategory"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Додади категорија</div>
-        </Link>
-        <Link
-          to={"/admin/products"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Производи</div>
-        </Link>
-        <Link
-          to={"/admin/orders"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Нарачки</div>
-        </Link>
-      </div>
-    </div>
-  );
-}
-
-export default AdminDashboardScreen;
Index: ontend/src/screens/AdminEditProductScreen.js
===================================================================
--- frontend/src/screens/AdminEditProductScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,345 +1,0 @@
-import axios from "axios";
-import React, { useEffect, useReducer, useState } from "react";
-import { Link, useParams } from "react-router-dom";
-import { toast } from "react-toastify";
-import Button from "react-bootstrap/Button";
-import Form from "react-bootstrap/Form";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return { ...state, product: action.payload, loading: false };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function AdminEditProductScreen() {
-  const params = useParams();
-  const { slug } = params;
-
-  const [{ loading, error, product }, dispatch] = useReducer(reducer, {
-    product: [],
-    loading: true,
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      dispatch({ type: "FETCH_REQUEST" });
-      try {
-        const result = await axios.get(`/api/products/slug/${slug}`);
-        dispatch({ type: "FETCH_SUCCESS", payload: result.data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: err.message });
-      }
-    };
-    fetchData();
-  }, [slug]);
-
-  const [category, setCategory] = useState("all");
-  const [subCategory, setSubCategory] = useState("all");
-
-  const submitHandler = async (e) => {
-    e.preventDefault();
-    let name = document.getElementById("name").value;
-    let slug = document.getElementById("slug").value;
-    let price = document.getElementById("price").value;
-    let priceMontaza = document.getElementById("priceMontaza").value;
-    let countInStock = document.getElementById("stock").value;
-    let description = document.getElementById("textArea").value;
-
-    try {
-      const { data } = await axios.put("/api/products/edit", {
-        name,
-        slug,
-        category,
-        subCategory,
-        description,
-        price,
-        priceMontaza,
-        countInStock,
-      });
-
-      toast.success("Успешно ажурирање");
-    } catch (err) {
-      dispatch({ type: "FETCH_FAIL" });
-      toast.error("Грешка");
-    }
-  };
-
-  return (
-    <div id="pgContainer">
-      <div id="sidebarMenu">
-        <Link
-          to={"/admin/addProduct"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn" to="/admin/addProduct">
-            Додади нов производ
-          </div>
-        </Link>
-        <Link
-          to={"/admin/addCategory"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Додади категорија</div>
-        </Link>
-        <Link
-          to={"/admin/products"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Производи</div>
-        </Link>
-        <Link
-          to={"/admin/orders"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Нарачки</div>
-        </Link>
-      </div>
-      <div id="mainScreen">
-        <div className="taskContainer">
-          <h1>Ажурирај продукт</h1>
-          <Form
-            onSubmit={submitHandler}
-            encType="multipart/form-data"
-            className="newProductFormCointainer"
-          >
-            <div className="firstRow" style={{ display: "flex" }}>
-              <Form.Group>
-                <Form.Label>Име</Form.Label>
-                <Form.Control
-                  id="name"
-                  defaultValue={product.name}
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <Form.Group>
-                <Form.Label>Слуг</Form.Label>
-                <Form.Control
-                  id="slug"
-                  defaultValue={slug}
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <Form.Group>
-                <Form.Label>Категорија</Form.Label>
-                <Form.Select onChange={(e) => setCategory(e.target.value)}>
-                  <option value={"all"}>Категорија</option>
-                  <option value={"dnevna"}>Дневна</option>
-                  <option value={"spalna"}>Спална</option>
-                  <option value={"kancelarija"}>Канцеларија</option>
-                  <option value={"hodnik"}>Ходник</option>
-                  <option value={"gradina"}>Градина</option>
-                  <option value={"trpezarija"}>Трпезарија</option>
-                  <option value={"kujna"}>Кујна</option>
-                  <option value={"detska"}>Детска</option>
-                </Form.Select>
-              </Form.Group>
-              <Form.Group>
-                <Form.Label>Подкатегорија</Form.Label>
-                <Form.Select
-                  onChange={(e) => {
-                    setSubCategory(e.target.value);
-                  }}
-                >
-                  <option value="all">Подкатегорија</option>
-
-                  {category === "dnevna" && (
-                    <option value="agolni-garnituri">Аголни Гарнитури</option>
-                  )}
-                  {category === "dnevna" && <option value="sofi">Софи</option>}
-                  {category === "dnevna" && (
-                    <option value="fotelji">Фотелји</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="taburetki">Табуретки</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="klub-masi">Клуб маси</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="tv-komodi">ТВ комоди</option>
-                  )}
-                  {category === "dnevna" && (
-                    <option value="komodi">Комоди</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="spalni-kompleti">Спални Комплети</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="lezai">Лежаи</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="kreveti">Кревети</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="plakari">Плакари</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="nokni-skafcinja">Ноќни шкафчиња</option>
-                  )}
-                  {category === "spalna" && (
-                    <option value="toaletni-masi">Тоалетни маси</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="biroa">Бироа</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="kancelariski-stolovi">
-                      Канцелариски столови
-                    </option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="gejmerski-stolovi">Гејмерски столови</option>
-                  )}
-                  {category === "kancelarija" && (
-                    <option value="kancelariski-skafovi">
-                      Канцелариски шкафови
-                    </option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="skafovi-za-cevli">Шкафови за чевли</option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="zakacalki-i-ogledala">
-                      Закачалки и огледала
-                    </option>
-                  )}
-                  {category === "hodnik" && (
-                    <option value="kolekcii-za-hodnik">
-                      Колекции за ходник
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-kompleti">
-                      Градинарски комплети
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-lulki">Градинарски лулки</option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-cadori">
-                      Градинарски чадори
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-masi">Градинарски маси</option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarski-stolovi">
-                      Градинарски столови
-                    </option>
-                  )}
-                  {category === "gradina" && (
-                    <option value="gradinarsko-osvetluvanje">
-                      Градинарско осветлување
-                    </option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="trpezariski-masi">Трпезариски маси</option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="trpezariski-stolovi">
-                      Трпезариски столови
-                    </option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="kujnski-garnituri">Кујнски гарнитури</option>
-                  )}
-                  {category === "trpezarija" && (
-                    <option value="bar-stolovi-i-masi">
-                      Бар столови и маси
-                    </option>
-                  )}
-                  {category === "kujna" && (
-                    <option value="kujnski-agolni-garnituri">
-                      Кујнски аголни гарнитури
-                    </option>
-                  )}
-                  {category === "kujna" && (
-                    <option value="standardni-kujni">Стандардни кујни</option>
-                  )}
-                  {category === "detska" && (
-                    <option value="kolekcii-za-detska-soba">
-                      Колекции за детска соба
-                    </option>
-                  )}
-                  {category === "detska" && (
-                    <option value="detski-biroa">Детски бироа</option>
-                  )}
-                  {category === "detska" && (
-                    <option value="detski-lezai">Детски лежаи</option>
-                  )}
-                </Form.Select>
-              </Form.Group>
-            </div>
-            <div className="secondRow">
-              <Form.Group style={{ width: "60%", marginTop: "20px" }}>
-                <Form.Label>Опис</Form.Label>
-                <Form.Control
-                  id="textArea"
-                  defaultValue={product.description}
-                  as="textarea"
-                  required
-                ></Form.Control>
-              </Form.Group>
-              <div
-                style={{
-                  display: "flex",
-                  flexDirection: "column",
-                  alignItems: "center",
-                  justifyContent: "center",
-                  width: "40%",
-                }}
-              >
-                <Form.Group style={{ marginTop: "20px" }}>
-                  <Form.Label>Цена</Form.Label>
-                  <Form.Control
-                    id="price"
-                    defaultValue={product.price}
-                    type="number"
-                    style={{ color: "black" }}
-                    required
-                  ></Form.Control>
-                </Form.Group>
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Цена Монтажа</Form.Label>
-                  <Form.Control
-                    id="priceMontaza"
-                    defaultValue={product.priceMontaza}
-                    type="number"
-                    required
-                  ></Form.Control>
-                </Form.Group>
-                <Form.Group style={{ marginTop: "10px" }}>
-                  <Form.Label>Залиха</Form.Label>
-                  <Form.Control
-                    id="stock"
-                    defaultValue={product.countInStock}
-                    type="number"
-                    required
-                  ></Form.Control>
-                </Form.Group>
-              </div>
-            </div>
-
-            <div className="submitBtnContainer">
-              <Button variant="danger" size="lg" type="submit">
-                Ажурирај
-              </Button>
-            </div>
-          </Form>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default AdminEditProductScreen;
Index: ontend/src/screens/AdminOrderScreen.js
===================================================================
--- frontend/src/screens/AdminOrderScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,277 +1,0 @@
-import axios from "axios";
-import React, { useContext, useEffect, useReducer } from "react";
-import { Link, useNavigate, useParams } from "react-router-dom";
-import LoadingBox from "../components/LoadingBox";
-import MessageBox from "../components/MessageBox";
-import { Store } from "../Store";
-import { getError } from "../components/utils";
-import { Helmet } from "react-helmet-async";
-import Row from "react-bootstrap/Row";
-import Card from "react-bootstrap/Card";
-import Col from "react-bootstrap/Col";
-import ListGroup from "react-bootstrap/ListGroup";
-import Button from "react-bootstrap/Button";
-import { toast } from "react-toastify";
-
-function reducer(state, action) {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true, error: "" };
-    case "FETCH_SUCCESS":
-      return { ...state, loading: false, order: action.payload, error: "" };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-}
-
-export default function OrderScreen() {
-  const { state } = useContext(Store);
-  const { userInfo } = state;
-  const params = useParams();
-  const { id: orderId } = params;
-  const navigate = useNavigate();
-
-  const [{ loading, error, order }, dispatch] = useReducer(reducer, {
-    loading: true,
-    order: {},
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchOrder = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        const { data } = await axios.get(`/api/orders/${orderId}`, {
-          headers: { authorization: `Bearer ${userInfo.token}` },
-        });
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    if (!userInfo) {
-      return navigate("/login");
-    }
-    if (!order._id || (order._id && order._id !== orderId)) {
-      fetchOrder();
-    }
-  }, [order, userInfo, orderId, navigate]);
-
-  const confirmOrderHandler = async () => {
-    let isConfirmed = true;
-    let _id = order._id;
-    try {
-      const { data } = await axios.put("/api/orders/action", {
-        isConfirmed,
-        _id,
-      });
-
-      toast.success("Нарачката е потврдена");
-    } catch (err) {
-      dispatch({ type: "FETCH_FAIL" });
-      toast.error("Грешка");
-    }
-  };
-  const sendOrderHandler = async () => {
-    let isShipped = true;
-    let shippedAt = Date();
-    let _id = order._id;
-    try {
-      const { data } = await axios.put("/api/orders/action", {
-        isShipped,
-        shippedAt,
-        _id,
-      });
-
-      toast.success("Нарачката е испратена");
-    } catch (err) {
-      dispatch({ type: "FETCH_FAIL" });
-      toast.error("Грешка");
-    }
-  };
-  const finishOrderHandler = async () => {
-    let isDelivered = true;
-    let deliveredAt = Date();
-    let _id = order._id;
-    try {
-      if (order.isPaid) {
-        const { data } = await axios.put("/api/orders/action", {
-          isDelivered,
-          deliveredAt,
-          _id,
-        });
-      } else {
-        let isPaid = true;
-        let paidAt = Date();
-        const { data } = await axios.put("/api/orders/action", {
-          _id,
-          isDelivered,
-          deliveredAt,
-          isPaid,
-          paidAt,
-        });
-      }
-
-      toast.success("Нарачката е пристигната");
-    } catch (err) {
-      dispatch({ type: "FETCH_FAIL" });
-      toast.error("Грешка");
-    }
-  };
-
-  return loading ? (
-    <LoadingBox></LoadingBox>
-  ) : error ? (
-    <MessageBox variant="danger">{error}</MessageBox>
-  ) : (
-    <div className="pageContainer shipPC">
-      <Helmet>
-        <title>Нарачка {orderId}</title>
-      </Helmet>
-      <h1 style={{ marginTop: "20px" }}>Нарачка {orderId}</h1>
-      <Row style={{ width: "90%" }}>
-        <Col md={8}>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Испорака</Card.Title>
-              <Card.Text>
-                <strong>Име:</strong> {order.shippingAddress.fullName}
-                <br />
-                <strong>Адреса:</strong> {order.shippingAddress.address},
-                {order.shippingAddress.city},{order.shippingAddress.postalCode},
-                {order.shippingAddress.country}
-                <br />
-                <strong>Телефон:</strong> {order.contactNumber}
-                <br />
-              </Card.Text>
-            </Card.Body>
-          </Card>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Плаќање</Card.Title>
-              <Card.Text>
-                <strong>Начин:</strong>{" "}
-                {order.paymentMethod === "Karticka"
-                  ? "Со платежна картичка"
-                  : "Во готово при достава"}
-              </Card.Text>
-              {order.isPaid ? (
-                <MessageBox variant="success">
-                  Платено на {order.paidAt}
-                </MessageBox>
-              ) : (
-                <MessageBox variant="danger">Не е платено</MessageBox>
-              )}
-            </Card.Body>
-          </Card>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Продукти</Card.Title>
-              <ListGroup variant="flush">
-                {order.orderItems.map((item) => (
-                  <ListGroup.Item key={item._id}>
-                    <div
-                      style={{
-                        display: "flex",
-                        justifyContent: "space-between",
-                      }}
-                    >
-                      <div style={{ display: "flex", alignItems: "center" }}>
-                        <img
-                          src={item.image}
-                          alt={item.name}
-                          className="img-fluid rounded img-thumbnail"
-                          style={{ margin: "0px" }}
-                        ></img>
-                        <Link to={`/product/${item.slug}`}>{item.name}</Link>
-                      </div>
-
-                      <span>{item.quantity}</span>
-
-                      <span>{item.price} ден</span>
-                    </div>
-                  </ListGroup.Item>
-                ))}
-              </ListGroup>
-            </Card.Body>
-          </Card>
-        </Col>
-        <Col md={4}>
-          <Card>
-            <Card.Body>
-              <Card.Title>Нарачка</Card.Title>
-              <ListGroup variant="flush">
-                <ListGroup.Item>
-                  <Row>
-                    <Col>Продукти:</Col>
-                    <Col>{order.itemsPrice.toFixed(2)} ден</Col>
-                  </Row>
-                </ListGroup.Item>
-                <ListGroup.Item>
-                  <Row>
-                    <Col>Испорака:</Col>
-                    <Col>{order.shippingPrice.toFixed(2)} ден</Col>
-                  </Row>
-                </ListGroup.Item>
-
-                <ListGroup.Item>
-                  <Row>
-                    <Col>
-                      <strong>Вкупно</strong>
-                    </Col>
-                    <Col>
-                      <strong>{order.totalPrice.toFixed(2)} ден</strong>
-                    </Col>
-                  </Row>
-                </ListGroup.Item>
-              </ListGroup>
-            </Card.Body>
-          </Card>
-          <Card style={{ marginTop: "40px" }}>
-            <Card.Body>
-              <Card.Title>Акции</Card.Title>
-              <ListGroup variant="flush">
-                <ListGroup.Item>
-                  <Button
-                    style={{ width: "100%" }}
-                    disabled={order.isConfirmed === true}
-                    onClick={confirmOrderHandler}
-                  >
-                    Потврди Нарачка
-                  </Button>
-                </ListGroup.Item>
-                <ListGroup.Item>
-                  <Button
-                    style={{ width: "100%" }}
-                    disabled={
-                      order.isConfirmed === false || order.isShipped === true
-                    }
-                    onClick={sendOrderHandler}
-                  >
-                    Испрати Нарачка
-                  </Button>
-                </ListGroup.Item>
-
-                <ListGroup.Item>
-                  <Button
-                    style={{ width: "100%" }}
-                    disabled={
-                      order.isConfirmed === false ||
-                      order.isShipped === false ||
-                      order.isDelivered === true
-                    }
-                    onClick={finishOrderHandler}
-                  >
-                    Нарачката е пристигната
-                  </Button>
-                </ListGroup.Item>
-              </ListGroup>
-            </Card.Body>
-          </Card>
-        </Col>
-      </Row>
-    </div>
-  );
-}
Index: ontend/src/screens/AdminOrdersScreen.js
===================================================================
--- frontend/src/screens/AdminOrdersScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,220 +1,0 @@
-import axios from "axios";
-import React, { useEffect, useReducer } from "react";
-import { Link, useLocation, useNavigate } from "react-router-dom";
-import { getError } from "../components/utils";
-import Button from "react-bootstrap/Button";
-import LoadingBox from "../components/LoadingBox";
-import MessageBox from "../components/MessageBox";
-import CheckIcon from "@mui/icons-material/Check";
-import ClearIcon from "@mui/icons-material/Clear";
-import PhonePausedIcon from "@mui/icons-material/PhonePaused";
-import HourglassBottomIcon from "@mui/icons-material/HourglassBottom";
-import LocalShippingIcon from "@mui/icons-material/LocalShipping";
-import LinkContainer from "react-router-bootstrap/LinkContainer";
-import Form from "react-bootstrap/Form";
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      console.log(action.payload);
-      return {
-        ...state,
-        //orders: action.payload,
-
-        orders: action.payload.orders,
-        page: action.payload.page,
-        pages: action.payload.pages,
-        countProducts: action.payload.countProducts,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function AdminOrdersScreen() {
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const sp = new URLSearchParams(search);
-  const isConfirmed = sp.get("isConfirmed") || "all";
-  const isShipped = sp.get("isShipped") || "all";
-  const query = sp.get("query") || "all";
-  const page = sp.get("page") || 1;
-  const [{ loading, error, orders, pages, countProducts }, dispatch] =
-    useReducer(reducer, {
-      loading: true,
-      error: "",
-    });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      dispatch({ type: "FETCH_REQUEST" });
-      try {
-        const { data } = await axios.get(
-          `/api/orders?page=${page}&isConfirmed=${isConfirmed}&isShipped=${isShipped}&query=${query}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (error) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(error) });
-      }
-    };
-    fetchData();
-  }, [isConfirmed, isShipped, page, query]);
-  const getFilterUrl = (filter) => {
-    const filterPage = filter.page || page;
-    const filterIsConfirmed = filter.isConfirmed || isConfirmed;
-    const filterIsShipped = filter.isShipped || isShipped;
-    const filterQuery = filter.query || query;
-    return `?page=${filterPage}&isConfirmed=${filterIsConfirmed}&isShipped=${filterIsShipped}&query=${filterQuery}`;
-  };
-
-  return (
-    <div id="pgContainer">
-      <div id="sidebarMenu">
-        <Link
-          to={"/admin/addProduct"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn" to="/admin/addProduct">
-            Додади нов производ
-          </div>
-        </Link>
-        <Link
-          to={"/admin/addCategory"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Додади категорија</div>
-        </Link>
-        <Link
-          to={"/admin/products"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Производи</div>
-        </Link>
-        <Link
-          to={"/admin/orders"}
-          style={{ textDecoration: "none", width: "100%" }}
-        >
-          <div className="dashboard-btn">Нарачки</div>
-        </Link>
-      </div>
-      <div id="mainScreen">
-        <div className="taskContainer">
-          <h1 style={{ marginTop: "20px" }}>Нарачки</h1>
-          <div
-            className="filterContainer"
-            style={{
-              width: "100%",
-              display: "flex",
-              justifyContent: "space-around",
-            }}
-          >
-            <Button
-              variant="danger"
-              onClick={(e) => {
-                navigate(
-                  getFilterUrl({ isConfirmed: "false", isShipped: "false" })
-                );
-              }}
-            >
-              За потврда
-            </Button>
-            <Button
-              variant="danger"
-              onClick={(e) =>
-                navigate(
-                  getFilterUrl({ isShipped: "false", isConfirmed: "true" })
-                )
-              }
-            >
-              За испорака
-            </Button>
-            <Button
-              variant="danger"
-              onClick={(e) =>
-                navigate(
-                  getFilterUrl({ isShipped: "true", isConfirmed: "true" })
-                )
-              }
-            >
-              Пристигнати
-            </Button>
-          </div>
-          {loading ? (
-            <LoadingBox></LoadingBox>
-          ) : error ? (
-            <MessageBox variant="danger">{error}</MessageBox>
-          ) : (
-            <table
-              className="table"
-              style={{ marginTop: "20px", width: "90%", textAlign: "center" }}
-            >
-              <thead>
-                <tr>
-                  <th>ID</th>
-                  <th>Дата</th>
-                  <th>Вкупно</th>
-                  <th>Статус</th>
-                  <th>Акции</th>
-                </tr>
-              </thead>
-              <tbody>
-                {orders.map((order) => (
-                  <tr key={order._id}>
-                    <td>{order._id.substring(0, 7)}</td>
-                    <td>{order.createdAt.substring(0, 10)}</td>
-                    <td>{order.totalPrice.toFixed(2)}</td>
-
-                    <td>
-                      {order.isDelivered ? (
-                        <CheckIcon></CheckIcon>
-                      ) : order.isShipped ? (
-                        <LocalShippingIcon></LocalShippingIcon>
-                      ) : order.isConfirmed ? (
-                        <HourglassBottomIcon></HourglassBottomIcon>
-                      ) : (
-                        <PhonePausedIcon></PhonePausedIcon>
-                      )}
-                    </td>
-                    <td>
-                      <Button
-                        type="button"
-                        variant="primary"
-                        onClick={() => {
-                          navigate(`/admin/order/${order._id}`);
-                        }}
-                      >
-                        Детали
-                      </Button>
-                    </td>
-                  </tr>
-                ))}
-              </tbody>
-            </table>
-          )}
-          <div style={{ marginTop: "20px" }}>
-            {[...Array(pages).keys()].map((x) => (
-              <LinkContainer
-                key={x + 1}
-                className="mx-1"
-                to={getFilterUrl({ page: x + 1 })}
-              >
-                <Button
-                  className={Number(page) === x + 1 ? "text-bold" : ""}
-                  variant={Number(page) === x + 1 ? "danger" : "light"}
-                >
-                  {x + 1}
-                </Button>
-              </LinkContainer>
-            ))}
-          </div>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default AdminOrdersScreen;
Index: ontend/src/screens/AdminProductsScreen.js
===================================================================
--- frontend/src/screens/AdminProductsScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,395 +1,0 @@
-import axios from "axios";
-import React, { useEffect, useReducer, useState } from "react";
-import { Link, useNavigate, useLocation } from "react-router-dom";
-import ListGroup from "react-bootstrap/ListGroup";
-import Button from "react-bootstrap/Button";
-import Form from "react-bootstrap/Form";
-import { getError } from "../components/utils";
-import { toast } from "react-toastify";
-import LoadingBox from "../components/LoadingBox";
-import MessageBox from "../components/MessageBox";
-import LinkContainer from "react-router-bootstrap/LinkContainer";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return {
-        ...state,
-        products: action.payload.products,
-        page: action.payload.page,
-        pages: action.payload.pages,
-        countProducts: action.payload.countProducts,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function AdminProductsScreen() {
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const sp = new URLSearchParams(search);
-  const category = sp.get("category") || "all";
-  const query = sp.get("query") || "all";
-  const subCategory = sp.get("subCategory") || "all";
-  //const name = sp.get("name") || "all";
-  const order = sp.get("order") || "newest";
-  const page = sp.get("page") || 1;
-
-  const [{ loading, error, products, pages, countProducts }, dispatch] =
-    useReducer(reducer, { loading: true, error: "" });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        /*
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );*/
-        const { data } = await axios.get(
-          `/api/products?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    fetchData();
-  }, [category, page, query, order, subCategory, error]);
-
-  const getFilterUrl = (filter) => {
-    const filterPage = filter.page || page;
-    const filterCategorry = filter.category || category;
-    const filterQuery = filter.query || query;
-    const filterSubCategory = filter.subCategory || subCategory;
-    const sortOrder = filter.order || order;
-    return `?category=${filterCategorry}&query=${filterQuery}&subCategory=${filterSubCategory}&page=${filterPage}&order=${sortOrder}`;
-  };
-
-  return (
-    <div
-      style={{
-        display: "flex",
-        flexDirection: "column",
-        alignItems: "center",
-        justifyContent: "center",
-      }}
-    >
-      {loading ? (
-        <LoadingBox></LoadingBox>
-      ) : error ? (
-        <MessageBox varriant="danger">{error}</MessageBox>
-      ) : (
-        <div id="pgContainer">
-          <div id="sidebarMenu">
-            <Link
-              to={"/admin/addProduct"}
-              style={{ textDecoration: "none", width: "100%" }}
-            >
-              <div className="dashboard-btn" to="/admin/addProduct">
-                Додади нов производ
-              </div>
-            </Link>
-            <Link
-              to={"/admin/addCategory"}
-              style={{ textDecoration: "none", width: "100%" }}
-            >
-              <div className="dashboard-btn">Додади категорија</div>
-            </Link>
-            <Link
-              to={"/admin/products"}
-              style={{ textDecoration: "none", width: "100%" }}
-            >
-              <div className="dashboard-btn">Производи</div>
-            </Link>
-            <Link
-              to={"/admin/orders"}
-              style={{ textDecoration: "none", width: "100%" }}
-            >
-              <div className="dashboard-btn">Нарачки</div>
-            </Link>
-          </div>
-          <div className="taskContainer">
-            <h1>Производи</h1>
-            <div className="filterContainer" style={{ width: "100%" }}>
-              <Form
-                id="fff"
-                style={{
-                  display: "flex",
-                  alignItems: "center",
-                  justifyContent: "space-around",
-                }}
-              >
-                {/*
-              <Form.Group>
-                <Form.Control
-                  id="filterName"
-                  placeholder="Име"
-                  onSubmit={submitHandler}
-                  required
-                ></Form.Control>
-            </Form.Group>*/}
-                <Form.Group>
-                  <Form.Select
-                    value={category}
-                    onChange={(e) => {
-                      if (e.target.value === "all") {
-                        navigate(
-                          getFilterUrl({
-                            page: 1,
-                            category: e.target.value,
-                            subCategory: "all",
-                          })
-                        );
-                      } else {
-                        navigate(
-                          getFilterUrl({ category: e.target.value, page: 1 })
-                        );
-                      }
-                    }}
-                  >
-                    <option value="all">Категорија</option>
-                    <option value={"dnevna"}>Дневна</option>
-                    <option value={"spalna"}>Спална</option>
-                    <option value={"kancelarija"}>Канцеларија</option>
-                    <option value={"hodnik"}>Ходник</option>
-                    <option value={"gradina"}>Градина</option>
-                    <option value={"trpezarija"}>Трпезарија</option>
-                    <option value={"kujna"}>Кујна</option>
-                    <option value={"detska"}>Детска</option>
-                  </Form.Select>
-                </Form.Group>
-                <Form.Group>
-                  <Form.Select
-                    value={subCategory}
-                    onChange={(e) => {
-                      navigate(
-                        getFilterUrl({ subCategory: e.target.value, page: 1 })
-                      );
-                    }}
-                  >
-                    <option value="all">Подкатегорија</option>
-
-                    {category === "dnevna" && (
-                      <option value="agolni-garnituri">Аголни Гарнитури</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="sofi">Софи</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="fotelji">Фотелји</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="taburetki">Табуретки</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="klub-masi">Клуб маси</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="tv-komodi">ТВ комоди</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="komodi">Комоди</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="spalni-kompleti">Спални Комплети</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="lezai">Лежаи</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="kreveti">Кревети</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="plakari">Плакари</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="nokni-skafcinja">Ноќни шкафчиња</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="toaletni-masi">Тоалетни маси</option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="biroa">Бироа</option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="kancelariski-stolovi">
-                        Канцелариски столови
-                      </option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="gejmerski-stolovi">
-                        Гејмерски столови
-                      </option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="kancelariski-skafovi">
-                        Канцелариски шкафови
-                      </option>
-                    )}
-                    {category === "hodnik" && (
-                      <option value="skafovi-za-cevli">Шкафови за чевли</option>
-                    )}
-                    {category === "hodnik" && (
-                      <option value="zakacalki-i-ogledala">
-                        Закачалки и огледала
-                      </option>
-                    )}
-                    {category === "hodnik" && (
-                      <option value="kolekcii-za-hodnik">
-                        Колекции за ходник
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-kompleti">
-                        Градинарски комплети
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-lulki">
-                        Градинарски лулки
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-cadori">
-                        Градинарски чадори
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-masi">Градинарски маси</option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-stolovi">
-                        Градинарски столови
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarsko-osvetluvanje">
-                        Градинарско осветлување
-                      </option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="trpezariski-masi">Трпезариски маси</option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="trpezariski-stolovi">
-                        Трпезариски столови
-                      </option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="kujnski-garnituri">
-                        Кујнски гарнитури
-                      </option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="bar-stolovi-i-masi">
-                        Бар столови и маси
-                      </option>
-                    )}
-                    {category === "kujna" && (
-                      <option value="kujnski-agolni-garnituri">
-                        Кујнски аголни гарнитури
-                      </option>
-                    )}
-                    {category === "kujna" && (
-                      <option value="standardni-kujni">Стандардни кујни</option>
-                    )}
-                    {category === "detska" && (
-                      <option value="kolekcii-za-detska-soba">
-                        Колекции за детска соба
-                      </option>
-                    )}
-                    {category === "detska" && (
-                      <option value="detski-biroa">Детски бироа</option>
-                    )}
-                    {category === "detska" && (
-                      <option value="detski-lezai">Детски лежаи</option>
-                    )}
-                  </Form.Select>
-                </Form.Group>
-                <Form.Group>
-                  <Form.Select
-                    id="sortOrder"
-                    onChange={(e) => {
-                      navigate(getFilterUrl({ order: e.target.value }));
-                    }}
-                  >
-                    <option value={"newest"}>Сортирај по цена</option>
-                    <option value={"lowFirst"}>Од ниска кон висока</option>
-                    <option value={"highFirst"}>Од висока кон ниска</option>
-                  </Form.Select>
-                </Form.Group>
-              </Form>
-            </div>
-            <ListGroup
-              id="filteredProductsContainer"
-              variant="success"
-              style={{ width: "95%", margin: "auto", marginTop: "20px" }}
-            >
-              {products.map((item) => (
-                <ListGroup.Item key={item._id}>
-                  <div
-                    style={{
-                      display: "flex",
-                      alignItems: "center",
-                      justifyContent: "space-between",
-                    }}
-                  >
-                    <div style={{ display: "flex", alignItems: "center" }}>
-                      <img
-                        src={item.image}
-                        alt={item.name}
-                        className="img-fluid rounded img-thumbnail"
-                        style={{ margin: "0px" }}
-                      ></img>
-                      <span style={{ marginLeft: "20px" }}>{item.name}</span>
-                    </div>
-                    <span>{item.category}</span>
-                    <span>{item.subCategory}</span>
-                    <span>{item.countInStock}</span>
-
-                    <span>{item.price} ден</span>
-                    <Button
-                      type="button"
-                      variant="primary"
-                      style={{ height: "50px" }}
-                      onClick={() => {
-                        navigate(`/admin/product/${item.slug}`);
-                      }}
-                    >
-                      Измени
-                    </Button>
-                  </div>
-                </ListGroup.Item>
-              ))}
-            </ListGroup>
-            <div style={{ marginTop: "20px" }}>
-              {[...Array(pages).keys()].map((x) => (
-                <LinkContainer
-                  key={x + 1}
-                  className="mx-1"
-                  to={getFilterUrl({ page: x + 1 })}
-                >
-                  <Button
-                    className={Number(page) === x + 1 ? "text-bold" : ""}
-                    variant={Number(page) === x + 1 ? "danger" : "light"}
-                  >
-                    {x + 1}
-                  </Button>
-                </LinkContainer>
-              ))}
-            </div>
-          </div>
-        </div>
-      )}
-    </div>
-  );
-}
-
-export default AdminProductsScreen;
Index: ontend/src/screens/CardPaymentScreen.js
===================================================================
--- frontend/src/screens/CardPaymentScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,176 +1,0 @@
-import React, { useContext, useEffect, useReducer, useState } from "react";
-import Container from "react-bootstrap/Container";
-import { Helmet } from "react-helmet-async";
-import Form from "react-bootstrap/Form";
-import Button from "react-bootstrap/Button";
-import { useNavigate, useParams } from "react-router-dom";
-import { Store } from "../Store";
-import axios from "axios";
-import { getError } from "../components/utils";
-import { toast } from "react-toastify";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "CREATE_REQUEST":
-      return { ...state, loading: true };
-    case "CREATE_SUCCESS":
-      return { ...state, loading: false };
-    case "CREATE_FAIL":
-      return { ...state, loading: false };
-    default:
-      return state;
-  }
-};
-
-function CardPaymentScreen() {
-  const [validated, setValidated] = useState(false);
-  const navigate = useNavigate();
-
-  const [{ loading }, dispatch] = useReducer(reducer, {
-    loading: false,
-  });
-
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { cart, userInfo } = state;
-
-  const round2 = (num) => Math.round(num * 100 + Number.EPSILON) / 100;
-  cart.itemsPrice = round2(
-    cart.cartItems.reduce((a, c) => a + c.quantity * c.price, 0)
-  );
-  cart.shippingPrice = cart.itemsPrice > 1500 ? round2(0) : round2(150);
-  cart.totalPrice = cart.itemsPrice + cart.shippingPrice;
-
-  const [cardNumber, setCardNumber] = useState("");
-  const handleChange = (event) => {
-    const result = event.target.value.replace(/[^0-9]/gi, "");
-    setCardNumber(result);
-  };
-  const [ccvNumber, setCcvNumber] = useState("");
-  const handleChangeCCV = (event) => {
-    const result = event.target.value.replace(/[^0-9]/gi, "");
-    console.log(event.currentTarget.validity.valid);
-
-    setCcvNumber(result);
-  };
-  const paymentHandler = async (event) => {
-    event.preventDefault();
-    const form = event.currentTarget;
-    if (form.checkValidity() === false) {
-      event.preventDefault();
-      event.stopPropagation();
-    }
-    if (cardNumber.length !== 16) {
-      event.preventDefault();
-      event.stopPropagation();
-    }
-    setValidated(true);
-    if (form.checkValidity() === true) {
-      try {
-        dispatch({ type: "CREATE_REQUEST" });
-        const { data } = await axios.post(
-          "/api/orders",
-          {
-            orderItems: cart.cartItems,
-            shippingAddress: cart.shippingAddress,
-            paymentMethod: cart.paymentMethod,
-            itemsPrice: cart.itemsPrice,
-            shippingPrice: cart.shippingPrice,
-            totalPrice: cart.totalPrice,
-            isPaid: true,
-            paidAt: Date.now(),
-            isConfirmed: true,
-            contactNumber: userInfo.contact,
-          },
-          {
-            headers: {
-              authorization: `Bearer ${userInfo.token}`,
-            },
-          }
-        );
-        ctxDispatch({ type: "CART_CLEAR" });
-        dispatch({ type: "CREATE_SUCCESS" });
-        localStorage.removeItem("cartItems");
-        navigate(`/order/${data.order._id}`);
-      } catch (err) {
-        dispatch({ type: "CREATE_FAIL" });
-        toast.error(getError(err));
-      }
-    }
-  };
-
-  return (
-    <div className="pageContainer">
-      <Container className="pageContainer shipPC">
-        <Helmet>
-          <title>Плати нарачка</title>
-        </Helmet>
-        <Form
-          noValidate
-          validated={validated}
-          onSubmit={paymentHandler}
-          className="formCointainer"
-        >
-          <Form.Group id="nameInput">
-            <Form.Label>Име и Презиме</Form.Label>
-            <Form.Control type="text" required></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Број на картичка</Form.Label>
-            <Form.Control
-              type="text"
-              minLength="16"
-              maxLength="16"
-              value={cardNumber}
-              onChange={handleChange}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>CVV2/CVC2</Form.Label>
-            <Form.Control
-              type="text"
-              minLength={3}
-              maxLength={3}
-              value={ccvNumber}
-              onChange={handleChangeCCV}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Рок на важност</Form.Label>
-            <div style={{ display: "flex" }}>
-              <Form.Select style={{ width: "47%", margin: "auto" }}>
-                <option value="01">01</option>
-                <option value="02">02</option>
-                <option value="03">03</option>
-                <option value="04">04</option>
-                <option value="05">05</option>
-                <option value="06">06</option>
-                <option value="07">07</option>
-                <option value="08">08</option>
-                <option value="09">09</option>
-                <option value="10">10</option>
-                <option value="11">11</option>
-                <option value="12">12</option>
-              </Form.Select>
-              <Form.Select style={{ width: "47%", margin: "auto" }}>
-                <option value="02">23</option>
-                <option value="03">24</option>
-                <option value="04">25</option>
-                <option value="05">26</option>
-              </Form.Select>
-            </div>
-          </Form.Group>
-
-          <div className="submitBtnContainer">
-            <Button variant="danger" size="lg" type="submit">
-              Плати
-            </Button>
-          </div>
-        </Form>
-      </Container>
-    </div>
-  );
-}
-
-export default CardPaymentScreen;
Index: ontend/src/screens/CartScreen.js
===================================================================
--- frontend/src/screens/CartScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,148 +1,0 @@
-import React, { useContext } from "react";
-import "../styles/CartScreen.css";
-import { Store } from "../Store";
-import { Helmet } from "react-helmet-async";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import MessageBox from "../components/MessageBox";
-import ListGroup from "react-bootstrap/ListGroup";
-import Button from "react-bootstrap/Button";
-import { Link, useNavigate } from "react-router-dom";
-import "bootstrap/dist/css/bootstrap.min.css";
-import AddCircleIcon from "@mui/icons-material/AddCircle";
-import RemoveCircleIcon from "@mui/icons-material/RemoveCircle";
-import DeleteIcon from "@mui/icons-material/Delete";
-import axios from "axios";
-function CartScreen() {
-  const navigate = useNavigate();
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const {
-    cart: { cartItems },
-  } = state;
-
-  const updateCartHandler = async (item, quantity) => {
-    const { data } = await axios.get(`/api/products/${item._id}`);
-    if (data.countInStock < quantity) {
-      window.alert("Sorry. Product is out of stock");
-      return;
-    }
-    ctxDispatch({
-      type: "CART_ADD_ITEM",
-      payload: { ...item, quantity },
-    });
-  };
-
-  const removeItemHandler = (item) => {
-    ctxDispatch({ type: "CART_REMOVE_ITEM", payload: item });
-  };
-
-  const checkoutHandler = () => {
-    navigate("/signin?redirect=/shipping");
-  };
-
-  return (
-    <div className="d-flex flex-column pageContainer">
-      <Helmet>
-        <title>Кошничка</title>
-      </Helmet>
-      <main>
-        <h2>Кошничка</h2>
-        <Row className="productRow">
-          <Col>
-            {cartItems.length === 0 ? (
-              <MessageBox>Кошничката е празна</MessageBox>
-            ) : (
-              <ListGroup>
-                {cartItems.map((item) => (
-                  <ListGroup.Item
-                    variant="dark"
-                    key={item._id}
-                    className="item"
-                  >
-                    <div className="itemContainer ">
-                      <div className="trashImgContainer">
-                        <div className="trashIconContainer">
-                          <Button
-                            variant="dark"
-                            onClick={() => removeItemHandler(item)}
-                          >
-                            <DeleteIcon />
-                          </Button>
-                        </div>
-                        <div>
-                          <Link className="link" to={`/product/${item.slug}`}>
-                            <img
-                              src={item.image}
-                              alt={item.name}
-                              className="img-fluid rounded img-thumbnail"
-                            ></img>
-                            <p>{item.name}</p>
-                          </Link>
-                        </div>
-                      </div>
-                      <div className="btnsPriceContainer">
-                        <div className="">
-                          <Button
-                            variant="danger"
-                            onClick={() =>
-                              updateCartHandler(item, item.quantity - 1)
-                            }
-                            disabled={item.quantity === 1}
-                          >
-                            <RemoveCircleIcon />
-                          </Button>{" "}
-                          <input
-                            className="quantityInput"
-                            readOnly
-                            value={item.quantity}
-                          ></input>{" "}
-                          <Button
-                            variant="danger"
-                            className="marginBtn"
-                            onClick={() =>
-                              updateCartHandler(item, item.quantity + 1)
-                            }
-                            disabled={item.quantity === item.countInStock}
-                          >
-                            <AddCircleIcon />
-                          </Button>
-                        </div>
-                        <div>
-                          <h3>{item.price}ден</h3>
-                        </div>
-                      </div>
-                    </div>
-                  </ListGroup.Item>
-                ))}
-              </ListGroup>
-            )}
-          </Col>
-        </Row>
-        {cartItems.length === 0 ? (
-          <h2></h2>
-        ) : (
-          <Row className="productRow lastRow">
-            <div className="totalPriceContainer">
-              <h3>Вкупно:</h3>
-              <h3>
-                {cartItems.reduce((a, c) => a + c.price * c.quantity, 0)}ден
-              </h3>
-            </div>
-            <div className="checkoutBtnContainer">
-              <Button
-                variant="danger"
-                size="lg"
-                onClick={checkoutHandler}
-                disabled={cartItems.length === 0}
-              >
-                НАРАЧАЈТЕ
-              </Button>
-            </div>
-          </Row>
-        )}
-      </main>
-    </div>
-  );
-}
-
-export default CartScreen;
Index: ontend/src/screens/CategoryScreen.js
===================================================================
--- frontend/src/screens/CategoryScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,444 +1,0 @@
-import React, { useEffect, useReducer, useState } from "react";
-import "../styles/Home.css";
-// import data from "./data";
-import Product from "../components/Product";
-import axios from "axios";
-import { Helmet } from "react-helmet-async";
-import { getError } from "../components/utils";
-import { useLocation, useNavigate, useParams } from "react-router-dom";
-import Form from "react-bootstrap/Form";
-import Button from "react-bootstrap/Button";
-import LinkContainer from "react-router-bootstrap/LinkContainer";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return {
-        ...state,
-        products: action.payload.products,
-        page: action.payload.page,
-        pages: action.payload.pages,
-        countProducts: action.payload.countProducts,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function Home() {
-  const params = useParams();
-  const { category, subCategory } = params;
-  var HF = 0;
-  var HT = 1000;
-  var WF = 0;
-  var WT = 1000;
-  var LF = 0;
-  var LT = 1000;
-  //const [HT, setHT] = useState(1000);
-  //const [WF, setWF] = useState(0);
-  //const [WT, setWT] = useState(1000);
-  //const [LF, setLF] = useState(0);
-  //const [LT, setLT] = useState(1000);
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const sp = new URLSearchParams(search);
-  //const category = sp.get("category") || "all";
-  const query = sp.get("query") || "all";
-  //const subCategory = sp.get("subCategory") || "all";
-  //const name = sp.get("name") || "all";
-  const order = sp.get("order") || "newest";
-  const page = sp.get("page") || 1;
-  const [{ loading, error, products, pages, countProducts }, dispatch] =
-    useReducer(reducer, { loading: true, error: "" });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        /*
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );*/
-        const { data } = await axios.get(
-          `/api/products?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}&HF=${HF}&HT=${HT}&WF=${WF}&WT=${WT}&LF=${LF}&LT=${LT}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    fetchData();
-  }, [
-    category,
-    page,
-    query,
-    order,
-    subCategory,
-    error,
-    HF,
-    HT,
-    WF,
-    WT,
-    LF,
-    LT,
-  ]);
-
-  const getFilterUrl = (filter) => {
-    const filterPage = filter.page || page;
-    const filterCategorry = filter.category || category;
-    const filterQuery = filter.query || query;
-    const filterSubCategory = filter.subCategory || subCategory;
-    const sortOrder = filter.order || order;
-    const filterHF = filter.HF || HF;
-    const filterHT = filter.HT || HT;
-    const filterWF = filter.WF || WF;
-    const filterWT = filter.WT || WT;
-    const filterLF = filter.LF || LF;
-    const filterLT = filter.LT || LT;
-    return `?category=${filterCategorry}&query=${filterQuery}&subCategory=${filterSubCategory}&page=${filterPage}&order=${sortOrder}&HF=${filterHF}&HT=${filterHT}&WF=${filterWF}&WT=${filterWT}&LF=${filterLF}&LT=${filterLT}`;
-  };
-
-  const filterHandler = (e) => {
-    e.preventDefault();
-    HF = document.getElementById("HF").value;
-    HT = document.getElementById("HT").value;
-    WF = document.getElementById("WF").value;
-    WT = document.getElementById("WT").value;
-    LF = document.getElementById("LF").value;
-    LT = document.getElementById("LT").value;
-    console.log(HT);
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        /*
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );*/
-        const { data } = await axios.get(
-          `/api/products?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}&HF=${HF}&HT=${HT}&WF=${WF}&WT=${WT}&LF=${LF}&LT=${LT}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    fetchData();
-  };
-
-  return (
-    <div style={{ width: "100%" }}>
-      <Helmet>
-        <title>MebelCity</title>
-      </Helmet>
-
-      <div className="most-popular-products">
-        {loading ? (
-          <div>Loading...</div>
-        ) : error ? (
-          <div>{error}</div>
-        ) : (
-          <div style={{ width: "100%" }}>
-            {category === "kancelarija" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>
-                Канцеларија
-              </h1>
-            ) : category === "dnevna" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>Дневна</h1>
-            ) : category === "spalna" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>Спална</h1>
-            ) : category === "hodnik" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>Ходник</h1>
-            ) : category === "kujna" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>Кујна</h1>
-            ) : category === "gradina" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>
-                Градина
-              </h1>
-            ) : category === "trpezarija" ? (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>
-                Трпезарија
-              </h1>
-            ) : (
-              <h1 style={{ textAlign: "center", marginTop: "10px" }}>
-                Детска соба
-              </h1>
-            )}
-
-            <div
-              style={{
-                width: "100%",
-                display: "flex",
-                justifyContent: "space-evenly",
-                alignItems: "center",
-                marginTop: "20px",
-              }}
-            >
-              <Form
-                onSubmit={filterHandler}
-                style={{
-                  width: "100%",
-                  display: "flex",
-                  justifyContent: "space-around",
-                  marginRight: "40px",
-                  alignItems: "center",
-                }}
-              >
-                <Form.Group style={{ display: "flex", alignItems: "center" }}>
-                  <Form.Label style={{ margin: "0px" }}>H:</Form.Label>
-                  <Form.Control
-                    style={{ width: "60px" }}
-                    id="HF"
-                    //onChange={(e) => setHF(e.target.value)}
-                  />
-                  <Form.Label style={{ margin: "0px" }}>-</Form.Label>
-                  <Form.Control
-                    style={{ width: "60px" }}
-                    id="HT"
-                    //onChange={(e) => setHT(e.target.value)}
-                  />
-                </Form.Group>
-                <Form.Group style={{ display: "flex", alignItems: "center" }}>
-                  <Form.Label style={{ margin: "0px" }}>W:</Form.Label>
-                  <Form.Control
-                    style={{ width: "60px" }}
-                    id="WF"
-                    //onChange={(e) => setWF(e.target.value)}
-                  />
-                  <Form.Label style={{ margin: "0px" }}>-</Form.Label>
-                  <Form.Control
-                    style={{ width: "60px" }}
-                    id="WT"
-                    //onChange={(e) => setWT(e.target.value)}
-                  />
-                </Form.Group>
-                <Form.Group style={{ display: "flex", alignItems: "center" }}>
-                  <Form.Label style={{ margin: "0px" }}>L:</Form.Label>
-                  <Form.Control
-                    id="LF"
-                    style={{ width: "60px" }}
-                    //onChange={(e) => setLF(e.target.value)}
-                  />
-                  <Form.Label style={{ margin: "0px" }}>-</Form.Label>
-                  <Form.Control
-                    id="LT"
-                    style={{ width: "60px" }}
-                    //onChange={(e) => setLT(e.target.value)}
-                  />
-                </Form.Group>
-                {/*}
-                <Form.Group>
-                  <Form.Select
-                    value={subCategory}
-                    onChange={(e) => {
-                      navigate(
-                        getFilterUrl({ subCategory: e.target.value, page: 1 })
-                      );
-                    }}
-                  >
-                    <option value="all">Подкатегорија</option>
-
-                    {category === "dnevna" && (
-                      <option value="agolni-garnituri">Аголни Гарнитури</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="sofi">Софи</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="fotelji">Фотелји</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="taburetki">Табуретки</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="klub-masi">Клуб маси</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="tv-komodi">ТВ комоди</option>
-                    )}
-                    {category === "dnevna" && (
-                      <option value="komodi">Комоди</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="spalni-kompleti">Спални Комплети</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="lezai">Лежаи</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="kreveti">Кревети</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="plakari">Плакари</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="nokni-skafcinja">Ноќни шкафчиња</option>
-                    )}
-                    {category === "spalna" && (
-                      <option value="toaletni-masi">Тоалетни маси</option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="biroa">Бироа</option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="kancelariski-stolovi">
-                        Канцелариски столови
-                      </option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="gejmerski-stolovi">
-                        Гејмерски столови
-                      </option>
-                    )}
-                    {category === "kancelarija" && (
-                      <option value="kancelariski-skafovi">
-                        Канцелариски шкафови
-                      </option>
-                    )}
-                    {category === "hodnik" && (
-                      <option value="skafovi-za-cevli">Шкафови за чевли</option>
-                    )}
-                    {category === "hodnik" && (
-                      <option value="zakacalki-i-ogledala">
-                        Закачалки и огледала
-                      </option>
-                    )}
-                    {category === "hodnik" && (
-                      <option value="kolekcii-za-hodnik">
-                        Колекции за ходник
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-kompleti">
-                        Градинарски комплети
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-lulki">
-                        Градинарски лулки
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-cadori">
-                        Градинарски чадори
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-masi">Градинарски маси</option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarski-stolovi">
-                        Градинарски столови
-                      </option>
-                    )}
-                    {category === "gradina" && (
-                      <option value="gradinarsko-osvetluvanje">
-                        Градинарско осветлување
-                      </option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="trpezariski-masi">Трпезариски маси</option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="trpezariski-stolovi">
-                        Трпезариски столови
-                      </option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="kujnski-garnituri">
-                        Кујнски гарнитури
-                      </option>
-                    )}
-                    {category === "trpezarija" && (
-                      <option value="bar-stolovi-i-masi">
-                        Бар столови и маси
-                      </option>
-                    )}
-                    {category === "kujna" && (
-                      <option value="kujnski-agolni-garnituri">
-                        Кујнски аголни гарнитури
-                      </option>
-                    )}
-                    {category === "kujna" && (
-                      <option value="standardni-kujni">Стандардни кујни</option>
-                    )}
-                    {category === "detska" && (
-                      <option value="kolekcii-za-detska-soba">
-                        Колекции за детска соба
-                      </option>
-                    )}
-                    {category === "detska" && (
-                      <option value="detski-biroa">Детски бироа</option>
-                    )}
-                    {category === "detska" && (
-                      <option value="detski-lezai">Детски лежаи</option>
-                    )}
-                  </Form.Select>
-                    </Form.Group>*/}
-                <Form.Group>
-                  <Form.Select
-                    id="sortOrder"
-                    onChange={(e) => {
-                      navigate(getFilterUrl({ order: e.target.value }));
-                    }}
-                  >
-                    <option value={"newest"}>Сортирај по цена</option>
-                    <option value={"lowFirst"}>Од ниска кон висока</option>
-                    <option value={"highFirst"}>Од висока кон ниска</option>
-                  </Form.Select>
-                </Form.Group>
-                <Form.Group>
-                  <Button variant="danger" size="lg" type="submit">
-                    Филтрирај
-                  </Button>
-                </Form.Group>
-              </Form>
-            </div>
-            <div
-              style={{
-                display: "flex",
-                flexWrap: "wrap",
-                justifyContent: "space-evenly",
-                alignItems: "center",
-                marginTop: "10px",
-              }}
-            >
-              {products.map((product) => (
-                <Product key={product.slug} product={product} />
-              ))}
-            </div>
-            <div
-              style={{
-                marginTop: "20px",
-                display: "flex",
-                justifyContent: "center",
-                alignItems: "center",
-              }}
-            >
-              {[...Array(pages).keys()].map((x) => (
-                <LinkContainer
-                  key={x + 1}
-                  className="mx-1"
-                  to={getFilterUrl({ page: x + 1 })}
-                >
-                  <Button
-                    className={Number(page) === x + 1 ? "text-bold" : ""}
-                    variant={Number(page) === x + 1 ? "danger" : "light"}
-                  >
-                    {x + 1}
-                  </Button>
-                </LinkContainer>
-              ))}
-            </div>
-          </div>
-        )}
-      </div>
-    </div>
-  );
-}
-
-export default Home;
Index: ontend/src/screens/Home.js
===================================================================
--- frontend/src/screens/Home.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,182 +1,0 @@
-import React, { useEffect, useReducer, useState } from "react";
-import "../styles/Home.css";
-import Header from "../components/Header";
-import ImageSlider from "../components/ImageSlider";
-import image1 from "../Images/slideshow1.png";
-import image2 from "../Images/slideshow2.png";
-import image3 from "../Images/slideshow3.png";
-import icon1 from "../Images/icon1.svg";
-import icon2 from "../Images/icon2.svg";
-import icon3 from "../Images/icon3.svg";
-import Footer from "../components/Footer";
-// import data from "./data";
-import Product from "../components/Product";
-import axios from "axios";
-import { Helmet } from "react-helmet-async";
-import { useNavigate } from "react-router-dom";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return { ...state, products: action.payload, loading: false };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function Home() {
-  const [{ loading, error, products }, dispatch] = useReducer(reducer, {
-    products: [],
-    loading: true,
-    error: "",
-  });
-  const navigate = useNavigate();
-  //const [products, setProducts] = useState([]);
-  useEffect(() => {
-    const fetchData = async () => {
-      dispatch({ type: "FETCH_REQUEST" });
-      try {
-        const result = await axios.get("/api/products");
-        dispatch({ type: "FETCH_SUCCESS", payload: result.data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: err.message });
-      }
-
-      //setProducts(result.data);
-    };
-    fetchData();
-  }, []);
-
-  const slides = [
-    { url: image1, title: "Shiping" },
-    { url: image2, title: "SchoolDiscount" },
-    { url: image3, title: "OfficeDiscount" },
-  ];
-
-  const clearActive = () => {
-    let icon1 = document.getElementById("icon1");
-    icon1.classList.remove("activeIcon");
-    let icon2 = document.getElementById("icon2");
-    icon2.classList.remove("activeIcon");
-    let icon3 = document.getElementById("icon3");
-    icon3.classList.remove("activeIcon");
-
-    let icon1Text = document.getElementById("icon1-text");
-    icon1Text.classList.remove("activeIcon");
-    let icon2Text = document.getElementById("icon2-text");
-    icon2Text.classList.remove("activeIcon");
-    let icon3Text = document.getElementById("icon3-text");
-    icon3Text.classList.remove("activeIcon");
-
-    let icon1Container = document.getElementById("1");
-    icon1Container.classList.remove("activeIconContainer");
-    let icon2Container = document.getElementById("2");
-    icon2Container.classList.remove("activeIconContainer");
-    let icon3Container = document.getElementById("3");
-    icon3Container.classList.remove("activeIconContainer");
-  };
-
-  const handleClick = (event) => {
-    let clickedIcon = document.getElementById("icon" + event.currentTarget.id);
-    let clickedIconText = document.getElementById(
-      "icon" + event.currentTarget.id + "-text"
-    );
-    clearActive();
-    clickedIcon.classList.add("activeIcon");
-    clickedIconText.classList.add("activeIcon");
-
-    let iconContainer = document.getElementById(event.currentTarget.id);
-    iconContainer.classList.add("activeIconContainer");
-
-    const icon1Text = "Бесплатна достава за нарачки над 1500 ден.";
-    const icon2Text =
-      "Ние можеме да го монтираме мебелот наместо Вас – брзо, лесно и чисто.";
-    const icon3Text = "Доставуваме над 1000 производи до 10 дена.";
-
-    let p = document.querySelector(".icon-description");
-    if (event.currentTarget.id === "1") p.textContent = icon1Text;
-    else if (event.currentTarget.id === "2") p.textContent = icon2Text;
-    else p.textContent = icon3Text;
-  };
-
-  return (
-    <div>
-      <Helmet>
-        <title>MebelCity</title>
-      </Helmet>
-      <Header />
-      <div className="sliderContainer">
-        <ImageSlider slides={slides} />
-      </div>
-      <div className="section">
-        <div className="iconWrapper">
-          <div
-            className="iconContainer activeIconContainer"
-            id="1"
-            onClick={handleClick}
-          >
-            <img
-              src={icon1}
-              alt="бесплатна достава"
-              className="icon activeIcon"
-              id="icon1"
-            />
-            <p className="icon-text activeIcon" id="icon1-text">
-              Бесплатна достава
-            </p>
-          </div>
-          <div className="iconContainer" id="2" onClick={handleClick}>
-            <img src={icon2} className="icon" alt="монтажа" id="icon2" />
-            <p className="icon-text" id="icon2-text">
-              Монтажа
-            </p>
-          </div>
-          <div className="iconContainer" onClick={handleClick} id="3">
-            <img src={icon3} alt="брза достава" className="icon" id="icon3" />
-            <p className="icon-text" id="icon3-text">
-              Брза достава
-            </p>
-          </div>
-        </div>
-        <div className="descriptionContainer">
-          <p className="icon-description">
-            Бесплатна достава за нарачки над 1500 ден.
-          </p>
-        </div>
-      </div>
-      <div className="grid-container">
-        <div
-          className="grid-item item1"
-          onClick={() => navigate("/products/dnevna/all")}
-        >
-          Дневна
-        </div>
-        <div className="grid-item item2">Ходник</div>
-        <div className="grid-item item3">Трпезарија</div>
-        <div className="grid-item item4">Спална</div>
-        <div className="grid-item item5">Кујна</div>
-        <div className="grid-item item6">Канцеларија</div>
-        <div className="grid-item item7">Детска соба</div>
-        <div className="grid-item item8">Мебел за градина</div>
-      </div>
-      <div className="most-popular-products">
-        {loading ? (
-          <div>Loading...</div>
-        ) : error ? (
-          <div>{error}</div>
-        ) : (
-          products.map((product) => (
-            <Product key={product.slug} product={product} />
-          ))
-        )}
-      </div>
-      <Footer />
-    </div>
-  );
-}
-
-export default Home;
Index: ontend/src/screens/HomeWithJumbo.js
===================================================================
--- frontend/src/screens/HomeWithJumbo.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,165 +1,0 @@
-import React from "react";
-import "../styles/Home.css";
-import Header from "../components/Header";
-
-import image1 from "../Images/slideshow1.png";
-import image2 from "../Images/slideshow2.png";
-import image3 from "../Images/slideshow3.png";
-import icon1 from "../Images/icon1.svg";
-import icon2 from "../Images/icon2.svg";
-import icon3 from "../Images/icon3.svg";
-import Footer from "../components/Footer";
-// import data from "./data";
-
-import { Helmet } from "react-helmet-async";
-import Jumbo from "../components/JumboSlider";
-import { useNavigate } from "react-router-dom";
-
-function Home() {
-  const navigate = useNavigate();
-  const clearActive = () => {
-    let icon1 = document.getElementById("icon1");
-    icon1.classList.remove("activeIcon");
-    let icon2 = document.getElementById("icon2");
-    icon2.classList.remove("activeIcon");
-    let icon3 = document.getElementById("icon3");
-    icon3.classList.remove("activeIcon");
-
-    let icon1Text = document.getElementById("icon1-text");
-    icon1Text.classList.remove("activeIcon");
-    let icon2Text = document.getElementById("icon2-text");
-    icon2Text.classList.remove("activeIcon");
-    let icon3Text = document.getElementById("icon3-text");
-    icon3Text.classList.remove("activeIcon");
-
-    let icon1Container = document.getElementById("1");
-    icon1Container.classList.remove("activeIconContainer");
-    let icon2Container = document.getElementById("2");
-    icon2Container.classList.remove("activeIconContainer");
-    let icon3Container = document.getElementById("3");
-    icon3Container.classList.remove("activeIconContainer");
-  };
-
-  const handleClick = (event) => {
-    let clickedIcon = document.getElementById("icon" + event.currentTarget.id);
-    let clickedIconText = document.getElementById(
-      "icon" + event.currentTarget.id + "-text"
-    );
-    clearActive();
-    clickedIcon.classList.add("activeIcon");
-    clickedIconText.classList.add("activeIcon");
-
-    let iconContainer = document.getElementById(event.currentTarget.id);
-    iconContainer.classList.add("activeIconContainer");
-
-    const icon1Text = "Бесплатна достава за нарачки над 1500 ден.";
-    const icon2Text =
-      "Ние можеме да го монтираме мебелот наместо Вас – брзо, лесно и чисто.";
-    const icon3Text = "Доставуваме над 1000 производи до 10 дена.";
-
-    let p = document.querySelector(".icon-description");
-    if (event.currentTarget.id === "1") p.textContent = icon1Text;
-    else if (event.currentTarget.id === "2") p.textContent = icon2Text;
-    else p.textContent = icon3Text;
-  };
-
-  return (
-    <div>
-      <Helmet>
-        <title>MebelCity</title>
-      </Helmet>
-
-      <div className="sliderContainer">
-        <Jumbo />
-      </div>
-      <div className="section">
-        <div className="iconWrapper">
-          <div
-            className="iconContainer activeIconContainer"
-            id="1"
-            onClick={handleClick}
-          >
-            <img
-              src={icon1}
-              alt="бесплатна достава"
-              className="icon activeIcon"
-              id="icon1"
-            />
-            <p className="icon-text activeIcon" id="icon1-text">
-              Бесплатна достава
-            </p>
-          </div>
-          <div className="iconContainer" id="2" onClick={handleClick}>
-            <img src={icon2} className="icon" alt="монтажа" id="icon2" />
-            <p className="icon-text" id="icon2-text">
-              монтажа
-            </p>
-          </div>
-          <div className="iconContainer" onClick={handleClick} id="3">
-            <img src={icon3} alt="брза достава" className="icon" id="icon3" />
-            <p className="icon-text" id="icon3-text">
-              Брза достава
-            </p>
-          </div>
-        </div>
-        <div className="descriptionContainer">
-          <p className="icon-description">
-            Бесплатна достава за нарачки над 1500 ден.
-          </p>
-        </div>
-      </div>
-      <div className="grid-container">
-        <div
-          className="grid-item item1"
-          onClick={() => navigate("/products/dnevna/all")}
-        >
-          Дневна
-        </div>
-        <div
-          className="grid-item item2"
-          onClick={() => navigate("/products/hodnik/all")}
-        >
-          Ходник
-        </div>
-        <div
-          className="grid-item item3"
-          onClick={() => navigate("/products/trpezarija/all")}
-        >
-          Трпезарија
-        </div>
-        <div
-          className="grid-item item4"
-          onClick={() => navigate("/products/spalna/all")}
-        >
-          Спална
-        </div>
-        <div
-          className="grid-item item5"
-          onClick={() => navigate("/products/kujna/all")}
-        >
-          Кујна
-        </div>
-        <div
-          className="grid-item item6"
-          onClick={() => navigate("/products/kancelarija/all")}
-        >
-          Канцеларија
-        </div>
-        <div
-          className="grid-item item7"
-          onClick={() => navigate("/products/detska/all")}
-        >
-          Детска соба
-        </div>
-        <div
-          className="grid-item item8"
-          onClick={() => navigate("/products/gradina/all")}
-        >
-          Мебел за градина
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default Home;
Index: ontend/src/screens/OrderHistoryScreen.js
===================================================================
--- frontend/src/screens/OrderHistoryScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,112 +1,0 @@
-import axios from "axios";
-import React, { useContext, useEffect, useReducer } from "react";
-import { Helmet } from "react-helmet-async";
-import { useNavigate } from "react-router-dom";
-import LoadingBox from "../components/LoadingBox";
-import MessageBox from "../components/MessageBox";
-import { getError } from "../components/utils";
-import { Store } from "../Store";
-import Button from "react-bootstrap/Button";
-import CheckIcon from "@mui/icons-material/Check";
-import ClearIcon from "@mui/icons-material/Clear";
-import PhonePausedIcon from "@mui/icons-material/PhonePaused";
-import LocalShippingIcon from "@mui/icons-material/LocalShipping";
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return { ...state, orders: action.payload, loading: false };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function OrderHistoryScreen() {
-  const { state } = useContext(Store);
-  const { userInfo } = state;
-  const navigate = useNavigate();
-
-  const [{ loading, error, orders }, dispatch] = useReducer(reducer, {
-    loading: true,
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      dispatch({ type: "FETCH_REQUEST" });
-      try {
-        const { data } = await axios.get("/api/orders/mine", {
-          headers: { Authorization: `Bearer ${userInfo.token}` },
-        });
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (error) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(error) });
-      }
-    };
-    fetchData();
-  }, [userInfo]);
-
-  return (
-    <div className="pageContainer shipPC" style={{ justifyContent: "normal" }}>
-      <Helmet>
-        <title>Историја на нарачки</title>
-      </Helmet>
-      <h1 style={{ marginTop: "20px" }}>Историја на нарачки</h1>
-      {loading ? (
-        <LoadingBox></LoadingBox>
-      ) : error ? (
-        <MessageBox variant="danger">{error}</MessageBox>
-      ) : (
-        <table
-          className="table"
-          style={{ marginTop: "20px", width: "90%", textAlign: "center" }}
-        >
-          <thead>
-            <tr>
-              <th>ID</th>
-              <th>Дата</th>
-              <th>Вкупно</th>
-              <th>Статус</th>
-              <th>Акции</th>
-            </tr>
-          </thead>
-          <tbody>
-            {orders.map((order) => (
-              <tr key={order._id}>
-                <td>{order._id.substring(0, 7)}</td>
-                <td>{order.createdAt.substring(0, 10)}</td>
-                <td>{order.totalPrice.toFixed(2)}</td>
-
-                <td>
-                  {order.isDelivered ? (
-                    <CheckIcon></CheckIcon>
-                  ) : order.isShipped ? (
-                    <LocalShippingIcon></LocalShippingIcon>
-                  ) : (
-                    <PhonePausedIcon></PhonePausedIcon>
-                  )}
-                </td>
-                <td>
-                  <Button
-                    type="button"
-                    variant="primary"
-                    onClick={() => {
-                      navigate(`/order/${order._id}`);
-                    }}
-                  >
-                    Детали
-                  </Button>
-                </td>
-              </tr>
-            ))}
-          </tbody>
-        </table>
-      )}
-    </div>
-  );
-}
-
-export default OrderHistoryScreen;
Index: ontend/src/screens/OrderScreen.js
===================================================================
--- frontend/src/screens/OrderScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,187 +1,0 @@
-import axios from "axios";
-import React, { useContext, useEffect, useReducer } from "react";
-import { Link, useNavigate, useParams } from "react-router-dom";
-import LoadingBox from "../components/LoadingBox";
-import MessageBox from "../components/MessageBox";
-import { Store } from "../Store";
-import { getError } from "../components/utils";
-import { Helmet } from "react-helmet-async";
-import Row from "react-bootstrap/Row";
-import Card from "react-bootstrap/Card";
-import Col from "react-bootstrap/Col";
-import ListGroup from "react-bootstrap/ListGroup";
-
-function reducer(state, action) {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true, error: "" };
-    case "FETCH_SUCCESS":
-      return { ...state, loading: false, order: action.payload, error: "" };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-}
-
-export default function OrderScreen() {
-  const { state } = useContext(Store);
-  const { userInfo } = state;
-  const params = useParams();
-  const { id: orderId } = params;
-  const navigate = useNavigate();
-
-  const [{ loading, error, order }, dispatch] = useReducer(reducer, {
-    loading: true,
-    order: {},
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchOrder = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        const { data } = await axios.get(`/api/orders/${orderId}`, {
-          headers: { authorization: `Bearer ${userInfo.token}` },
-        });
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    if (!userInfo) {
-      return navigate("/login");
-    }
-    if (!order._id || (order._id && order._id !== orderId)) {
-      fetchOrder();
-    }
-  }, [order, userInfo, orderId, navigate]);
-
-  return loading ? (
-    <LoadingBox></LoadingBox>
-  ) : error ? (
-    <MessageBox variant="danger">{error}</MessageBox>
-  ) : (
-    <div className="pageContainer shipPC">
-      <Helmet>
-        <title>Нарачка {orderId}</title>
-      </Helmet>
-      <h1 style={{ marginTop: "20px" }}>Нарачка {orderId}</h1>
-      <Row style={{ width: "90%" }}>
-        <Col md={8}>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Испорака</Card.Title>
-              <Card.Text>
-                <strong>Име:</strong> {order.shippingAddress.fullName}
-                <br />
-                <strong>Адреса:</strong> {order.shippingAddress.address},
-                {order.shippingAddress.city},{order.shippingAddress.postalCode},
-                {order.shippingAddress.country}
-              </Card.Text>
-              {order.isDelivered ? (
-                <MessageBox variant="success">
-                  Доставено на {order.deliveredAt}
-                </MessageBox>
-              ) : order.isShipped ? (
-                <MessageBox variant="primary">
-                  Вашата нарачка е испратена.
-                </MessageBox>
-              ) : order.isConfirmed ? (
-                <MessageBox variant="primary">
-                  Вашата нарачка се процесира.
-                </MessageBox>
-              ) : (
-                <MessageBox variant="danger">
-                  Потребно е да ја потврдите нарачката. Ќе бидете контактирани
-                  преку телефонскиот број оставен за контакт.
-                </MessageBox>
-              )}
-            </Card.Body>
-          </Card>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Плаќање</Card.Title>
-              <Card.Text>
-                <strong>Начин:</strong>{" "}
-                {order.paymentMethod === "Karticka"
-                  ? "Со платежна картичка"
-                  : "Во готово при достава"}
-              </Card.Text>
-              {order.isPaid ? (
-                <MessageBox variant="success">
-                  Платено на {order.paidAt}
-                </MessageBox>
-              ) : (
-                <MessageBox variant="danger">Не е платено</MessageBox>
-              )}
-            </Card.Body>
-          </Card>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Продукти</Card.Title>
-              <ListGroup variant="flush">
-                {order.orderItems.map((item) => (
-                  <ListGroup.Item key={item._id}>
-                    <div
-                      style={{
-                        display: "flex",
-                        justifyContent: "space-between",
-                      }}
-                    >
-                      <div style={{ display: "flex", alignItems: "center" }}>
-                        <img
-                          src={item.image}
-                          alt={item.name}
-                          className="img-fluid rounded img-thumbnail"
-                          style={{ margin: "0px" }}
-                        ></img>
-                        <Link to={`/product/${item.slug}`}>{item.name}</Link>
-                      </div>
-
-                      <span>{item.quantity}</span>
-
-                      <span>{item.price} ден</span>
-                    </div>
-                  </ListGroup.Item>
-                ))}
-              </ListGroup>
-            </Card.Body>
-          </Card>
-        </Col>
-        <Col md={4}>
-          <Card>
-            <Card.Body>
-              <Card.Title>Нарачка</Card.Title>
-              <ListGroup variant="flush">
-                <ListGroup.Item>
-                  <Row>
-                    <Col>Продукти:</Col>
-                    <Col>{order.itemsPrice.toFixed(2)} ден</Col>
-                  </Row>
-                </ListGroup.Item>
-                <ListGroup.Item>
-                  <Row>
-                    <Col>Испорака:</Col>
-                    <Col>{order.shippingPrice.toFixed(2)} ден</Col>
-                  </Row>
-                </ListGroup.Item>
-
-                <ListGroup.Item>
-                  <Row>
-                    <Col>
-                      <strong>Вкупно</strong>
-                    </Col>
-                    <Col>
-                      <strong>{order.totalPrice.toFixed(2)} ден</strong>
-                    </Col>
-                  </Row>
-                </ListGroup.Item>
-              </ListGroup>
-            </Card.Body>
-          </Card>
-        </Col>
-      </Row>
-    </div>
-  );
-}
Index: ontend/src/screens/PaymentMethodScreen.js
===================================================================
--- frontend/src/screens/PaymentMethodScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,79 +1,0 @@
-import React, { useContext, useEffect, useState } from "react";
-import { Helmet } from "react-helmet-async";
-import CheckoutSteps from "../components/CheckoutSteps";
-import Container from "react-bootstrap/Container";
-import Button from "react-bootstrap/Button";
-import Form from "react-bootstrap/Form";
-import { Store } from "../Store";
-import { useNavigate } from "react-router-dom";
-import CreditCardIcon from "@mui/icons-material/CreditCard";
-
-function PaymentMethodScreen() {
-  const navigate = useNavigate();
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const {
-    cart: { shippingAddress, paymentMethod },
-  } = state;
-  const [paymentMethodName, setPaymentMethod] = useState(
-    paymentMethod || "Karticka"
-  );
-
-  useEffect(() => {
-    if (!shippingAddress.address) {
-      navigate("/shipping");
-    }
-  }, [shippingAddress, navigate]);
-  const submitHandler = (e) => {
-    e.preventDefault();
-    ctxDispatch({ type: "SAVE_PAYMENT_METHOD", payload: paymentMethodName });
-    localStorage.setItem("paymentMethod", paymentMethodName);
-    navigate("/placeorder");
-  };
-  return (
-    <div className="pageContainer shipPC">
-      <CheckoutSteps step1 step2 step3 />
-      <Container className="main">
-        <Helmet>
-          <title>Начин на наплата</title>
-        </Helmet>
-        <h1 style={{ marginTop: "10px" }}>Начин на наплата</h1>
-        <Form
-          onSubmit={submitHandler}
-          style={{
-            display: "flex",
-            flexDirection: "column",
-            alignItems: "center",
-          }}
-        >
-          <div className="radioContainer" style={{ marginTop: "10px" }}>
-            <Form.Check
-              type="radio"
-              id="Karticka"
-              label="Со платежна картичка"
-              value="Karticka"
-              checked={paymentMethodName === "Karticka"}
-              onChange={(e) => setPaymentMethod(e.target.value)}
-            />
-          </div>
-          <div className="radioContainer" style={{ marginTop: "10px" }}>
-            <Form.Check
-              type="radio"
-              id="voGotovo"
-              label="Во готово при достава"
-              value="voGotovo"
-              checked={paymentMethodName === "voGotovo"}
-              onChange={(e) => setPaymentMethod(e.target.value)}
-            />
-          </div>
-          <div style={{ marginTop: "20px" }}>
-            <Button variant="danger" type="submit">
-              Продолжи
-            </Button>
-          </div>
-        </Form>
-      </Container>
-    </div>
-  );
-}
-
-export default PaymentMethodScreen;
Index: ontend/src/screens/PlaceOrderScreen.js
===================================================================
--- frontend/src/screens/PlaceOrderScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,218 +1,0 @@
-import React, { useContext, useEffect, useReducer } from "react";
-import Axios from "axios";
-import { Helmet } from "react-helmet-async";
-import CheckoutSteps from "../components/CheckoutSteps";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Card from "react-bootstrap/Card";
-import Button from "react-bootstrap/Button";
-import ListGroup from "react-bootstrap/ListGroup";
-import { getError } from "../components/utils";
-import { toast } from "react-toastify";
-import { Store } from "../Store";
-import { Link, useNavigate } from "react-router-dom";
-import LoadingBox from "../components/LoadingBox";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "CREATE_REQUEST":
-      return { ...state, loading: true };
-    case "CREATE_SUCCESS":
-      return { ...state, loading: false };
-    case "CREATE_FAIL":
-      return { ...state, loading: false };
-    default:
-      return state;
-  }
-};
-
-function PlaceOrderScreen() {
-  const navigate = useNavigate();
-
-  const [{ loading }, dispatch] = useReducer(reducer, {
-    loading: false,
-  });
-
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { cart, userInfo } = state;
-
-  const round2 = (num) => Math.round(num * 100 + Number.EPSILON) / 100;
-  cart.itemsPrice = round2(
-    cart.cartItems.reduce((a, c) => a + c.quantity * c.price, 0)
-  );
-  cart.shippingPrice = cart.itemsPrice > 1500 ? round2(0) : round2(150);
-  cart.totalPrice = cart.itemsPrice + cart.shippingPrice;
-
-  const paymentHandler = async () => {
-    navigate(`/placeorder/payment`);
-  };
-
-  const placeOrderHandler = async () => {
-    try {
-      dispatch({ type: "CREATE_REQUEST" });
-      const { data } = await Axios.post(
-        "/api/orders",
-        {
-          orderItems: cart.cartItems,
-          shippingAddress: cart.shippingAddress,
-          paymentMethod: cart.paymentMethod,
-          itemsPrice: cart.itemsPrice,
-          shippingPrice: cart.shippingPrice,
-          totalPrice: cart.totalPrice,
-          isConfirmed: false,
-          contactNumber: userInfo.contact,
-        },
-        {
-          headers: {
-            authorization: `Bearer ${userInfo.token}`,
-          },
-        }
-      );
-      ctxDispatch({ type: "CART_CLEAR" });
-      dispatch({ type: "CREATE_SUCCESS" });
-      localStorage.removeItem("cartItems");
-      navigate(`/order/${data.order._id}`);
-    } catch (err) {
-      dispatch({ type: "CREATE_FAIL" });
-      toast.error(getError(err));
-    }
-  };
-
-  useEffect(() => {
-    if (!cart.paymentMethod) {
-      navigate("/payment");
-    }
-  }, [cart, navigate]);
-
-  return (
-    <div className="pageContainer shipPC">
-      <CheckoutSteps step1 step2 step3 step4 />
-
-      <Helmet>
-        <title>Потврди нарачка</title>
-      </Helmet>
-      <h1 style={{ marginTop: "20px" }}>Потврди нарачка</h1>
-      <Row style={{ width: "90%" }}>
-        <Col md={8}>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Испорака</Card.Title>
-              <Card.Text>
-                <strong>Име:</strong> {cart.shippingAddress.fullName}
-                <br />
-                <strong>Адреса:</strong> {cart.shippingAddress.address},
-                {cart.shippingAddress.city},{cart.shippingAddress.postalCode},
-                {cart.shippingAddress.country}
-                <br />
-              </Card.Text>
-              <Link to="/shipping">Измени</Link>
-            </Card.Body>
-          </Card>
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Плаќање</Card.Title>
-              <Card.Text>
-                <strong>Начин:</strong>{" "}
-                {cart.paymentMethod === "Karticka"
-                  ? "Со платежна картичка"
-                  : "Во готово при достава"}
-              </Card.Text>
-              <Link to="/payment">Измени</Link>
-            </Card.Body>
-          </Card>
-
-          <Card className="mb-3">
-            <Card.Body>
-              <Card.Title>Продукти</Card.Title>
-              <ListGroup variant="flush">
-                {cart.cartItems.map((item) => (
-                  <ListGroup.Item key={item._id}>
-                    <div
-                      style={{
-                        display: "flex",
-                        justifyContent: "space-between",
-                      }}
-                    >
-                      <div style={{ display: "flex", alignItems: "center" }}>
-                        <img
-                          src={item.image}
-                          alt={item.name}
-                          className="img-fluid rounded img-thumbnail"
-                          style={{ margin: "0px" }}
-                        ></img>
-                        <Link to={`/product/${item.slug}`}>{item.name}</Link>
-                      </div>
-
-                      <span>{item.quantity}</span>
-
-                      <span>{item.price} ден</span>
-                    </div>
-                  </ListGroup.Item>
-                ))}
-              </ListGroup>
-              <Link to="/cart">Измени</Link>
-            </Card.Body>
-          </Card>
-        </Col>
-        <Col md={4}>
-          <Card>
-            <Card.Body>
-              <Card.Title>Нарачка</Card.Title>
-              <ListGroup variant="flush">
-                <ListGroup.Item>
-                  <Row>
-                    <Col>Продукти:</Col>
-                    <Col>{cart.itemsPrice.toFixed(2)} ден</Col>
-                  </Row>
-                </ListGroup.Item>
-                <ListGroup.Item>
-                  <Row>
-                    <Col>Испорака:</Col>
-                    <Col>{cart.shippingPrice.toFixed(2)} ден</Col>
-                  </Row>
-                </ListGroup.Item>
-
-                <ListGroup.Item>
-                  <Row>
-                    <Col>
-                      <strong>Вкупно</strong>
-                    </Col>
-                    <Col>
-                      <strong>{cart.totalPrice.toFixed(2)} ден</strong>
-                    </Col>
-                  </Row>
-                </ListGroup.Item>
-                <ListGroup.Item>
-                  <div className="d-grid">
-                    {cart.paymentMethod === "Karticka" ? (
-                      <Button
-                        type="button"
-                        onClick={paymentHandler}
-                        disabled={cart.cartItems.length === 0}
-                        variant="danger"
-                      >
-                        Плати
-                      </Button>
-                    ) : (
-                      <Button
-                        type="button"
-                        onClick={placeOrderHandler}
-                        disabled={cart.cartItems.length === 0}
-                        variant="danger"
-                      >
-                        Потврди нарачка
-                      </Button>
-                    )}
-                  </div>
-                  {loading && <LoadingBox></LoadingBox>}
-                </ListGroup.Item>
-              </ListGroup>
-            </Card.Body>
-          </Card>
-        </Col>
-      </Row>
-    </div>
-  );
-}
-
-export default PlaceOrderScreen;
Index: ontend/src/screens/ProductScreen.js
===================================================================
--- frontend/src/screens/ProductScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,115 +1,0 @@
-import axios from "axios";
-import React, { useEffect, useReducer } from "react";
-import { Helmet } from "react-helmet-async";
-import { useParams } from "react-router-dom";
-import Footer from "../components/Footer";
-import "bootstrap/dist/css/bootstrap.min.css";
-import Header from "../components/Header";
-import icon1 from "../Images/icon3.svg";
-import ShoppingBasketIcon from "@mui/icons-material/ShoppingCart";
-import "../styles/ProductScreen.css";
-import Container from "react-bootstrap/Container";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return { ...state, product: action.payload, loading: false };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function ProductScreen() {
-  const params = useParams();
-  const { slug } = params;
-
-  const [{ loading, error, product }, dispatch] = useReducer(reducer, {
-    product: [],
-    loading: true,
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      dispatch({ type: "FETCH_REQUEST" });
-      try {
-        const result = await axios.get(`/api/products/slug/${slug}`);
-        dispatch({ type: "FETCH_SUCCESS", payload: result.data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: err.message });
-      }
-    };
-    fetchData();
-  }, [slug]);
-
-  return loading ? (
-    <div>Loading...</div>
-  ) : error ? (
-    <div>{error}</div>
-  ) : (
-    <div>
-      <Helmet>
-        <title>{product.name}</title>
-      </Helmet>
-      <div>
-        <Header />
-        <Container>
-          <div className="left-side">
-            <div className="mainImg">
-              <img src={product.image} alt={product.name}></img>
-            </div>
-            <div className="sideImgContainer">
-              <div className="sideImg">
-                <img src={product.image} alt={product.name}></img>
-              </div>
-              <div className="sideImg">
-                <img src={product.sideImage} alt={product.name}></img>
-              </div>
-              <div className="sideImg">
-                <img src={product.sideImage2} alt={product.name}></img>
-              </div>
-            </div>
-          </div>
-          <div className="right-side">
-            <div className="name-container">
-              <h2>{product.name}</h2>
-            </div>
-            <div className="price-container">
-              <div className="price-left">
-                <h2>{product.price} ден</h2>
-                <span>
-                  <img src={icon1} alt="10-day-delivery"></img>Бесплатна
-                  достава: 10 дена
-                </span>
-              </div>
-              <div className="price-right">
-                <button className="addToCartBtn">
-                  <ShoppingBasketIcon />
-                  ДОДАЈ ВО КОШНИЧКА
-                </button>
-              </div>
-            </div>
-
-            <div className="informationContainer">
-              <div className="table">
-                <div>Опис</div>
-                <div>Димензии</div>
-                <div>Монтажа</div>
-                <div>Шема за монтажа</div>
-              </div>
-            </div>
-          </div>
-        </Container>
-        <Footer />
-      </div>
-    </div>
-  );
-}
-
-export default ProductScreen;
Index: ontend/src/screens/ProductScreenBootstrap.js
===================================================================
--- frontend/src/screens/ProductScreenBootstrap.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,233 +1,0 @@
-import axios from "axios";
-import React, { useContext, useEffect, useReducer } from "react";
-import { Helmet } from "react-helmet-async";
-import { useNavigate, useParams } from "react-router-dom";
-import Footer from "../components/Footer";
-import "bootstrap/dist/css/bootstrap.min.css";
-import Header from "../components/Header";
-import icon1 from "../Images/icon3.svg";
-import ShoppingBasketIcon from "@mui/icons-material/ShoppingCart";
-import "../styles/ProductScreen.css";
-import Container from "react-bootstrap/Container";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Button from "react-bootstrap/Button";
-import Table from "react-bootstrap/Table";
-import LoadingBox from "../components/LoadingBox";
-import MessageBox from "../components/MessageBox";
-import { getError } from "../components/utils";
-import { Store } from "../Store";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return { ...state, product: action.payload, loading: false };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function ProductScreen() {
-  const navigate = useNavigate();
-  const params = useParams();
-  const { slug } = params;
-
-  const [{ loading, error, product }, dispatch] = useReducer(reducer, {
-    product: [],
-    loading: true,
-    error: "",
-  });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      dispatch({ type: "FETCH_REQUEST" });
-      try {
-        const result = await axios.get(`/api/products/slug/${slug}`);
-        dispatch({ type: "FETCH_SUCCESS", payload: result.data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    fetchData();
-  }, [slug]);
-
-  const handleClick = (event) => {
-    let tmp = document.querySelector("#tmp");
-    if (tmp != null) {
-      tmp.parentNode.removeChild(tmp);
-      if (document.querySelector("#tmp") != null) {
-        let tmp = document.querySelector("#tmp");
-        tmp.parentNode.removeChild(tmp);
-      }
-    }
-    if (event.target.textContent === "Опис") {
-      let pre = document.createElement("pre");
-      pre.setAttribute("id", "tmp");
-      pre.textContent = product.description;
-      event.target.appendChild(pre);
-    } else if (event.target.textContent === "Монтажа") {
-      let table = document.createElement("table");
-      let thModel = document.createElement("th");
-      let thPrice = document.createElement("th");
-      let tdName = document.createElement("td");
-      let tdPrice = document.createElement("td");
-      let tr1 = document.createElement("tr");
-      let tr2 = document.createElement("tr");
-      thModel.innerHTML = "Модел";
-      thPrice.innerHTML = "Цена";
-      tdName.innerHTML = product.name;
-      tdPrice.innerHTML = product.priceMontaza;
-      tr1.appendChild(thModel);
-      tr1.appendChild(thPrice);
-      tr2.appendChild(tdName);
-      tr2.appendChild(tdPrice);
-      table.appendChild(tr1);
-      table.appendChild(tr2);
-      table.setAttribute("id", "tmp");
-      let p = document.createElement("p");
-      p.innerHTML = "Цената за монтажа е посочена на секој производ посебно.";
-      p.setAttribute("id", "tmp");
-
-      event.target.appendChild(table);
-      event.target.appendChild(p);
-    } else {
-      let p = document.createElement("p");
-      let a = document.createElement("a");
-      let img = document.createElement("img");
-      if (event.target.textContent === "Димензии") {
-        a.setAttribute("href", product.dimension);
-        img.src = product.dimension;
-      } else {
-        a.setAttribute("href", product.scheme);
-        img.src = product.scheme;
-      }
-      p.appendChild(img);
-      a.setAttribute("id", "tmp");
-      a.appendChild(p);
-      event.target.appendChild(a);
-    }
-  };
-
-  const changePhoto = (event) => {
-    let main = document.getElementById("main");
-    main.setAttribute("src", event.target.src);
-  };
-
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { cart } = state;
-  const addToCartHandler = async () => {
-    const existItem = cart.cartItems.find((x) => x._id === product._id);
-    const quantity = existItem ? existItem.quantity + 1 : 1;
-    const { data } = await axios.get(`/api/products/${product._id}`);
-    if (data.countInStock < quantity) {
-      window.alert("Sorry. Product is out of stock");
-      return;
-    }
-    ctxDispatch({
-      type: "CART_ADD_ITEM",
-      payload: { ...product, quantity },
-    });
-    navigate("/cart");
-  };
-
-  return loading ? (
-    <LoadingBox />
-  ) : error ? (
-    <MessageBox variant="danger">{error}</MessageBox>
-  ) : (
-    <div>
-      <Helmet>
-        <title>{product.name}</title>
-      </Helmet>
-      <div>
-        <Container>
-          <Row>
-            <Col>
-              <Row>
-                <img id="main" src={product.image} alt={product.name}></img>
-              </Row>
-              <Row className="imgRow">
-                <img
-                  id="sec"
-                  src={product.image}
-                  alt={product.name}
-                  onClick={changePhoto}
-                ></img>
-
-                <img
-                  id="sec"
-                  src={product.sideImage}
-                  alt={product.name}
-                  onClick={changePhoto}
-                ></img>
-
-                <img
-                  id="sec"
-                  src={product.sideImage2}
-                  alt={product.name}
-                  onClick={changePhoto}
-                ></img>
-              </Row>
-
-              {/*</div>*/}
-            </Col>
-            <Col sm>
-              <Row>
-                <h2 id="name">{product.name}</h2>
-              </Row>
-              <Row>
-                <h2 id="price">{product.price} ден</h2>
-                <span>
-                  <img id="icon" src={icon1} alt="10-day-delivery"></img>
-                  Бесплатна достава: 10 дена
-                </span>
-              </Row>
-              <Row>
-                <Button
-                  onClick={addToCartHandler}
-                  className="addToCartBtn"
-                  variant="danger"
-                >
-                  <ShoppingBasketIcon />
-                  ДОДАЈ ВО КОШНИЧКА
-                </Button>
-              </Row>
-              <Row>
-                <Table id="table">
-                  <tbody>
-                    <tr>
-                      <td>
-                        <div onClick={handleClick}>Опис</div>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <div onClick={handleClick}>Димензии</div>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <div onClick={handleClick}>Монтажа</div>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <div onClick={handleClick}>Шема за монтажа</div>
-                      </td>
-                    </tr>
-                  </tbody>
-                </Table>
-              </Row>
-            </Col>
-          </Row>
-        </Container>
-      </div>
-    </div>
-  );
-}
-
-export default ProductScreen;
Index: ontend/src/screens/ProfileScreen.js
===================================================================
--- frontend/src/screens/ProfileScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,122 +1,0 @@
-import React, { useContext, useReducer, useState } from "react";
-import { Helmet } from "react-helmet-async";
-import { Store } from "../Store";
-import Form from "react-bootstrap/Form";
-import Button from "react-bootstrap/Button";
-import { toast } from "react-toastify";
-import { getError } from "../components/utils";
-import axios from "axios";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "UPDATE_REQUEST":
-      return { ...state, loadingUpdate: true };
-    case "UPDATE_SUCCSS":
-      return { ...state, loadingUpdate: false };
-    case "UPDATE_FAIL":
-      return { ...state, loadingUpdate: false };
-    default:
-      return state;
-  }
-};
-
-function ProfileScreen() {
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { userInfo } = state;
-
-  const [name, setName] = useState(userInfo.name);
-  const [contact, setContact] = useState(userInfo.contact);
-  const [email, setEmail] = useState(userInfo.email);
-  const [password, setPassword] = useState("");
-  const [confirmPassword, setConfirmPassword] = useState("");
-
-  const [{ loadingUpdate }, dispatch] = useReducer(reducer, {
-    loadingUpdate: false,
-  });
-
-  const submitHandler = async (e) => {
-    e.preventDefault();
-    try {
-      const { data } = await axios.put(
-        "/api/users/profile",
-        {
-          name,
-          contact,
-          email,
-          password,
-        },
-        {
-          headers: { Authorization: `Bearer ${userInfo.token}` },
-        }
-      );
-      dispatch({ type: "UPDATE_SUCCESS" });
-      ctxDispatch({ type: "USER_SIGNIN", payload: data });
-      localStorage.setItem("userInfo", JSON.stringify(data));
-      toast.success("Успешно ажурирање");
-    } catch (err) {
-      dispatch({ type: "FETCH_FAIL" });
-      toast.error(getError(err));
-    }
-  };
-
-  return (
-    <div className="pageContainer shipPC">
-      <Helmet>
-        <title>Мој профил</title>
-      </Helmet>
-      <h1>Моите податоци</h1>
-      <Form onSubmit={submitHandler} className="formCointainer">
-        <Form.Group controlId="name">
-          <Form.Label>Име и Презиме</Form.Label>
-          <Form.Control
-            value={name}
-            style={{ textAlign: "left" }}
-            required
-            onChange={(e) => setName(e.target.value)}
-          />
-        </Form.Group>
-        <Form.Group controlId="contact">
-          <Form.Label>Телефон</Form.Label>
-          <Form.Control
-            value={contact}
-            type="text"
-            required
-            onChange={(e) => setContact(e.target.value)}
-          />
-        </Form.Group>
-        <Form.Group controlId="email">
-          <Form.Label>Email</Form.Label>
-          <Form.Control
-            value={email}
-            type="email"
-            required
-            onChange={(e) => setEmail(e.target.value)}
-          />
-        </Form.Group>
-        <Form.Group controlId="password">
-          <Form.Label>Лозинка</Form.Label>
-          <Form.Control
-            type="password"
-            required
-            onChange={(e) => setPassword(e.target.value)}
-          />
-        </Form.Group>
-        <Form.Group controlId="confirmPassword">
-          <Form.Label>Потврди Лозинка</Form.Label>
-          <Form.Control
-            type="password"
-            required
-            onChange={(e) => setConfirmPassword(e.target.value)}
-          />
-        </Form.Group>
-        <div className="submitBtnContainer">
-          <Button variant="danger" size="lg" type="submit">
-            Ажурирај
-          </Button>
-        </div>
-      </Form>
-    </div>
-  );
-}
-
-export default ProfileScreen;
Index: ontend/src/screens/SearchScreen.js
===================================================================
--- frontend/src/screens/SearchScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,157 +1,0 @@
-import React, { useEffect, useReducer, useState } from "react";
-import "../styles/Home.css";
-// import data from "./data";
-import Product from "../components/Product";
-import axios from "axios";
-import { Helmet } from "react-helmet-async";
-import { getError } from "../components/utils";
-import { useLocation, useNavigate, useParams } from "react-router-dom";
-import Form from "react-bootstrap/Form";
-import Button from "react-bootstrap/Button";
-import LinkContainer from "react-router-bootstrap/LinkContainer";
-
-const reducer = (state, action) => {
-  switch (action.type) {
-    case "FETCH_REQUEST":
-      return { ...state, loading: true };
-    case "FETCH_SUCCESS":
-      return {
-        ...state,
-        products: action.payload.products,
-        page: action.payload.page,
-        pages: action.payload.pages,
-        countProducts: action.payload.countProducts,
-        loading: false,
-      };
-    case "FETCH_FAIL":
-      return { ...state, loading: false, error: action.payload };
-    default:
-      return state;
-  }
-};
-
-function Home() {
-  const params = useParams();
-
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const sp = new URLSearchParams(search);
-  const text = sp.get("text") || "";
-  const page = sp.get("page") || 1;
-  const [{ loading, error, products, pages, countProducts }, dispatch] =
-    useReducer(reducer, { loading: true, error: "" });
-
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        /*
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );*/
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&text=${text}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    fetchData();
-  }, [page, error, text]);
-
-  const getFilterUrl = (filter) => {
-    const filterPage = filter.page || page;
-    const filterText = filter.text || text;
-    return `?page=${filterPage}&text=${filterText}`;
-  };
-
-  const filterHandler = (e) => {
-    e.preventDefault();
-
-    const fetchData = async () => {
-      try {
-        dispatch({ type: "FETCH_REQUEST" });
-        /*
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&query=${query}&category=${category}&subCategory=${subCategory}&order=${order}`
-        );*/
-        const { data } = await axios.get(
-          `/api/products/search?page=${page}&text=${text}`
-        );
-        dispatch({ type: "FETCH_SUCCESS", payload: data });
-      } catch (err) {
-        dispatch({ type: "FETCH_FAIL", payload: getError(err) });
-      }
-    };
-    fetchData();
-  };
-
-  return (
-    <div style={{ width: "100%" }}>
-      <Helmet>
-        <title>MebelCity</title>
-      </Helmet>
-
-      <div className="most-popular-products">
-        {loading ? (
-          <div>Loading...</div>
-        ) : error ? (
-          <div>{error}</div>
-        ) : (
-          <div style={{ width: "100%" }}>
-            <h1>Резултати од пребарување</h1>
-
-            <div
-              style={{
-                width: "100%",
-                display: "flex",
-                justifyContent: "space-evenly",
-                alignItems: "center",
-                marginTop: "20px",
-              }}
-            ></div>
-            <div
-              style={{
-                display: "flex",
-                flexWrap: "wrap",
-                justifyContent: "space-evenly",
-                alignItems: "center",
-                marginTop: "10px",
-              }}
-            >
-              {products.map((product) => (
-                <Product key={product.slug} product={product} />
-              ))}
-            </div>
-            <div
-              style={{
-                marginTop: "20px",
-                display: "flex",
-                justifyContent: "center",
-                alignItems: "center",
-              }}
-            >
-              {[...Array(pages).keys()].map((x) => (
-                <LinkContainer
-                  key={x + 1}
-                  className="mx-1"
-                  to={getFilterUrl({ page: x + 1 })}
-                >
-                  <Button
-                    className={Number(page) === x + 1 ? "text-bold" : ""}
-                    variant={Number(page) === x + 1 ? "danger" : "light"}
-                  >
-                    {x + 1}
-                  </Button>
-                </LinkContainer>
-              ))}
-            </div>
-          </div>
-        )}
-      </div>
-    </div>
-  );
-}
-
-export default Home;
Index: ontend/src/screens/ShippingAddressScreen.js
===================================================================
--- frontend/src/screens/ShippingAddressScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,118 +1,0 @@
-import React, { useContext, useEffect, useState } from "react";
-import { Helmet } from "react-helmet-async";
-import Form from "react-bootstrap/Form";
-import Button from "react-bootstrap/Button";
-import Container from "react-bootstrap/Container";
-import { useNavigate } from "react-router-dom";
-import { Store } from "../Store";
-import CheckoutSteps from "../components/CheckoutSteps";
-
-function ShippingAddressScreen() {
-  const navigate = useNavigate();
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const {
-    userInfo,
-    cart: { shippingAddress },
-  } = state;
-  const [fullName, setFullName] = useState(shippingAddress.fullName || "");
-  const [address, setAddress] = useState(shippingAddress.address || "");
-  const [city, setCity] = useState(shippingAddress.city || "");
-  const [postalCode, setPostalCode] = useState(
-    shippingAddress.postalCode || ""
-  );
-  const [country, setCountry] = useState(shippingAddress.country || "");
-
-  useEffect(() => {
-    if (!userInfo) {
-      navigate("/signin");
-    }
-  }, [userInfo, navigate]);
-
-  const submitHandler = (e) => {
-    e.preventDefault();
-    ctxDispatch({
-      type: "SAVE_SHIPPING_ADDRESS",
-      payload: {
-        fullName,
-        address,
-        city,
-        postalCode,
-        country,
-      },
-    });
-    localStorage.setItem(
-      "shippingAddress",
-      JSON.stringify({
-        fullName,
-        address,
-        city,
-        postalCode,
-        country,
-      })
-    );
-    navigate("/payment");
-  };
-
-  return (
-    <div className="pageContainer shipPC">
-      <CheckoutSteps step1 step2 />
-      <Container className="main">
-        <Helmet>
-          <title>Адреса</title>
-        </Helmet>
-
-        <h1 className="my-3">Адреса</h1>
-
-        <Form onSubmit={submitHandler} className="formCointainer">
-          <Form.Group>
-            <Form.Label>Име и Презиме</Form.Label>
-            <Form.Control
-              value={fullName}
-              onChange={(e) => setFullName(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Адреса</Form.Label>
-            <Form.Control
-              value={address}
-              onChange={(e) => setAddress(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Град</Form.Label>
-            <Form.Control
-              value={city}
-              onChange={(e) => setCity(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Поштенски код</Form.Label>
-            <Form.Control
-              value={postalCode}
-              onChange={(e) => setPostalCode(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <Form.Group>
-            <Form.Label>Држава</Form.Label>
-            <Form.Control
-              value={country}
-              onChange={(e) => setCountry(e.target.value)}
-              required
-            ></Form.Control>
-          </Form.Group>
-          <div className="submitBtnContainer">
-            <Button variant="danger" size="lg" type="submit">
-              Продолжи
-            </Button>
-          </div>
-        </Form>
-      </Container>
-    </div>
-  );
-}
-
-export default ShippingAddressScreen;
Index: ontend/src/screens/SigninScreen.js
===================================================================
--- frontend/src/screens/SigninScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,86 +1,0 @@
-import Axios from "axios";
-import Container from "react-bootstrap/Container";
-import Form from "react-bootstrap/Form";
-import { Helmet } from "react-helmet-async";
-import Button from "react-bootstrap/Button";
-import "../styles/SigninScreen.css";
-import React, { useContext, useEffect, useState } from "react";
-import { Link, useLocation, useNavigate } from "react-router-dom";
-import { Store } from "../Store";
-import { toast } from "react-toastify";
-import { getError } from "../components/utils";
-
-function SigninScreen() {
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const redirectInUrl = new URLSearchParams(search).get("redirect");
-  const redirect = redirectInUrl ? redirectInUrl : "/";
-
-  const [email, setEmail] = useState("");
-  const [password, setPassword] = useState("");
-
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { userInfo } = state;
-
-  const submitHandler = async (e) => {
-    e.preventDefault();
-    try {
-      const { data } = await Axios.post("/api/users/signin", {
-        email,
-        password,
-      });
-      ctxDispatch({ type: "USER_SIGNIN", payload: data });
-      localStorage.setItem("userInfo", JSON.stringify(data));
-      if (data.isAdmin) navigate("/admin/dashboard");
-      else navigate(redirect || "/");
-    } catch (err) {
-      toast.error(getError(err));
-    }
-  };
-
-  useEffect(() => {
-    if (userInfo) {
-      navigate(redirect);
-    }
-  }, [navigate, redirect, userInfo]);
-
-  return (
-    <div className="pageContainer">
-      <Container className="main">
-        <Helmet>
-          <title>Најави се</title>
-        </Helmet>
-        <h1>Најави се</h1>
-        <Form className="formCointainer" onSubmit={submitHandler}>
-          <Form.Group controlId="email">
-            <Form.Label>Email</Form.Label>
-            <Form.Control
-              type="email"
-              required
-              onChange={(e) => setEmail(e.target.value)}
-            />
-          </Form.Group>
-          <Form.Group controlId="password">
-            <Form.Label>Лозинка</Form.Label>
-            <Form.Control
-              type="password"
-              required
-              onChange={(e) => setPassword(e.target.value)}
-            />
-          </Form.Group>
-          <div className="submitBtnContainer">
-            <Button variant="danger" size="lg" type="submit">
-              Најави се
-            </Button>
-          </div>
-          <div className="registerParagraph">
-            Нов корисник?{" "}
-            <Link to={`/signup?redirect=${redirect}`}>Регистрирај се</Link>
-          </div>
-        </Form>
-      </Container>
-    </div>
-  );
-}
-
-export default SigninScreen;
Index: ontend/src/screens/SignupScreen.js
===================================================================
--- frontend/src/screens/SignupScreen.js	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,118 +1,0 @@
-import Axios from "axios";
-import Container from "react-bootstrap/Container";
-import Form from "react-bootstrap/Form";
-import { Helmet } from "react-helmet-async";
-import Button from "react-bootstrap/Button";
-import "../styles/SigninScreen.css";
-import React, { useContext, useEffect, useState } from "react";
-import { Link, useLocation, useNavigate } from "react-router-dom";
-import { Store } from "../Store";
-import { toast } from "react-toastify";
-import { getError } from "../components/utils";
-
-function SignupScreen() {
-  const navigate = useNavigate();
-  const { search } = useLocation();
-  const redirectInUrl = new URLSearchParams(search).get("redirect");
-  const redirect = redirectInUrl ? redirectInUrl : "/";
-
-  const [name, setName] = useState("");
-  const [contact, setContact] = useState("");
-  const [email, setEmail] = useState("");
-  const [password, setPassword] = useState("");
-  const [confirmPassword, setConfirmPassword] = useState("");
-
-  const { state, dispatch: ctxDispatch } = useContext(Store);
-  const { userInfo } = state;
-
-  const submitHandler = async (e) => {
-    e.preventDefault();
-    if (password !== confirmPassword) {
-      toast.error("Лозинките не се совпаѓаат");
-      return;
-    }
-    try {
-      const { data } = await Axios.post("/api/users/signup", {
-        name,
-        contact,
-        email,
-        password,
-      });
-      ctxDispatch({ type: "USER_SIGNIN", payload: data });
-      localStorage.setItem("userInfo", JSON.stringify(data));
-      navigate(redirect || "/");
-    } catch (err) {
-      toast.error(getError(err));
-    }
-  };
-
-  useEffect(() => {
-    if (userInfo) {
-      navigate(redirect);
-    }
-  }, [navigate, redirect, userInfo]);
-
-  return (
-    <div className="pageContainer">
-      <Container className="main">
-        <Helmet>
-          <title>Регистрирај се</title>
-        </Helmet>
-        <h1>Регистрирај се</h1>
-        <Form className="formCointainer" onSubmit={submitHandler}>
-          <Form.Group controlId="name">
-            <Form.Label>Име и Презиме</Form.Label>
-            <Form.Control
-              style={{ textAlign: "left" }}
-              required
-              onChange={(e) => setName(e.target.value)}
-            />
-          </Form.Group>
-          <Form.Group controlId="contact">
-            <Form.Label>Телефон</Form.Label>
-            <Form.Control
-              type="text"
-              required
-              onChange={(e) => setContact(e.target.value)}
-            />
-          </Form.Group>
-          <Form.Group controlId="email">
-            <Form.Label>Email</Form.Label>
-            <Form.Control
-              type="email"
-              required
-              onChange={(e) => setEmail(e.target.value)}
-            />
-          </Form.Group>
-          <Form.Group controlId="password">
-            <Form.Label>Лозинка</Form.Label>
-            <Form.Control
-              type="password"
-              required
-              onChange={(e) => setPassword(e.target.value)}
-            />
-          </Form.Group>
-          <Form.Group controlId="confirmPassword">
-            <Form.Label>Потврди Лозинка</Form.Label>
-            <Form.Control
-              type="password"
-              required
-              onChange={(e) => setConfirmPassword(e.target.value)}
-            />
-          </Form.Group>
-          <div className="submitBtnContainer">
-            <Button variant="danger" size="lg" type="submit">
-              Регистрирај се
-            </Button>
-          </div>
-          <div className="registerParagraph">
-            Имате профил?{" "}
-            <Link to={`/signin?redirect=${redirect}`}>Најави се</Link>
-          </div>
-        </Form>
-      </Container>
-    </div>
-  );
-}
-
-export default SignupScreen;
Index: ontend/src/styles/AdminDashboard.css
===================================================================
--- frontend/src/styles/AdminDashboard.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#pgContainer {
-  display: flex;
-  width: 100vw;
-  height: 850px;
-}
-
-#sidebarMenu {
-  height: 100%;
-  background-color: rgb(66, 63, 72);
-  display: flex;
-  flex-direction: column;
-  width: 18%;
-  align-items: center;
-  padding-top: 30px;
-  overflow-x: hidden;
-}
-
-#mainScreen {
-  flex: 1;
-}
-
-.taskContainer {
-  width: 90%;
-  margin-top: 20px;
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-}
-
-.dashboard-btn {
-  width: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  font-size: 20px;
-  height: 40px;
-  color: white;
-}
-
-.dashboard-btn:hover {
-  background-color: #0d6efd;
-  cursor: pointer;
-}
-
-.newProductFormCointainer {
-  margin-top: 20px;
-  width: 90%;
-  display: flex;
-  flex-direction: column;
-}
-
-.firstRow {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.secondRow {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.thirdRow {
-  margin-top: 30px;
-  display: flex;
-  justify-content: space-around;
-  margin-bottom: 20px;
-  align-items: center;
-}
-
-#textArea {
-  height: 200px;
-}
Index: ontend/src/styles/CartScreen.css
===================================================================
--- frontend/src/styles/CartScreen.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,114 +1,0 @@
-.img-thumbnail {
-  height: 80px;
-  margin-left: 20px;
-}
-
-.pageContainer {
-  min-height: 100vh;
-}
-
-main {
-  margin-top: 20px;
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.itemContainer {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.trashImgContainer {
-  display: flex;
-  flex-direction: row;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.link {
-  color: black;
-  display: flex;
-  text-decoration: none;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.btnsPriceContainer {
-  display: flex;
-  flex-direction: row;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.productRow {
-  width: 800px;
-}
-
-.quantityInput {
-  height: 40px;
-  width: 40px;
-  text-align: center;
-}
-
-.marginBtn {
-  margin-right: 20px;
-}
-
-.lastRow {
-  border-top: 1px solid black;
-  margin-top: 20px;
-  display: flex;
-  flex-direction: column;
-}
-
-.totalPriceContainer {
-  margin-top: 20px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.checkoutBtnContainer {
-  display: flex;
-  justify-content: right;
-}
-
-@media only screen and (max-width: 801px) {
-  .productRow {
-    width: 100vw;
-  }
-}
-
-@media only screen and (max-width: 554px) {
-  .productRow {
-    width: 100vw;
-  }
-
-  .itemContainer {
-    flex-direction: column;
-  }
-
-  .trashImgContainer {
-    width: 100%;
-    flex-direction: row-reverse;
-    justify-content: space-between;
-  }
-
-  .trashIconContainer {
-    display: flex;
-    justify-content: right;
-  }
-
-  .btnsPriceContainer {
-    width: 100%;
-    justify-content: space-between;
-  }
-
-  .checkoutBtnContainer button {
-    width: 100%;
-  }
-}
Index: ontend/src/styles/Footer.css
===================================================================
--- frontend/src/styles/Footer.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,63 +1,0 @@
-.footer {
-  box-sizing: border-box;
-  margin-top: 40px;
-  padding-top: 10px;
-  border-top: 5px solid red;
-  display: flex;
-  justify-content: space-evenly;
-}
-
-.footer__social {
-  display: flex;
-  flex-direction: column;
-}
-
-.footer__social img {
-  width: 30px;
-  margin-top: 7px;
-}
-
-.socialIconText {
-  display: flex;
-  align-items: center;
-  cursor: pointer;
-}
-
-.socialIconText span {
-  margin-left: 5px;
-}
-
-.footer__newsletter {
-  display: flex;
-  flex-direction: column;
-}
-
-.footer__newsletter div {
-  width: auto;
-  display: flex;
-}
-
-.footer__newsletter input {
-  background-color: #e9e9e9;
-  border: none;
-  height: 30px;
-}
-
-#email {
-  flex: 1;
-}
-#submit {
-  height: 32px;
-  cursor: pointer;
-  user-select: none;
-}
-
-#email:focus {
-  outline: none;
-}
-
-@media only screen and (max-width: 440px) {
-  .footer {
-    flex-direction: column;
-  }
-}
Index: ontend/src/styles/Header.css
===================================================================
--- frontend/src/styles/Header.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,290 +1,0 @@
-* {
-  font-family: Arial, Helvetica, sans-serif;
-}
-
-.header {
-  margin: 0;
-  padding: 0;
-  margin-top: 10px;
-  height: 70px;
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  padding-bottom: 5px;
-  border-bottom: 1px solid rgb(166, 165, 165);
-}
-
-span {
-  display: flex;
-  align-items: center;
-}
-
-span p {
-  display: flex;
-  align-items: center;
-  margin: 0;
-}
-
-.header__menu {
-  display: flex;
-  list-style: none;
-  align-items: center;
-  justify-content: space-evenly;
-}
-
-.header__menu li {
-  margin-left: 20px;
-}
-
-.header__right {
-  display: flex;
-  flex-direction: column;
-  justify-content: space-between;
-}
-
-.header__search {
-  display: flex;
-}
-
-.header__searchInput {
-  width: 300px;
-}
-
-.header__buttons {
-  display: flex;
-  justify-content: space-evenly;
-}
-
-.link {
-  color: black;
-  text-decoration: none;
-}
-
-.link:hover {
-  color: black;
-}
-
-.header__cart {
-  color: black;
-}
-
-.badgee {
-  text-decoration: none;
-}
-
-.header__dropdown {
-  width: 700px;
-  padding-top: 28px;
-  background-color: #ffffff;
-  border: 1px solid rgb(166, 165, 165);
-  box-shadow: 0 6px 12px rgb(0 0 0 / 18%);
-  padding-right: 10px;
-  position: absolute;
-  display: none;
-  z-index: 10;
-}
-
-.header__products {
-  position: relative;
-  cursor: pointer;
-}
-
-.header__products:hover .header__dropdown {
-  display: flex;
-}
-
-.header__dropdown a {
-  display: block;
-}
-
-.header__dropdownColumn ul {
-  list-style: none;
-  padding: 0;
-}
-
-.header__dropdownColumn ul li {
-  font-weight: bold;
-  margin-top: 4px;
-}
-
-.header__dropdownColumn ul li a {
-  color: rgb(45, 44, 44);
-  text-decoration: 0;
-}
-
-.header__dropdownColumn ul li ul {
-  margin-bottom: 15px;
-}
-
-.header__dropdownColumn ul li ul li {
-  font-weight: 100;
-  text-decoration: none;
-  color: rgb(107, 106, 106);
-}
-
-.header__dropdownColumn ul li:hover span {
-  border-bottom: 1px solid rgb(45, 44, 44);
-}
-
-.header__dropdownColumn ul li ul li a:hover {
-  text-decoration: underline;
-  color: red;
-}
-
-.header__icon {
-  display: none !important;
-}
-
-.header__iconContainer {
-  display: none;
-}
-
-.header__iconContainer img {
-  margin-left: 10px;
-}
-
-.mobile-menu-container {
-  background-color: white;
-  box-shadow: 0 10px 15px rgb(0 0 0 / 40%);
-  height: 100vh;
-  z-index: 20;
-  position: absolute;
-  top: 0;
-}
-
-.closeBtn {
-  margin-right: 20px;
-  text-align: right;
-  cursor: pointer;
-  font-size: 40px;
-}
-
-.mobile-menu-container ul {
-  list-style: none;
-  padding: 0px;
-  margin-top: 10px;
-}
-
-.mobile-menu-container ul li {
-  cursor: pointer;
-  border-top: 1px solid grey;
-  font-size: 20px;
-  display: flex;
-  justify-content: left;
-  align-items: center;
-  height: 50px;
-}
-
-.subDropdown {
-  background-color: white;
-  height: 100vh;
-  z-index: 21;
-  position: absolute;
-  top: 0;
-}
-
-.visible {
-  display: block;
-}
-
-.hidden {
-  display: none;
-}
-
-.category-menu {
-  position: absolute;
-  background-color: #ffffff;
-  top: 0;
-  z-index: 22;
-  height: 100vh;
-}
-
-#basic-nav-dropdown {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-@media only screen and (max-width: 1015px) {
-  .header__dropdown {
-    margin-left: -200px;
-  }
-}
-
-@media only screen and (max-width: 873px) {
-  .header__menu {
-    display: none;
-  }
-
-  .header__icon {
-    display: block !important;
-    cursor: pointer;
-  }
-
-  .header__iconContainer {
-    display: flex;
-  }
-
-  .mobile-menu-container {
-    width: 40vw;
-  }
-
-  .subDropdown {
-    width: 40vw;
-  }
-
-  .category-menu {
-    width: 40vw;
-  }
-}
-
-@media only screen and (max-width: 500px) {
-  .mobile-menu-container {
-    width: 50vw;
-  }
-
-  .subDropdown {
-    width: 50vw;
-  }
-
-  .category-menu {
-    width: 50vw;
-  }
-}
-
-@media only screen and (max-width: 400px) {
-  .header__search {
-    display: none;
-  }
-
-  .mobile-menu-container {
-    width: 80vw;
-  }
-
-  .subDropdown {
-    width: 80vw;
-  }
-
-  .category-menu {
-    width: 80vw;
-  }
-}
-
-@media only screen and (max-width: 355px) {
-  span p {
-    display: none;
-  }
-
-  .mobile-menu-container {
-    width: 100vw;
-  }
-
-  .subDropdown {
-    width: 100vw;
-  }
-
-  .category-menu {
-    width: 100vw;
-  }
-}
Index: ontend/src/styles/Home.css
===================================================================
--- frontend/src/styles/Home.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,192 +1,0 @@
-.sliderContainer {
-  width: auto;
-  margin: 0 auto;
-  margin-top: 10px;
-}
-
-.iconWrapper {
-  width: 100%;
-  height: 120px;
-  display: flex;
-  justify-content: space-evenly;
-  align-items: center;
-  margin-top: 5px;
-}
-
-.iconContainer {
-  width: 200px;
-  height: 100%;
-  text-transform: uppercase;
-  font-weight: bold;
-  color: #808285;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  cursor: pointer;
-}
-
-.icon {
-  width: 100px;
-  height: 100px;
-}
-
-.icon-text {
-  margin: 0px;
-  text-align: center;
-}
-
-.activeIcon {
-  filter: invert(42%) sepia(100%) saturate(7464%) hue-rotate(349deg)
-    brightness(86%) contrast(96%);
-}
-
-.activeIconContainer {
-  background-color: #dbd8d8;
-  border-top-left-radius: 10%;
-  border-top-right-radius: 10%;
-}
-
-.descriptionContainer {
-  width: 100%;
-  height: 40px;
-  background-color: #dbd8d8;
-  border-radius: 10px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.section {
-  display: flex;
-  flex-direction: column;
-}
-
-.grid-container {
-  display: grid;
-  grid-template-columns: auto auto auto;
-  grid-template-rows: 300px 300px 300px 300px;
-  gap: 10px;
-  margin-top: 20px;
-  padding: 10px;
-}
-
-.grid-item {
-  text-align: center;
-  font-size: 30px;
-  border-radius: 20px;
-  box-shadow: 0 3px 5px rgb(0 0 0 / 100%);
-  color: #ffffff;
-  text-shadow: 3px 3px 3px rgb(0 0 0 / 100%);
-  cursor: pointer;
-}
-
-.item1 {
-  background-image: url("../Images/dnevna.jpg");
-  background-size: cover;
-  background-position: center;
-  background-repeat: no-repeat;
-  grid-row: 1 / 3;
-}
-.item2 {
-  background-image: url("../Images/hodnik.jpg");
-  background-size: cover;
-}
-.item3 {
-  background-image: url("../Images/trpezarija.jpg");
-  background-size: cover;
-}
-.item4 {
-  background-image: url("../Images/spalna.jpg");
-  background-size: cover;
-  background-position: center;
-  grid-column: 2 / 4;
-}
-.item5 {
-  background-image: url("../Images/kujna.jpg");
-  background-size: cover;
-}
-.item6 {
-  background-image: url("../Images/kancelarija.jpg");
-  background-size: cover;
-}
-.item7 {
-  background-image: url("../Images/detska.jpg");
-  background-size: cover;
-  grid-column: 3;
-  grid-row: 3 / 5;
-}
-.item8 {
-  background-image: url("../Images/gradina.jpg");
-  background-size: cover;
-  grid-column: 1 / 3;
-}
-
-.most-popular-products {
-  display: flex;
-  justify-content: space-around;
-  align-items: center;
-}
-.icon-description {
-  margin-top: 2px;
-}
-
-@media only screen and (max-width: 650px) {
-  .grid-container {
-    display: grid;
-    grid-template-columns: repeat(2, minmax(0, 1fr));
-    grid-template-rows: 300px 300px 300px 300px;
-    gap: 10px;
-    margin-top: 20px;
-    padding: 10px;
-  }
-
-  .grid-container .grid-item {
-    grid-row: auto;
-    grid-column: auto;
-  }
-
-  .iconWrapper {
-    height: 70px;
-  }
-
-  .iconContainer {
-    width: 120px;
-  }
-
-  .icon {
-    width: 50px;
-    height: 50px;
-  }
-
-  .icon-text {
-    font-size: 10px;
-  }
-}
-
-@media only screen and (max-width: 560px) {
-  .icon-description {
-    font-size: 15px;
-  }
-}
-
-@media only screen and (max-width: 534px) {
-  .descriptionContainer {
-    display: none;
-  }
-}
-
-@media only screen and (max-width: 400px) {
-  .grid-container {
-    display: grid;
-    grid-template-columns: repeat(1, minmax(0, 1fr));
-    grid-template-rows: repeat(8, minmax(0, 200px));
-    gap: 10px;
-    margin-top: 20px;
-    padding: 10px;
-  }
-
-  .grid-container .grid-item {
-    grid-row: auto;
-    grid-column: auto;
-  }
-}
Index: ontend/src/styles/Product.css
===================================================================
--- frontend/src/styles/Product.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,50 +1,0 @@
-.product__container {
-  height: 300px;
-  width: 300px;
-  display: flex;
-  flex-direction: column;
-  border: 1px solid grey;
-  padding: 2px;
-  box-shadow: 0 3px 5px rgb(0 0 0 / 100%);
-}
-
-.product__img img {
-  width: 100%;
-}
-
-.product__textContainer {
-  display: flex;
-  justify-content: space-around;
-  align-items: center;
-}
-
-.product__name {
-  flex: 1;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.product__price {
-  flex: 1;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.product__addToCart {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.product__addToCart button {
-  width: 40%;
-  height: 30px;
-  background-color: red;
-  border: none;
-  border-radius: 10px;
-  cursor: pointer;
-  color: white;
-  font-size: 19px;
-}
Index: ontend/src/styles/ProductScreen.css
===================================================================
--- frontend/src/styles/ProductScreen.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,155 +1,0 @@
-.container {
-  display: flex;
-}
-
-.container img {
-  height: 100%;
-}
-
-.left-side {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-}
-
-.right-side {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-}
-
-.mainImg {
-  height: 500px;
-}
-
-.sideImgContainer {
-  height: 150px;
-  display: flex;
-  justify-content: space-evenly;
-  align-items: center;
-}
-
-.sideImg {
-  height: 100%;
-}
-
-.name-container {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.price-container {
-  display: flex;
-}
-
-.price-left {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  justify-content: left;
-  align-items: center;
-}
-
-.price-left h2 {
-  color: red;
-}
-
-.price-left img {
-  width: 40px;
-  height: 40px;
-}
-
-.price-right {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-}
-
-.price-right button {
-  height: 80%;
-  width: 80%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  background-color: red;
-  border: none;
-  border-radius: 10px;
-  cursor: pointer;
-  color: white;
-  font-size: 19px;
-}
-
-#name {
-  text-align: center;
-}
-
-#price {
-  color: red;
-}
-
-#icon {
-  width: 40px;
-  height: 40px;
-  filter: invert(0%) sepia(00%) saturate(8000%) hue-rotate(8deg) brightness(0%)
-    contrast(234%);
-}
-
-#table {
-  margin-top: 10px;
-}
-
-tr {
-  cursor: pointer;
-}
-
-.imgRow {
-  display: flex !important;
-  justify-content: center !important;
-  margin-top: 10px;
-}
-
-#sec {
-  width: 100px;
-  height: 100px;
-}
-
-table img {
-  width: 200px;
-}
-#tmp {
-  margin-left: 20px;
-}
-#tmp tr,
-#tmp td,
-#tmp th {
-  border: 1px solid black;
-  height: 40px;
-  padding: 3px;
-}
-
-@media only screen and (max-width: 750) {
-  #main {
-    height: 300px;
-  }
-}
-
-@media only screen and (max-width: 400px) {
-  #sec {
-    height: 50px;
-  }
-}
-
-@media only screen and (max-width: 768) {
-  #main {
-    height: 260px !important;
-  }
-}
-
-@media only screen and (max-width: 575) {
-  #main {
-    height: auto !important;
-  }
-}
Index: ontend/src/styles/SigninScreen.css
===================================================================
--- frontend/src/styles/SigninScreen.css	(revision a2e57352512ead87a9738f42509448ff26fdd514)
+++ 	(revision )
@@ -1,56 +1,0 @@
-.pageContainer {
-  min-height: 100vh;
-}
-
-.main {
-  margin-top: 20px;
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.formCointainer {
-  width: 400px;
-}
-
-.shipPC {
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-}
-
-.shipPC .checkout-steps {
-  width: 70%;
-}
-
-.submitBtnContainer {
-  margin-top: 20px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.registerParagraph {
-  margin-top: 10px;
-  text-align: center;
-}
-
-@media only screen and (max-width: 440px) {
-  .formCointainer {
-    width: 100%;
-  }
-}
-
-@media only screen and (max-width: 559px) {
-  .shipPC .checkout-steps {
-    width: 100%;
-  }
-}
-
-@media only screen and (max-width: 331px) {
-  .shipPC .checkout-steps {
-    display: none;
-  }
-}
