diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index b15f222..0000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# To get started with Dependabot version updates, you'll need to specify which
-# package ecosystems to update and where the package manifests are located.
-# Please see the documentation for all configuration options:
-# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
-
-version: 2
-updates:
-  - package-ecosystem: "npm" # See documentation for possible values
-    directory: "/" # Location of package manifests
-    schedule:
-      interval: "daily"
-    open-pull-requests-limit: 5
-    reviewers:
-      - EmotionChild
-    target-branch: "development"
-    labels:
-      - "npm"
-      - "dependencies"
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 27c6ba3..58a7e9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,3 @@
 node_modules
 giveaways.js
-config.json
-giveaways.json
\ No newline at end of file
+config.json
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 15422e8..f1512fa 100644
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@
       same "printed page" as the copyright notice for easier
       identification within third-party archives.
 
-   Copyright 2023 EmotionChild
+   Copyright 2023 Toastie_t0ast
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
diff --git a/README.md b/README.md
index 0d67e9f..9ec9da7 100644
--- a/README.md
+++ b/README.md
@@ -1,38 +1,46 @@
-# Giveaway-Child
+# Holana
+
+## Updates
+
+- Update discord.js version to v13.
+- Format the code looks more cleaner.
+- Minor bot fixes and improvements.
 
 ## Requirements
 
-- Nodejs v16
-- Invite your bot with bot and applications scope
+- Bot needs v16 of nodejs to work
+- Invite your bot with `bot` and `applications.commands` scope
+- Bot only uses slash commands, message content no longer exists.
+- Bot currently supports v14 of discord.js.
 
 ## Features
 
-- Fast giveaways created using the best databases, like: mongodb, quick.db, .etc
-- LAST CHANCE TO ENTER warning when a giveaway is about to end.
-- Slash commands for faster giveaway creating.
-Drop giveaway ability, drop giveaways anytime in your server with the drop command.
-- Pause and un-pause giveaway feature.
-
+- Lightning fast giveaways created using best databases, like: mongodb, quick.db, etc.
+- LAST CHANCE TO ENTER warning when giveaway is about to end.
+- Slash commands for faster and simpler giveaway creating.
+- Drop giveaway ability, drop giveaway anytime in your server with drop command.
+- Pause and un-pause giveaways.
 
 ## Links
 
 - πŸ”— [Invite Link](https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot)
-- β„Ή [Support Server Link](https://discord.gg/SVQVzJq)
-- πŸ“‘ [Commands](https://docs.elliebot.net/Giveaway-Child/Commands/)
-- 🌐 [Website](https://docs.elliebot.net/coming_soon)
-
-## Custom/External Database setup
-
-- Read the [README](Database%20Examples/README.md) file and you are good to go to use custom db's.
+- β„Ή [Support Server Link](https://discord.gg/etQdZxSyEH)
+- πŸ“‘ [Commands](https://docs.elliebot.net/Giveaway-child/Commands)
+- 🌐 [Website](https://docs.elliebot.net/category/holana)
 
 ## Setup
 
-- `npm i`
-- Pick a database from the Database Examples folder.
-- Just copy and paste it into the [index file](index.js)
-- Fill out the [config file](config.example.json) and save it as config.js.
-- Then run the bot with `npm run start`
+## Custom/External Database setup
+
+- Check the example folder to get the custom database examples
+
+## Manual setup on local machine
+
+- Run command `npm i`
+- Pick a database from `Database Examples` folder and copy it to `index.js` file.
+- Fill the configurations.
+- Run command `npm run start`
 
 ## Credits
 
-**Thanks to [Androz](https://github.com/Androz2091) for his package which make this bot possible [discord-giveaways](https://www.npmjs.com/package/discord-giveaways) give him a star for his work.**
\ No newline at end of file
+**Thanks to [Androz](https://github.com/Androz2091) for his package which make this bot possible [discord-giveaways](https://www.npmjs.com/package/discord-giveaways) give him a star for his work.**
diff --git a/commands/drop.js b/commands/drop.js
new file mode 100644
index 0000000..08b594b
--- /dev/null
+++ b/commands/drop.js
@@ -0,0 +1,68 @@
+const Discord = require("discord.js");
+const messages = require("../utils/messages.js");
+
+module.exports = {
+  description: "Create a drop giveaway",
+
+  options: [
+    {
+      name: "winners",
+      description: "How many winners the giveaway should have",
+      type: Discord.ApplicationCommandOptionType.Integer,
+      required: true,
+    },
+    {
+      name: "prize",
+      description: "What the prize of the giveaway should be",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+    {
+      name: "channel",
+      description: "The channel to start the giveaway in",
+      type: Discord.ApplicationCommandOptionType.Channel,
+      required: true,
+    },
+  ],
+
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (
+      !interaction.member.permissions.has("MANAGE_MESSAGES") &&
+      !interaction.member.roles.cache.some((r) => r.name === "Giveaways")
+    ) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to start giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    const giveawayChannel = interaction.options.getChannel("channel");
+    const giveawayWinnerCount = interaction.options.getInteger("winners");
+    const giveawayPrize = interaction.options.getString("prize");
+
+    if (!giveawayChannel.isTextBased()) {
+      return interaction.reply({
+        content: ":x: Selected channel is not text-based.",
+        ephemeral: true,
+      });
+    }
+
+    // Start the giveaway
+    client.giveawaysManager.start(giveawayChannel, {
+      // The number of winners for this drop
+      winnerCount: giveawayWinnerCount,
+      // The prize of the giveaway
+      prize: giveawayPrize,
+      // Who hosts this giveaway
+      hostedBy: client.config.hostedBy ? interaction.user : null,
+      // specify drop
+      isDrop: true,
+      // Messages
+      messages,
+    });
+
+    interaction.reply(`Giveaway started in ${giveawayChannel}!`);
+  },
+};
\ No newline at end of file
diff --git a/commands/end.js b/commands/end.js
new file mode 100644
index 0000000..bdfde1f
--- /dev/null
+++ b/commands/end.js
@@ -0,0 +1,71 @@
+const Discord = require("discord.js");
+
+module.exports = {
+  description: "End a giveaway",
+
+  options: [
+    {
+      name: "giveaway",
+      description: "The giveaway to end (message ID or giveaway prize)",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+  ],
+
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (
+      !interaction.member.permissions.has("MANAGE_MESSAGES") &&
+      !interaction.member.roles.cache.some((r) => r.name === "Giveaways")
+    ) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to end giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    const query = interaction.options.getString("giveaway");
+
+    // try to found the giveaway with prize then with ID
+    const giveaway =
+      // Search with giveaway prize
+      client.giveawaysManager.giveaways.find(
+        (g) => g.prize === query && g.guildId === interaction.guild.id
+      ) ||
+      // Search with giveaway ID
+      client.giveawaysManager.giveaways.find(
+        (g) => g.messageId === query && g.guildId === interaction.guild.id
+      );
+
+    // If no giveaway was found
+    if (!giveaway) {
+      return interaction.reply({
+        content: "Unable to find a giveaway for `" + query + "`.",
+        ephemeral: true,
+      });
+    }
+
+    if (giveaway.ended) {
+      return interaction.reply({
+        content: "This giveaway is already ended.",
+        ephemeral: true,
+      });
+    }
+
+    // Edit the giveaway
+    client.giveawaysManager
+      .end(giveaway.messageId)
+      // Success message
+      .then(() => {
+        // Success message
+        interaction.reply("Giveaway ended!");
+      })
+      .catch((e) => {
+        interaction.reply({
+          content: e,
+          ephemeral: true,
+        });
+      });
+  },
+};
\ No newline at end of file
diff --git a/commands/help.js b/commands/help.js
new file mode 100644
index 0000000..9a9bf55
--- /dev/null
+++ b/commands/help.js
@@ -0,0 +1,44 @@
+const messages = require("../utils/messages");
+const {
+  EmbedBuilder,
+  ActionRowBuilder,
+  ButtonBuilder,
+  ButtonStyle,
+} = require("discord.js");
+
+module.exports = {
+  name: "help",
+  description: "Get all Bot Commands",
+  run: async (client, interaction) => {
+    let helpembed = new EmbedBuilder();
+    helpembed.setAuthor({ name: `Commands of ${client.user.username}` });
+    helpembed.setColor("#2f3136");
+    helpembed.setThumbnail(
+      "https://cdn.discordapp.com/attachments/765441543100170271/837111290265993246/196270_IDaqfU3u.png"
+    );
+    client.commands.map((cmd) => {
+      helpembed.addFields({
+        name: `\`${cmd.name}\``,
+        value: `${cmd.description}`,
+      });
+    });
+    helpembed.setTimestamp();
+    helpembed.setFooter({ text: `Β© Holana | Have a nice day!` });
+
+    const row = new ActionRowBuilder().addComponents(
+      new ButtonBuilder()
+        .setEmoji("865572290065072128")
+        .setLabel(`Invite ${client.user.username}`)
+        .setURL(
+          `https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot%20applications.commands`
+        )
+        .setStyle(ButtonStyle.Link)
+    );
+
+    await interaction.reply({
+      embeds: [helpembed],
+      components: [row],
+      ephemeral: true,
+    });
+  },
+};
\ No newline at end of file
diff --git a/commands/invite.js b/commands/invite.js
new file mode 100644
index 0000000..495e549
--- /dev/null
+++ b/commands/invite.js
@@ -0,0 +1,35 @@
+const messages = require("../utils/messages");
+const {
+  EmbedBuilder,
+  ActionRowBuilder,
+  ButtonBuilder,
+  ButtonStyle,
+} = require("discord.js");
+
+module.exports = {
+  name: "invite",
+  description: "Get Invite Link for Holana",
+  run: async (client, interaction) => {
+    let invite = new EmbedBuilder()
+      .setTitle(`${interaction.user.tag}`)
+      .setDescription("You can invite the bot by clicking on the below button.")
+      .setColor("#2f3136")
+      .setFooter({ text: `Β© Holana | Have a nice day!` });
+
+    const row = new ActionRowBuilder().addComponents(
+      new ButtonBuilder()
+        .setEmoji("865572290065072128")
+        .setLabel(`Invite ${client.user.username}`)
+        .setURL(
+          `https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot%20applications.commands`
+        )
+        .setStyle(ButtonStyle.Link)
+    );
+
+    await interaction.reply({
+      embeds: [invite],
+      components: [row],
+      ephemeral: true,
+    });
+  },
+};
\ No newline at end of file
diff --git a/commands/pause.js b/commands/pause.js
new file mode 100644
index 0000000..55bd2dd
--- /dev/null
+++ b/commands/pause.js
@@ -0,0 +1,71 @@
+const Discord = require("discord.js");
+
+module.exports = {
+  description: "Pause a giveaway",
+
+  options: [
+    {
+      name: "giveaway",
+      description: "The giveaway to pause (message ID or giveaway prize)",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+  ],
+
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (
+      !interaction.member.permissions.has("MANAGE_MESSAGES") &&
+      !interaction.member.roles.cache.some((r) => r.name === "Giveaways")
+    ) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to pause giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    const query = interaction.options.getString("giveaway");
+
+    // try to found the giveaway with prize then with ID
+    const giveaway =
+      // Search with giveaway prize
+      client.giveawaysManager.giveaways.find(
+        (g) => g.prize === query && g.guildId === interaction.guild.id
+      ) ||
+      // Search with giveaway ID
+      client.giveawaysManager.giveaways.find(
+        (g) => g.messageId === query && g.guildId === interaction.guild.id
+      );
+
+    // If no giveaway was found
+    if (!giveaway) {
+      return interaction.reply({
+        content: "Unable to find a giveaway for `" + query + "`.",
+        ephemeral: true,
+      });
+    }
+
+    if (giveaway.pauseOptions.isPaused) {
+      return interaction.reply({
+        content: "This giveaway is already paused.",
+        ephemeral: true,
+      });
+    }
+
+    // Edit the giveaway
+    client.giveawaysManager
+      .pause(giveaway.messageId)
+      // Success message
+      .then(() => {
+        // Success message
+        interaction.reply("Giveaway paused!");
+      })
+      .catch((e) => {
+        interaction.reply({
+          content: e,
+          ephemeral: true,
+        });
+      });
+  },
+};
\ No newline at end of file
diff --git a/commands/ping.js b/commands/ping.js
new file mode 100644
index 0000000..c662477
--- /dev/null
+++ b/commands/ping.js
@@ -0,0 +1,39 @@
+const messages = require("../utils/messages");
+const { EmbedBuilder } = require("discord.js");
+
+module.exports = {
+  name: "ping",
+  description: "Tells a bot latency,",
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (!interaction.member.permissions.has("SEND_MESSAGES")) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to start giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    let circles = {
+      green: "<:online:903711513183940669>",
+      yellow: "<:idle:903711513490112512> ",
+      red: "<:dnd:903711513066487851>",
+    };
+
+    let botping = new EmbedBuilder()
+      .setTitle(`${client.user.username} Ping`)
+      .setColor("2f3136")
+      .addFields({
+        name: "<:connection2:896715171454677013> Bot Ping:",
+        value: `${
+          client.ws?.ping <= 200
+            ? circles.green
+            : client.ws?.ping <= 400
+            ? circles.yellow
+            : circles.red
+        } ${client.ws?.ping}ms`,
+      })
+      .setTimestamp();
+    await interaction.reply({ embeds: [botping] });
+  },
+};
\ No newline at end of file
diff --git a/commands/reroll.js b/commands/reroll.js
new file mode 100644
index 0000000..108ae6d
--- /dev/null
+++ b/commands/reroll.js
@@ -0,0 +1,70 @@
+const Discord = require("discord.js");
+
+module.exports = {
+  description: "Reroll a giveaway",
+
+  options: [
+    {
+      name: "giveaway",
+      description: "The giveaway to reroll (message ID or prize)",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+  ],
+
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (
+      !interaction.member.permissions.has("MANAGE_MESSAGES") &&
+      !interaction.member.roles.cache.some((r) => r.name === "Giveaways")
+    ) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to reroll giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    const query = interaction.options.getString("giveaway");
+
+    // try to found the giveaway with prize then with ID
+    const giveaway =
+      // Search with giveaway prize
+      client.giveawaysManager.giveaways.find(
+        (g) => g.prize === query && g.guildId === interaction.guild.id
+      ) ||
+      // Search with giveaway ID
+      client.giveawaysManager.giveaways.find(
+        (g) => g.messageId === query && g.guildId === interaction.guild.id
+      );
+
+    // If no giveaway was found
+    if (!giveaway) {
+      return interaction.reply({
+        content: "Unable to find a giveaway for `" + query + "`.",
+        ephemeral: true,
+      });
+    }
+
+    if (!giveaway.ended) {
+      return interaction.reply({
+        content: "The giveaway is not ended yet.",
+        ephemeral: true,
+      });
+    }
+
+    // Reroll the giveaway
+    client.giveawaysManager
+      .reroll(giveaway.messageId)
+      .then(() => {
+        // Success message
+        interaction.reply("Giveaway rerolled!");
+      })
+      .catch((e) => {
+        interaction.reply({
+          content: e,
+          ephemeral: true,
+        });
+      });
+  },
+};
\ No newline at end of file
diff --git a/commands/start.js b/commands/start.js
new file mode 100644
index 0000000..9a9068e
--- /dev/null
+++ b/commands/start.js
@@ -0,0 +1,77 @@
+const Discord = require("discord.js");
+const ms = require("ms");
+const messages = require("../utils/messages");
+
+module.exports = {
+  description: "Start a giveaway",
+
+  options: [
+    {
+      name: "duration",
+      description:
+        "How long the giveaway should last for. Example values: 1m, 1h, 1d",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+    {
+      name: "winners",
+      description: "How many winners the giveaway should have",
+      type: Discord.ApplicationCommandOptionType.Integer,
+      required: true,
+    },
+    {
+      name: "prize",
+      description: "What the prize of the giveaway should be",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+    {
+      name: "channel",
+      description: "The channel to start the giveaway in",
+      type: Discord.ApplicationCommandOptionType.Channel,
+      required: true,
+    },
+  ],
+
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (
+      !interaction.member.permissions.has("MANAGE_MESSAGES") &&
+      !interaction.member.roles.cache.some((r) => r.name === "Giveaways")
+    ) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to start giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    const giveawayChannel = interaction.options.getChannel("channel");
+    const giveawayDuration = interaction.options.getString("duration");
+    const giveawayWinnerCount = interaction.options.getInteger("winners");
+    const giveawayPrize = interaction.options.getString("prize");
+
+    if (!giveawayChannel.isTextBased()) {
+      return interaction.reply({
+        content: ":x: Selected channel is not text-based.",
+        ephemeral: true,
+      });
+    }
+
+    // Start the giveaway
+    client.giveawaysManager.start(giveawayChannel, {
+      // The giveaway duration
+      duration: ms(giveawayDuration),
+      // The giveaway prize
+      prize: giveawayPrize,
+      // The giveaway winner count
+      winnerCount: giveawayWinnerCount,
+      // Who hosts this giveaway
+      hostedBy: client.config.hostedBy ? interaction.user : null,
+      // Messages
+      messages,
+    });
+
+    interaction.reply(`Giveaway started in ${giveawayChannel}!`);
+  },
+};
\ No newline at end of file
diff --git a/commands/stats.js b/commands/stats.js
new file mode 100644
index 0000000..99c5d4b
--- /dev/null
+++ b/commands/stats.js
@@ -0,0 +1,87 @@
+const os = require("os");
+const { EmbedBuilder } = require("discord.js");
+const feroms = require("fero-ms");
+
+module.exports = {
+  name: "stats",
+  description: "Sends bot physical statistics",
+  run: async (client, interaction) => {
+    let uptime = client.uptime;
+    let shortUptime = feroms.ms(uptime);
+    let model = os.cpus()[0].model;
+    let cores = os.cpus().length;
+    let platform = os.platform();
+    let nodejs = process.version;
+    let djs = require("discord.js").version;
+    let botversion = require("../package.json").version;
+    let server = client.guilds.cache.size;
+    let user = client.users.cache.size;
+    let channel = client.channels.cache.size;
+
+    let statsembed = new EmbedBuilder()
+      .addFields(
+        {
+          name: "<:live2:896715171882500106> I have been online for?",
+          value: `\`\`\`${shortUptime}\`\`\``,
+        },
+        {
+          name: "<:globe:896718155416760340> Guilds",
+          value: `\`${server}\``,
+          inline: true,
+        },
+        {
+          name: "<:mention:896718358672707584> Users",
+          value: `\`${user}\``,
+          inline: true,
+        },
+        {
+          name: "<:channel:896717996326809641> Channels",
+          value: `\`${channel}\``,
+          inline: true,
+        },
+        {
+          name: "Bot Version",
+          value: `\`v${botversion}\``,
+          inline: true,
+        },
+        {
+          name: "<:prime:896718399776886816> Arch",
+          value: `\`${os.arch()}\``,
+          inline: true,
+        },
+        {
+          name: "<:info:896718244461826140> Platform",
+          value: `\`${platform}\``,
+          inline: true,
+        },
+        {
+          name: "<:desktop:896718080821047346> Cores",
+          value: `\`${cores}\``,
+          inline: true,
+        },
+        {
+          name: "<a:Discord:896723328277024819> Discord.js Version",
+          value: `\`v${djs}\``,
+          inline: true,
+        },
+        {
+          name: "<:jss:896718571491704852> Node.js Version",
+          value: `\`${nodejs}\``,
+          inline: true,
+        },
+        {
+          name: "<:ram:896715172029276180> Ram Usage",
+          value: `\`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(
+            2
+          )}MB/ ${(os.totalmem() / 1024 / 1024).toFixed(2)}MB\``,
+          inline: true,
+        },
+        {
+          name: "<:desktop:896718080821047346> CPU Model",
+          value: `\`\`\`${model}\`\`\``,
+        }
+      )
+      .setTimestamp();
+    await interaction.reply({ embeds: [statsembed] });
+  },
+};
\ No newline at end of file
diff --git a/commands/unpause.js b/commands/unpause.js
new file mode 100644
index 0000000..3f9f511
--- /dev/null
+++ b/commands/unpause.js
@@ -0,0 +1,71 @@
+const Discord = require("discord.js");
+
+module.exports = {
+  description: "Unpause a giveaway",
+
+  options: [
+    {
+      name: "giveaway",
+      description: "The giveaway to unpause (message ID or giveaway prize)",
+      type: Discord.ApplicationCommandOptionType.String,
+      required: true,
+    },
+  ],
+
+  run: async (client, interaction) => {
+    // If the member doesn't have enough permissions
+    if (
+      !interaction.member.permissions.has("MANAGE_MESSAGES") &&
+      !interaction.member.roles.cache.some((r) => r.name === "Giveaways")
+    ) {
+      return interaction.reply({
+        content:
+          ":x: You need to have the manage messages permissions to unpause giveaways.",
+        ephemeral: true,
+      });
+    }
+
+    const query = interaction.options.getString("giveaway");
+
+    // try to found the giveaway with prize then with ID
+    const giveaway =
+      // Search with giveaway prize
+      client.giveawaysManager.giveaways.find(
+        (g) => g.prize === query && g.guildId === interaction.guild.id
+      ) ||
+      // Search with giveaway ID
+      client.giveawaysManager.giveaways.find(
+        (g) => g.messageId === query && g.guildId === interaction.guild.id
+      );
+
+    // If no giveaway was found
+    if (!giveaway) {
+      return interaction.reply({
+        content: "Unable to find a giveaway for `" + query + "`.",
+        ephemeral: true,
+      });
+    }
+
+    if (!giveaway.pauseOptions.isPaused) {
+      return interaction.reply({
+        content: "This giveaway is not paused.",
+        ephemeral: true,
+      });
+    }
+
+    // Edit the giveaway
+    client.giveawaysManager
+      .unpause(giveaway.messageId)
+      // Success message
+      .then(() => {
+        // Success message
+        interaction.reply("Giveaway unpaused!");
+      })
+      .catch((e) => {
+        interaction.reply({
+          content: e,
+          ephemeral: true,
+        });
+      });
+  },
+};
\ No newline at end of file
diff --git a/config.example.json b/config.example.json
deleted file mode 100644
index 7fe9e9e..0000000
--- a/config.example.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "token": "",
-    "prefix": "!",
-    "everyoneMention": false,
-    "copyright": "Holana",
-    "hostedBy": false,
-    "MONGODB_URI": "",
-    "privateMessageInformation": true
-}
\ No newline at end of file
diff --git a/events/discord/interactionCreate.js b/events/discord/interactionCreate.js
deleted file mode 100644
index 151d209..0000000
--- a/events/discord/interactionCreate.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module.exports = (client, interaction) => {
-  // Check if our interaction is a slash command
-  if (interaction.isCommand()) {
-    // Get the command from our slash command collection
-    const command = client.interactions.get(interaction.commandName);
-
-    // If command does not exist return an error message
-    if (!command) return interaction.reply({
-      content: "Something Went Wrong | Perhaps command not registered?",
-      ephemeral: true
-    });
-
-    command.run(client, interaction);
-  }
-}
\ No newline at end of file
diff --git a/events/discord/messageCreate.js b/events/discord/messageCreate.js
deleted file mode 100644
index 9d0b6e7..0000000
--- a/events/discord/messageCreate.js
+++ /dev/null
@@ -1,20 +0,0 @@
-module.exports = (client, message) => {
-  // return if author is a bot
-  if (message.author.bot) return;
-  
-  // return if message does not match prefix (in command)
-  if (message.content.indexOf(client.config.prefix) !== 0) return;
-  
-  // Defining what are arguments and commands
-  const args = message.content.slice(client.config.prefix.length).trim().split(/ +/g);
-  const command = args.shift().toLowerCase();
-  
-  // Get the command data from the client.commands Enmap
-  const cmd = client.commands.get(command);
-  
-  // If command does not exist return
-  if (!cmd) return;
-  
-  // Run the command
-  cmd.run(client, message, args);
-};
\ No newline at end of file
diff --git a/events/discord/ready.js b/events/discord/ready.js
deleted file mode 100644
index d937b39..0000000
--- a/events/discord/ready.js
+++ /dev/null
@@ -1,53 +0,0 @@
-const register = require('../../utils/slashsync');
-const { ActivityType } = require('discord.js');
-
-module.exports = async (client) => {
-  
-  await register(client, client.register_arr.map((command) => ({
-    name: command.name,
-    description: command.description,
-    options: command.options,
-    type: '1'
-  })), {
-    debug: true
-  });
-
-  console.log(`[ / | Slash Command ] - βœ… Loaded all slash commands!`)
-  console.log(`[STATUS] ${client.user.tag} is now online!`);
-  const activities = [
-    'Your Giveaways',
-    '/help',
-    'www.elliebot.net'
-  ]
-
-  setInterval(() => {
-    const status = activities[Math.floor(Math.random() * activities.length)];
-    client.user.setActivity({ name: `${status}`, type: ActivityType.Watching })
-  }, 5000);
-
-};
-
-
-// Do this one if you want the streaming Status //
-
-/*
-const register = require('../../utils/slashsync');
-const { ActivityType } = require('discord.js');
-
-module.exports = async (client) => {
-  
-  await register(client, client.register_arr.map((command) => ({
-    name: command.name,
-    description: command.description,
-    options: command.options,
-    type: '1'
-  })), {
-    debug: true
-  });
-
-  console.log(`[ / | Slash Command ] - βœ… Loaded all slash commands!`)
-  console.log(`[STATUS] ${client.user.tag} is now online!`);
-  
- client.user.setActivity({ name: `Your Giveaways`, type: ActivityType.Streaming, url: 'https://youtube.com/' })
-
-};*/
\ No newline at end of file
diff --git a/events/giveaways/endedGiveawayReactionAdded.js b/events/giveaways/endedGiveawayReactionAdded.js
deleted file mode 100644
index 5649ed1..0000000
--- a/events/giveaways/endedGiveawayReactionAdded.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const Discord = require('discord.js');
-module.exports = {
-  async execute(giveaway, member, reaction) {
-    reaction.users.remove(member.user);
-    member.send({
-      embeds: [
-        new Discord.EmbedBuilder()
-          .setColor("#2F3136")
-          .setDescription("<:cross:885049515323846696> **Oops! Looks Like that giveaway has already ended!** <:ended:1033984179672727553>"),
-      ],
-    })
-    .catch((e) => {});
-  },
-};
\ No newline at end of file
diff --git a/events/giveaways/giveawayEnded.js b/events/giveaways/giveawayEnded.js
deleted file mode 100644
index 32b1fdd..0000000
--- a/events/giveaways/giveawayEnded.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-
-module.exports = {
-  async execute(giveaway, winners) {
-    winners.forEach((member) => {
-      member.send({
-        components: [new ActionRowBuilder()
-          .addComponents(
-            new ButtonBuilder()
-              .setLabel("Jump to the Giveaway")
-              .setStyle(ButtonStyle.Link)
-              .setURL(`https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}`)
-              .setEmoji('973495590921043968'),
-            new ButtonBuilder()
-              .setLabel("Invite Me")
-              .setStyle(ButtonStyle.Link)
-              .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002permissions=406881561681&scope=bot%20applications.commands")
-              .setEmoji('984296691794583582'))],
-        embeds: [new EmbedBuilder()
-          .setAuthor({name: "Congratulations!", iconURL: "https://ellie.gcoms.xyz/Ellise.png"})
-          .setColor("#2F3136")
-          .setThumbnail('https://ellie.gcoms.xyz/Ellise.png')
-          .setDescription(`<:DotYellow:1002212470812852245> Hello there ${member.user}\n <:DotBlue:1002212466480128032> Congrats!! you have won **${giveaway.prize}!**\n <:DotBlue:1002212466480128032> DM ${giveaway.hostedBy} to claim your prize!`)
-          .setImage('https://ellie.gcoms.xyz/Ellise.png')
-          .setTimestamp()
-          .setFooter({
-            text: `©️ Holana`, 
-            iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-           })
-        ]
-      }).catch(e => {})
-    });
-  }
-}
\ No newline at end of file
diff --git a/events/giveaways/giveawayReactionAdded.js b/events/giveaways/giveawayReactionAdded.js
deleted file mode 100644
index 852678f..0000000
--- a/events/giveaways/giveawayReactionAdded.js
+++ /dev/null
@@ -1,64 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-
-module.exports = {
-  async execute(giveaway, reactor, messageReaction) {
-
-    const noice = new ActionRowBuilder()
-      .addComponents(
-        new ButtonBuilder()
-          .setLabel("Invite Me")
-          .setStyle(ButtonStyle.Link)
-          .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands")
-          .setEmoji('984296691794583582'),
-    );
-    
-    let approved =  new EmbedBuilder()
-    .setTimestamp()
-    .setColor("#2F3136")
-    .setAuthor({name: "Entry Confirmed!", iconURL: "https://ellie.gcoms.xyz/Ellise.png"})    
-    .setDescription(
-      `<:DotGreen:1002212464345239643> Your entry to **${giveaway.prize}** on [This Server](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) has been approved! \n<:DotGreen:1002212464345239643> Earn extra points by **Voting**. \n<:DotPink:1002212468870877304> Hosted By: ${giveaway.hostedBy}`
-    )
-    .setFooter({ text: "©️ Holana", iconURL: ('https://ellie.gcoms.xyz/Ellise.png') })
-    .setTimestamp()
-
-    const lol = new ActionRowBuilder()
-      .addComponents(
-        new ButtonBuilder()
-          .setLabel("Invite Me")
-          .setStyle(ButtonStyle.Link)
-          .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands")
-          .setEmoji('984296691794583582'),
-    );
-    
-   let denied =  new EmbedBuilder()
-    .setTimestamp()
-    .setColor("#2F3136")
-    .setAuthor({name: "Entry Denied!", iconURL: "https://ellie.gcoms.xyz/Ellise.png"})    
-    .setDescription(
-      `<:DotPink:1002212468870877304> Your entry to **${giveaway.prize}** on [This Server](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) has been denied! \n<:DotPink:1002212468870877304> Please review the requirements to enter the giveaway properly. \n<:DotPink:1002212468870877304> Hosted By: ${giveaway.hostedBy}`
-    )
-    .setFooter({ text: "©️ Holana", iconURL: ('https://ellie.gcoms.xyz/Ellise.png') })
-
-    let client = messageReaction.message.client
-    if (reactor.user.bot) return;
-    if(giveaway.extraData) {      
-      if (giveaway.extraData.role !== "null" && !reactor.roles.cache.get(giveaway.extraData.role)){ 
-        messageReaction.users.remove(reactor.user);
-        return reactor.send({
-          embeds: [denied],
-          components: [lol]
-        }).catch(e => {})
-      }
-
-      return reactor.send({
-        embeds: [approved],
-        components: [noice]
-      }).catch(e => {})
-    } else {
-        return reactor.send({
-          embeds: [approved]
-        }).catch(e => {})
-    }
-    }
-  }
\ No newline at end of file
diff --git a/events/giveaways/giveawayReactionRemoved.js b/events/giveaways/giveawayReactionRemoved.js
deleted file mode 100644
index 0e1ed32..0000000
--- a/events/giveaways/giveawayReactionRemoved.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-
-module.exports = {
-  async execute(giveaway, member) {
-    return member.send({
-
-      components: [new ActionRowBuilder()
-        .addComponents(
-          new ButtonBuilder()
-          .setLabel("Jump to the Giveaway")
-          .setStyle(ButtonStyle.Link)
-          .setURL(`https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}`)
-            .setEmoji('973495590921043968'))],
-      
-      embeds: [new EmbedBuilder()
-        .setTimestamp()
-        .setAuthor({ name: "Reaction Removed!", iconURL: "https://ellie.gcoms.xyz/Ellise.png" })
-        .setTitle('Did You Just Remove a Reaction From A Giveaway?')
-        .setColor("#2F3136")
-        .setDescription(
-          `<:DotPink:1002212468870877304> Your entery to **${giveaway.prize}** on [This Server](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) have been removed!\n <:DotPink:1002212468870877304> This means you're removed as a valid giveaway participant.\n <:DotGreen:1002212464345239643> Think It was a mistake? **Go react again!**`
-        )
-        .setFooter({ text: "©️ Holana", iconURL: ('https://ellie.gcoms.xyz/Ellise.png') })
-      ]
-    }).catch(e => {})
-  }
-}
\ No newline at end of file
diff --git a/events/giveaways/giveawayRerolled.js b/events/giveaways/giveawayRerolled.js
deleted file mode 100644
index 3f006fd..0000000
--- a/events/giveaways/giveawayRerolled.js
+++ /dev/null
@@ -1,36 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-
-module.exports = {
-  async execute(giveaway, winners) {
-    winners.forEach((member) => {
-      member.send({
-
-        components: [new ActionRowBuilder()
-                    .addComponents(
-                      new ButtonBuilder()
-                        .setLabel("Jump to the Giveaway")
-                        .setStyle(ButtonStyle.Link)
-                        .setURL(`https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}`)
-                        .setEmoji('973495590921043968'),
-                      new ButtonBuilder()
-                        .setLabel("Invite Me")
-                        .setStyle(ButtonStyle.Link)
-                        .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands")
-                        .setEmoji('984296691794583582'))],
-        
-        embeds: [new EmbedBuilder()
-          .setAuthor({name: "Congratulations!", iconURL: ('https://ellie.gcoms.xyz/Ellise.png')})
-          .setThumbnail('https://ellie.gcoms.xyz/Ellise.png')
-          .setColor("#2F3136")
-          .setDescription(`<:DotYellow:1002212470812852245> Hello there ${member.user}\n<:DotGreen:1002212464345239643> Host of the giveaway rerolled and you won the Giveaway!\n<:DotGreen:1002212464345239643> Good Job On Winning **${giveaway.prize}!** <:confetti:984296694357319730><:confetti:984296694357319730>\n<:DotGreen:1002212464345239643> DM ${giveaway.hostedBy} to claim your prize!!`)
-          .setImage('https://ellie.gcoms.xyz/Ellise.png') 
-          .setTimestamp()
-          .setFooter({
-            text: "©️ Holana", 
-            iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-          })
-        ]
-      }).catch(e => {})
-    });
-  }
-}
\ No newline at end of file
diff --git a/events/interactionCreate.js b/events/interactionCreate.js
new file mode 100644
index 0000000..c9eb1c2
--- /dev/null
+++ b/events/interactionCreate.js
@@ -0,0 +1,13 @@
+module.exports = (client, interaction) => {
+  if (!interaction.isChatInputCommand()) return;
+
+  const command = client.commands.get(interaction.commandName);
+
+  if (!command)
+    return void interaction.reply({
+      content: `Command \`${interaction.commandName}\` not found.`,
+      ephemeral: true,
+    });
+
+  command.run(client, interaction);
+}
\ No newline at end of file
diff --git a/events/mongo/connected.js b/events/mongo/connected.js
deleted file mode 100644
index 1f05652..0000000
--- a/events/mongo/connected.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const chalk = require('chalk');
-
-module.exports = {
-  name: "connected",
-  execute() {
-    console.log(chalk.greenBright("[MONGO DB]: Connected to MongoDB!"));
-  },
-};
\ No newline at end of file
diff --git a/events/mongo/connecting.js b/events/mongo/connecting.js
deleted file mode 100644
index 15cabf1..0000000
--- a/events/mongo/connecting.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const chalk = require('chalk');
-
-module.exports = {
-  name: "connecting",
-  execute() {
-    console.log(chalk.cyan("[MONGO DB]: Connecting to MongoDB..."));
-  },
-};
\ No newline at end of file
diff --git a/events/mongo/disconnected.js b/events/mongo/disconnected.js
deleted file mode 100644
index 1509d2d..0000000
--- a/events/mongo/disconnected.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const chalk = require('chalk');
-
-module.exports = {
-  name: 'disconnected',
-  execute(client) {
-    console.log(chalk.red("[MONGO DB]: Disconnected from MongoDB!"));
-  },
-};
\ No newline at end of file
diff --git a/events/mongo/err.js b/events/mongo/err.js
deleted file mode 100644
index 50742fb..0000000
--- a/events/mongo/err.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const chalk = require('chalk');
-
-module.exports = {
-  name: "err",
-  execute(err) {
-    console.log(chalk.red("[MONGO DB]: Error: " + err + ""));
-  },
-};
\ No newline at end of file
diff --git a/events/ready.js b/events/ready.js
new file mode 100644
index 0000000..965ff93
--- /dev/null
+++ b/events/ready.js
@@ -0,0 +1,21 @@
+const { ActivityType } = require("discord.js");
+
+module.exports = (client) => {
+  console.log(
+    `Ready to serve in ${client.channels.cache.size} channels on ${client.guilds.cache.size} servers, for a total of ${client.users.cache.size} users.`
+  );
+
+  const activities = [
+    `Giveaways in ${client.guilds.cache.size} guilds`,
+    "/help",
+    `over ${client.users.cache.size} users!`,
+    `${
+      client.giveawaysManager.giveaways.filter((g) => !g.ended).length
+    } active giveaways!`,
+  ];
+
+  setInterval(() => {
+    let activity = activities[Math.floor(Math.random() * activities.length)];
+    client.user.setActivity(activity, { type: ActivityType.Watching });
+  }, 20000);
+};
\ No newline at end of file
diff --git a/example.config.json b/example.config.json
new file mode 100644
index 0000000..1c36f8c
--- /dev/null
+++ b/example.config.json
@@ -0,0 +1,5 @@
+{
+    "token": "Discord Bot Token",
+    "everyoneMention": false,
+    "hostedBy": true
+}
\ No newline at end of file
diff --git a/examples/custom-databases/.eslintrc.json b/examples/custom-databases/.eslintrc.json
new file mode 100644
index 0000000..4ea2dac
--- /dev/null
+++ b/examples/custom-databases/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+  "rules": {
+    "no-restricted-globals": "off"
+  }
+}
\ No newline at end of file
diff --git a/examples/custom-databases/enmap.js b/examples/custom-databases/enmap.js
new file mode 100644
index 0000000..80cf5f2
--- /dev/null
+++ b/examples/custom-databases/enmap.js
@@ -0,0 +1,64 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load Enmap
+const Enmap = require("enmap");
+
+// Create giveaways table
+const giveawayDB = new Enmap({ name: "giveaways" });
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database
+    return giveawayDB.fetchEverything().array();
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Add the new giveaway to the database
+    giveawayDB.set(messageId, giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Replace the unedited giveaway with the edited giveaway
+    giveawayDB.set(messageId, giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Remove the giveaway from the database
+    giveawayDB.delete(messageId);
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(client, {
+  default: {
+    botsCanWin: false,
+    embedColor: "#FF0000",
+    embedColorEnd: "#000000",
+    reaction: "πŸŽ‰",
+  },
+});
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/mongoose.js b/examples/custom-databases/mongoose.js
new file mode 100644
index 0000000..3d5c89f
--- /dev/null
+++ b/examples/custom-databases/mongoose.js
@@ -0,0 +1,133 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Connect to the database
+const mongoose = require("mongoose");
+mongoose.connect("mongodb://localhost/database");
+const db = mongoose.connection;
+
+// Check the connection
+db.on("error", console.error.bind(console, "Connection error:"));
+db.once("open", () => {
+  console.log("Connected to MongoDB.");
+});
+
+// Create the schema for giveaways
+const giveawaySchema = new mongoose.Schema(
+  {
+    messageId: String,
+    channelId: String,
+    guildId: String,
+    startAt: Number,
+    endAt: Number,
+    ended: Boolean,
+    winnerCount: Number,
+    prize: String,
+    messages: {
+      giveaway: String,
+      giveawayEnded: String,
+      title: String,
+      inviteToParticipate: String,
+      drawing: String,
+      dropMessage: String,
+      winMessage: mongoose.Mixed,
+      embedFooter: mongoose.Mixed,
+      noWinner: String,
+      winners: String,
+      endedAt: String,
+      hostedBy: String,
+    },
+    thumbnail: String,
+    image: String,
+    hostedBy: String,
+    winnerIds: { type: [String], default: undefined },
+    reaction: mongoose.Mixed,
+    botsCanWin: Boolean,
+    embedColor: mongoose.Mixed,
+    embedColorEnd: mongoose.Mixed,
+    exemptPermissions: { type: [], default: undefined },
+    exemptMembers: String,
+    bonusEntries: String,
+    extraData: mongoose.Mixed,
+    lastChance: {
+      enabled: Boolean,
+      content: String,
+      threshold: Number,
+      embedColor: mongoose.Mixed,
+    },
+    pauseOptions: {
+      isPaused: Boolean,
+      content: String,
+      unPauseAfter: Number,
+      embedColor: mongoose.Mixed,
+      durationAfterPause: Number,
+      infiniteDurationText: String,
+    },
+    isDrop: Boolean,
+    allowedMentions: {
+      parse: { type: [String], default: undefined },
+      users: { type: [String], default: undefined },
+      roles: { type: [String], default: undefined },
+    },
+  },
+  { id: false }
+);
+
+// Create the model
+const giveawayModel = mongoose.model("giveaways", giveawaySchema);
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database. We fetch all documents by passing an empty condition.
+    return await giveawayModel.find().lean().exec();
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Add the new giveaway to the database
+    await giveawayModel.create(giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Find by messageId and update it
+    await giveawayModel.updateOne({ messageId }, giveawayData).exec();
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Find by messageId and delete it
+    await giveawayModel.deleteOne({ messageId }).exec();
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(client, {
+  default: {
+    botsCanWin: false,
+    embedColor: "#FF0000",
+    embedColorEnd: "#000000",
+    reaction: "πŸŽ‰",
+  },
+});
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/mysql.js b/examples/custom-databases/mysql.js
new file mode 100644
index 0000000..2f44e83
--- /dev/null
+++ b/examples/custom-databases/mysql.js
@@ -0,0 +1,144 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load mysql
+const MySQL = require("mysql");
+const sql = MySQL.createConnection({
+  host: "localhost",
+  user: "Your MySQL user",
+  password: "Your MySQL password",
+  database: "Your MySQL database name",
+  charset: "utf8mb4", // In order to save emojis correctly
+});
+sql.connect((err) => {
+  if (err) {
+    // Stop the process if we can't connect to the MySQL server
+    throw new Error("Impossible to connect to MySQL server. Code: " + err.code);
+  } else {
+    console.log(
+      "[SQL] Connected to the MySQL server! Connection ID: " + sql.threadId
+    );
+  }
+});
+
+// Create giveaways table
+sql.query(
+  `
+	CREATE TABLE IF NOT EXISTS \`giveaways\`
+	(
+		\`id\` INT(1) NOT NULL AUTO_INCREMENT,
+		\`message_id\` VARCHAR(20) NOT NULL,
+		\`data\` JSON NOT NULL,
+		PRIMARY KEY (\`id\`)
+	);
+`,
+  (err) => {
+    if (err) console.error(err);
+    console.log("[SQL] Created table `giveaways`");
+  }
+);
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    return new Promise((resolve, reject) => {
+      sql.query("SELECT `data` FROM `giveaways`", (err, res) => {
+        if (err) {
+          console.error(err);
+          return reject(err);
+        }
+        const giveaways = res.map((row) =>
+          JSON.parse(row.data, (_, v) =>
+            typeof v === "string" && /BigInt\("(-?\d+)"\)/.test(v) ? eval(v) : v
+          )
+        );
+        resolve(giveaways);
+      });
+    });
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    return new Promise((resolve, reject) => {
+      sql.query(
+        "INSERT INTO `giveaways` (`message_id`, `data`) VALUES (?,?)",
+        [
+          messageId,
+          JSON.stringify(giveawayData, (_, v) =>
+            typeof v === "bigint" ? `BigInt("${v}")` : v
+          ),
+        ],
+        (err, res) => {
+          if (err) {
+            console.error(err);
+            return reject(err);
+          }
+          resolve(true);
+        }
+      );
+    });
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    return new Promise((resolve, reject) => {
+      sql.query(
+        "UPDATE `giveaways` SET `data` = ? WHERE `message_id` = ?",
+        [
+          JSON.stringify(giveawayData, (_, v) =>
+            typeof v === "bigint" ? `BigInt("${v}")` : v
+          ),
+          messageId,
+        ],
+        (err, res) => {
+          if (err) {
+            console.error(err);
+            return reject(err);
+          }
+          resolve(true);
+        }
+      );
+    });
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    return new Promise((resolve, reject) => {
+      sql.query(
+        "DELETE FROM `giveaways` WHERE `message_id` = ?",
+        messageId,
+        (err, res) => {
+          if (err) {
+            console.error(err);
+            return reject(err);
+          }
+          resolve(true);
+        }
+      );
+    });
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(client, {
+  default: {
+    botsCanWin: false,
+    embedColor: "#FF0000",
+    embedColorEnd: "#000000",
+    reaction: "πŸŽ‰",
+  },
+});
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/nano.js b/examples/custom-databases/nano.js
new file mode 100644
index 0000000..a9969d2
--- /dev/null
+++ b/examples/custom-databases/nano.js
@@ -0,0 +1,81 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load nano
+const nano = require("nano")("http://admin:mypassword@localhost:5984");
+let giveawayDB;
+
+// Check the DB
+(async () => {
+  if (!(await nano.db.list()).includes("giveaways"))
+    await nano.db.create("giveaways");
+  giveawayDB = nano.use("giveaways");
+  // Start the manager only after the DB got checked to prevent an error
+  client.giveawaysManager._init();
+})();
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database
+    return (await giveawayDB.list({ include_docs: true })).rows.map(
+      (r) => r.doc
+    );
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Add the new giveaway to the database
+    await giveawayDB.insert(giveawayData, messageId);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Get the unedited giveaway from the database
+    const giveaway = await giveawayDB.get(messageId);
+    // Edit the giveaway
+    await giveawayDB.insert({ ...giveaway, ...giveawayData });
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Get the giveaway from the database
+    const giveaway = await giveawayDB.get(messageId);
+    // Remove the giveaway from the database
+    await giveawayDB.destroy(messageId, giveaway._rev);
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(
+  client,
+  {
+    default: {
+      botsCanWin: false,
+      embedColor: "#FF0000",
+      embedColorEnd: "#000000",
+      reaction: "πŸŽ‰",
+    },
+  },
+  false
+); // ATTENTION: Add "false" in order to not start the manager until the DB got checked, see below
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/quick.db.js b/examples/custom-databases/quick.db.js
new file mode 100644
index 0000000..b81acaa
--- /dev/null
+++ b/examples/custom-databases/quick.db.js
@@ -0,0 +1,76 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load quick.db
+const db = require("quick.db");
+if (!Array.isArray(db.get("giveaways"))) db.set("giveaways", []);
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database
+    return db.get("giveaways");
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Add the new giveaway to the database
+    db.push("giveaways", giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Get all giveaways from the database
+    const giveaways = db.get("giveaways");
+    // Remove the unedited giveaway from the array
+    const newGiveawaysArray = giveaways.filter(
+      (giveaway) => giveaway.messageId !== messageId
+    );
+    // Push the edited giveaway into the array
+    newGiveawaysArray.push(giveawayData);
+    // Save the updated array
+    db.set("giveaways", newGiveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Get all giveaways from the database
+    const giveaways = db.get("giveaways");
+    // Remove the giveaway from the array
+    const newGiveawaysArray = giveaways.filter(
+      (giveaway) => giveaway.messageId !== messageId
+    );
+    // Save the updated array
+    db.set("giveaways", newGiveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(client, {
+  default: {
+    botsCanWin: false,
+    embedColor: "#FF0000",
+    embedColorEnd: "#000000",
+    reaction: "πŸŽ‰",
+  },
+});
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/quick.replit.js b/examples/custom-databases/quick.replit.js
new file mode 100644
index 0000000..6eadf2f
--- /dev/null
+++ b/examples/custom-databases/quick.replit.js
@@ -0,0 +1,87 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load quick.replit
+const { Database } = require("quick.replit");
+const db = new Database();
+
+// Check the DB when it is ready
+db.once("ready", async () => {
+  if (!Array.isArray(await db.get("giveaways"))) await db.set("giveaways", []);
+  // Start the manager only after the DB got checked to prevent an error
+  client.giveawaysManager._init();
+});
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database
+    return await db.get("giveaways");
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Add the new giveaway to the database
+    await db.push("giveaways", giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Get all giveaways from the database
+    const giveaways = await db.get("giveaways");
+    // Remove the unedited giveaway from the array
+    const newGiveawaysArray = giveaways.filter(
+      (giveaway) => giveaway.messageId !== messageId
+    );
+    // Push the edited giveaway into the array
+    newGiveawaysArray.push(giveawayData);
+    // Save the updated array
+    await db.set("giveaways", newGiveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Get all giveaways from the database
+    const giveaways = await db.get("giveaways");
+    // Remove the giveaway from the array
+    const newGiveawaysArray = giveaways.filter(
+      (giveaway) => giveaway.messageId !== messageId
+    );
+    // Save the updated array
+    await db.set("giveaways", newGiveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(
+  client,
+  {
+    default: {
+      botsCanWin: false,
+      embedColor: "#FF0000",
+      embedColorEnd: "#000000",
+      reaction: "πŸŽ‰",
+    },
+  },
+  false
+); // ATTENTION: Add "false" in order to not start the manager until the DB got checked, see below
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/quickmongo.js b/examples/custom-databases/quickmongo.js
new file mode 100644
index 0000000..53f23c5
--- /dev/null
+++ b/examples/custom-databases/quickmongo.js
@@ -0,0 +1,71 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load quickmongo
+const { Database } = require("quickmongo");
+const giveawayDB = new Database("mongodb://localhost/database", {
+  collectionName: "giveaways",
+});
+
+// Start the manager only after the DB turned ready to prevent an error
+giveawayDB.once("ready", () => client.giveawaysManager._init());
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database
+    return (await giveawayDB.all()).map((element) => element.data);
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Add the new giveaway to the database
+    await giveawayDB.set(messageId, giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Replace the unedited giveaway with the edited giveaway
+    await giveawayDB.set(messageId, giveawayData);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Remove the giveaway from the database
+    await giveawayDB.delete(messageId);
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(
+  client,
+  {
+    default: {
+      botsCanWin: false,
+      embedColor: "#FF0000",
+      embedColorEnd: "#000000",
+      reaction: "πŸŽ‰",
+    },
+  },
+  false
+); // ATTENTION: Add "false" in order to not start the manager until the DB got checked, see below
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/custom-databases/replit.js b/examples/custom-databases/replit.js
new file mode 100644
index 0000000..6dd8c84
--- /dev/null
+++ b/examples/custom-databases/replit.js
@@ -0,0 +1,83 @@
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.IntentsBitField.Flags.Guilds,
+    Discord.IntentsBitField.Flags.GuildMessageReactions,
+  ],
+});
+
+// Load Replit Database
+const Database = require("@replit/database");
+const db = new Database();
+(async () => {
+  if (!Array.isArray(await db.get("giveaways"))) await db.set("giveaways", []);
+})();
+
+const { GiveawaysManager } = require("discord-giveaways");
+const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager {
+  // This function is called when the manager needs to get all giveaways which are stored in the database.
+  async getAllGiveaways() {
+    // Get all giveaways from the database
+    return await db.get("giveaways");
+  }
+
+  // This function is called when a giveaway needs to be saved in the database.
+  async saveGiveaway(messageId, giveawayData) {
+    // Get all giveaways from the database
+    const giveawaysArray = await db.get("giveaways");
+    // Push the new giveaway into the array
+    giveawaysArray.push(giveawayData);
+    // Save the updated array
+    await db.set("giveaways", giveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be edited in the database.
+  async editGiveaway(messageId, giveawayData) {
+    // Get all giveaways from the database
+    const giveaways = await db.get("giveaways");
+    // Remove the unedited giveaway from the array
+    const newGiveawaysArray = giveaways.filter(
+      (giveaway) => giveaway.messageId !== messageId
+    );
+    // Push the edited giveaway into the array
+    newGiveawaysArray.push(giveawayData);
+    // Save the updated array
+    await db.set("giveaways", newGiveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+
+  // This function is called when a giveaway needs to be deleted from the database.
+  async deleteGiveaway(messageId) {
+    // Get all giveaways from the database
+    const giveaways = await db.get("giveaways");
+    // Remove the giveaway from the array
+    const newGiveawaysArray = giveaways.filter(
+      (giveaway) => giveaway.messageId !== messageId
+    );
+    // Save the updated array
+    await db.set("giveaways", newGiveawaysArray);
+    // Don't forget to return something!
+    return true;
+  }
+};
+
+// Create a new instance of your new class
+const manager = new GiveawayManagerWithOwnDatabase(client, {
+  default: {
+    botsCanWin: false,
+    embedColor: "#FF0000",
+    embedColorEnd: "#000000",
+    reaction: "πŸŽ‰",
+  },
+});
+// We now have a giveawaysManager property to access the manager everywhere!
+client.giveawaysManager = manager;
+
+client.on("ready", () => {
+  console.log("Bot is ready!");
+});
+
+client.login(process.env.DISCORD_BOT_TOKEN);
\ No newline at end of file
diff --git a/examples/simple.js b/examples/simple.js
new file mode 100644
index 0000000..457ca58
--- /dev/null
+++ b/examples/simple.js
@@ -0,0 +1 @@
+// Example bot available on https://toastielab.dev/toastie_t0ast/Holana
\ No newline at end of file
diff --git a/giveawayInit.js b/giveawayInit.js
deleted file mode 100644
index 4939ad1..0000000
--- a/giveawayInit.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const { GiveawaysManager } = require("discord-giveaways");
-const giveawayModel = require('./schemas/giveawaysSchema');
-
-module.exports = (client) =>{
-
-    class GiveawayManagerCustom extends GiveawaysManager {
-
-
-        async getAllGiveaways() {
-            return await giveawayModel.find().lean().exec();
-        }
-    
-        async saveGiveaway(messageId, giveawayData) {
-            await giveawayModel.create(giveawayData);
-            return true;
-        }
-    
-        async editGiveaway(messageId, giveawayData) {
-            await giveawayModel.updateOne({ messageId }, giveawayData, { omitUndefined: true }).exec();
-            return true;
-        }
-    
-        async deleteGiveaway(messageId) {
-            await giveawayModel.deleteOne({ messageId }).exec();
-            return true;
-        }
-    };
-
-    const manager = new GiveawayManagerCustom(client, {
-        storage: false,
-        updateCountdownEvery: 10000,
-        default: {
-            botsCanWin: false,
-            exemptPermissions: [],
-            embedColor: "#FF0000",
-            reaction: "πŸŽ‰"
-        }
-    });
-    
-    client.giveawaysManager = manager
-}
\ No newline at end of file
diff --git a/giveaways.json b/giveaways.json
new file mode 100644
index 0000000..10ad9ba
--- /dev/null
+++ b/giveaways.json
@@ -0,0 +1 @@
+[{"messageId":"1178260749441830943","channelId":"553759294953357314","guildId":"553759294953357312","startAt":1700989652527,"endAt":1700989652557,"ended":true,"winnerCount":1,"prize":"test","messages":{"giveaway":"πŸŽ‰πŸŽ‰ **GIVEAWAY** πŸŽ‰πŸŽ‰","giveawayEnded":"πŸŽ‰πŸŽ‰ **GIVEAWAY ENDED** πŸŽ‰πŸŽ‰","title":"{this.prize}","inviteToParticipate":"React with πŸŽ‰ to participate!","winMessage":"Congratulations, {winners}! You won **{this.prize}**!","drawing":"Drawing: {timestamp}","dropMessage":"Be the first to react with πŸŽ‰ !","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {this.hostedBy}"},"hostedBy":"<@234542843732033537>"},{"messageId":"1178260884200620084","channelId":"553759294953357314","guildId":"553759294953357312","startAt":1700989684632,"endAt":1700989724632,"ended":true,"winnerCount":1,"prize":"test","messages":{"giveaway":"πŸŽ‰πŸŽ‰ **GIVEAWAY** πŸŽ‰πŸŽ‰","giveawayEnded":"πŸŽ‰πŸŽ‰ **GIVEAWAY ENDED** πŸŽ‰πŸŽ‰","title":"{this.prize}","inviteToParticipate":"React with πŸŽ‰ to participate!","winMessage":"Congratulations, {winners}! You won **{this.prize}**!","drawing":"Drawing: {timestamp}","dropMessage":"Be the first to react with πŸŽ‰ !","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {this.hostedBy}"},"hostedBy":"<@234542843732033537>","winnerIds":["234542843732033537"]}]
\ No newline at end of file
diff --git a/host.js b/host.js
deleted file mode 100644
index de3c9d6..0000000
--- a/host.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// const express = require('express');
-// const app = express();
-// const port = 3000;
-// app.listen(port, () => console.log(`Bot running on http://127.0.0.1:${port}`));
-
-const http = require("http");
-http.createServer((_, res) => res.end("Holana online")).listen(8080)
\ No newline at end of file
diff --git a/index.js b/index.js
index d938639..23cccc4 100644
--- a/index.js
+++ b/index.js
@@ -1,114 +1,103 @@
-process.title = 'Giveaway Child';
+process.title = 'Holana';
 
-const Discord = require("discord.js");
-const { Client, GatewayIntentBits, Partials } = require("discord.js");
-const chalk = require("chalk");
-const config = require("./config.json");
-const Handler = require("discord-handlers");
-const handler = new Handler();
-const { connect } = require("mongoose");
-const GiveawaysManager = require("./giveawayInit");
-const client = new Client({
-  partials: [
-    Partials.Channel, // for text channel
-    Partials.GuildMember, // for guild member
-    Partials.Reaction, // for message reaction
-  ],
-  intents: [
-    GatewayIntentBits.Guilds, // for guild related things
-    GatewayIntentBits.GuildMessages, // for guild messages things
-    GatewayIntentBits.GuildMessageReactions, // for message reactions things
-  ],
-});
 const fs = require("fs");
 
+const Discord = require("discord.js");
+const client = new Discord.Client({
+  intents: [
+    Discord.GatewayIntentBits.Guilds,
+    Discord.GatewayIntentBits.GuildMembers,
+    Discord.GatewayIntentBits.GuildMessageReactions,
+  ],
+});
+
+const config = require("./config.json");
 client.config = config;
 
-(async () => {
-  await connect(config.MONGODB_URI).catch((err) =>
-    console.log(chalk.red(`[MONGO DB]: Error: ${err}`))
+const synchronizeSlashCommands = require("discord-sync-commands");
+
+// Init discord giveaways
+const { GiveawaysManager } = require("discord-giveaways");
+client.giveawaysManager = new GiveawaysManager(client, {
+  storage: "./giveaways.json",
+  default: {
+    botsCanWin: false,
+    embedColor: "#FF0000",
+    reaction: "πŸŽ‰",
+    lastChance: {
+      enabled: true,
+      content: "⚠️ **LAST CHANCE TO ENTER !** ⚠️",
+      threshold: 10000,
+      embedColor: "#FF0000",
+    },
+  },
+});
+// We now have a client.giveawaysManager property to manage our giveaways!
+
+client.giveawaysManager.on(
+  "giveawayReactionAdded",
+  (giveaway, member, reaction) => {
+    console.log(
+      `${member.user.tag} entered giveaway #${giveaway.messageId} (${reaction.emoji.name})`
+    );
+  }
+);
+
+client.giveawaysManager.on(
+  "giveawayReactionRemoved",
+  (giveaway, member, reaction) => {
+    console.log(
+      `${member.user.tag} unreact to giveaway #${giveaway.messageId} (${reaction.emoji.name})`
+    );
+  }
+);
+
+client.giveawaysManager.on("giveawayEnded", (giveaway, winners) => {
+  console.log(
+    `Giveaway #${giveaway.messageId} ended! Winners: ${winners
+      .map((member) => member.user.username)
+      .join(", ")}`
   );
-})();
-
-handler.handleMongoEvents("./events/mongo", client);
-
-// Initialise discord giveaways
-
-GiveawaysManager(client);
-
-
-//<:confetti:984296694357319730>
-//<:warning:984663315412303922>
-/* Load all events (discord based) */
-
-fs.readdir("./events/discord", (_err, files) => {
-  files.forEach((file) => {
-    if (!file.endsWith(".js")) return;
-    const event = require(`./events/discord/${file}`);
-    let eventName = file.split(".")[0];
-    console.log(`[Event]   βœ…  Loaded: ${eventName}`);
-    client.on(eventName, event.bind(null, client));
-    delete require.cache[require.resolve(`./events/discord/${file}`)];
-  });
 });
 
-/* Load all events (giveaways based) */
-
-fs.readdir("./events/giveaways", (_err, files) => {
+/* Load all commands */
+client.commands = new Discord.Collection();
+fs.readdir("./commands/", (_err, files) => {
   files.forEach((file) => {
     if (!file.endsWith(".js")) return;
-    const event = require(`./events/giveaways/${file}`);
-    let eventName = file.split(".")[0];
-    console.log(`[Event]   πŸŽ‰ Loaded: ${eventName}`);
-    client.giveawaysManager.on(eventName, (...file) =>
-      event.execute(...file, client)
-    ),
-      delete require.cache[require.resolve(`./events/giveaways/${file}`)];
-  });
-});
-
-// if(config.privateMessageInformation === true) {
-//   fs.readdirSync('./events/giveaways').forEach(async (dir) => {
-//       const events = fs.readdirSync(`./events/giveaways/${dir}`).filter(file => file.endsWith('.js'));
-  
-//       for(const file of events) {
-//           const event = require(`./events/giveaways/${dir}/${file}`);
-//           if(event.name) {
-//               // console.log(`[GIVEAWAYS EVENTS]` + ` Event ${file.split(".")[0]} loaded!`);
-          
-//               client.giveawaysManager.on(event.name, (...args) => event.execute(...args, client))
-//               delete require.cache[require.resolve(`./events/giveaways/${dir}/${file}`)];
-//           } else {
-//               console.log(`[GIVEAWAYS EVENTS]` + ` Failed to load event: ${file.split('.')[0]}!`);
-//               continue;
-//           }
-//       }
-//   });
-// } else {
-//   return console.log(`[WARNING]`.yellow + ` Private Message Information is disabled!`);
-// }
-
-/* Load all events (mongo based) */
-
-
-
-// let interactions be a new collection ( slash commands  )
-client.interactions = new Discord.Collection();
-// creating an empty array for registering slash commands
-client.register_arr = [];
-/* Load all slash commands */
-fs.readdir("./slash/", (_err, files) => {
-  files.forEach((file) => {
-    if (!file.endsWith(".js")) return;
-    let props = require(`./slash/${file}`);
+    let props = require(`./commands/${file}`);
     let commandName = file.split(".")[0];
-    client.interactions.set(commandName, {
+    client.commands.set(commandName, {
       name: commandName,
       ...props,
     });
-    client.register_arr.push(props);
+    console.log(`πŸ‘Œ Command loaded: ${commandName}`);
+  });
+  synchronizeSlashCommands(
+    client,
+    client.commands.map((c) => ({
+      name: c.name,
+      description: c.description,
+      options: c.options,
+      type: Discord.ApplicationCommandType.ChatInput,
+    })),
+    {
+      debug: true,
+    }
+  );
+});
+
+/* Load all events */
+fs.readdir("./events/", (_err, files) => {
+  files.forEach((file) => {
+    if (!file.endsWith(".js")) return;
+    const event = require(`./events/${file}`);
+    let eventName = file.split(".")[0];
+    console.log(`πŸ‘Œ Event loaded: ${eventName}`);
+    client.on(eventName, event.bind(null, client));
+    delete require.cache[require.resolve(`./events/${file}`)];
   });
 });
 
-// Login through the client
+// Login
 client.login(config.token);
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 5fdcacc..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,3842 +0,0 @@
-{
-  "name": "giveaway-child",
-  "version": "3.0.0",
-  "lockfileVersion": 2,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "giveaway-child",
-      "version": "3.0.0",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "axios": "^0.27.2",
-        "chalk": "^4.1.2",
-        "discord-giveaways": "^6.0.1",
-        "discord-handlers": "^0.0.1",
-        "discord.js": "^14.6.0",
-        "dotenv": "^16.0.3",
-        "japi.rest": "^1.0.1",
-        "moment": "^2.29.4",
-        "mongoose": "^6.9.0",
-        "ms": "^3.0.0-canary.1",
-        "node-fetch": "^3.3.0",
-        "parsec": "^2.0.2",
-        "quickmongo": "^4.0.0"
-      },
-      "devDependencies": {
-        "node": "^16.9.1"
-      },
-      "engines": {
-        "node": "16.x"
-      }
-    },
-    "node_modules/@aws-crypto/ie11-detection": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
-      "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "optional": true
-    },
-    "node_modules/@aws-crypto/sha256-browser": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
-      "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-crypto/ie11-detection": "^3.0.0",
-        "@aws-crypto/sha256-js": "^3.0.0",
-        "@aws-crypto/supports-web-crypto": "^3.0.0",
-        "@aws-crypto/util": "^3.0.0",
-        "@aws-sdk/types": "^3.222.0",
-        "@aws-sdk/util-locate-window": "^3.0.0",
-        "@aws-sdk/util-utf8-browser": "^3.0.0",
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "optional": true
-    },
-    "node_modules/@aws-crypto/sha256-js": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
-      "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-crypto/util": "^3.0.0",
-        "@aws-sdk/types": "^3.222.0",
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "optional": true
-    },
-    "node_modules/@aws-crypto/supports-web-crypto": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
-      "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "optional": true
-    },
-    "node_modules/@aws-crypto/util": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
-      "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "^3.222.0",
-        "@aws-sdk/util-utf8-browser": "^3.0.0",
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@aws-crypto/util/node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "optional": true
-    },
-    "node_modules/@aws-sdk/abort-controller": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz",
-      "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/client-cognito-identity": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.321.1.tgz",
-      "integrity": "sha512-6XuGHbGjKmwmBP9fxVtHtgYsSUZEDJZAdBa9jD3+//6OG9Qh4/mxRUZJFImMT8DOrmNLHU2q2W/4HjsbDql6VA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/client-sts": "3.321.1",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/credential-provider-node": "3.321.1",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-signing": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/client-sso": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.321.1.tgz",
-      "integrity": "sha512-ecoT4tBGtRJR5G7oLBTMXZmgZZlff1amhSdKPEtkWxv6kWc8VPb5rRuRgVPsDR9HuesI6ZVlODptvGtnfkIJwA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/client-sso-oidc": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.321.1.tgz",
-      "integrity": "sha512-PBVfHQbyrsfzbnO6u9d9Sik8JlXGLhHj3zLd87iBkYXBdHwD5NuvwWu7OtjUtrHjP4SfzodVwfjmTbDAFqbtzw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/client-sts": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.321.1.tgz",
-      "integrity": "sha512-AB+N4a1TVEKl9Sd5O2TxTprEZp7Va6zPZLMraFAYMdmJVBmCmmwyBs7ygju685DpQ1dos5PRsKCRcossyY5pDQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/credential-provider-node": "3.321.1",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-sdk-sts": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-signing": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "fast-xml-parser": "4.1.2",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/config-resolver": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz",
-      "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-config-provider": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-cognito-identity": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.321.1.tgz",
-      "integrity": "sha512-g+3MQcwhpw1WqQ27BJLCCS90aUExH8kT9o2WM2tYjGATfTQ8+tpAqao2JxChtfzQbq6m69M175bZ3o09EaKobQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/client-cognito-identity": "3.321.1",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-env": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz",
-      "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-imds": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz",
-      "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-ini": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.321.1.tgz",
-      "integrity": "sha512-prndSVQhiikNaI40bYnM2Q8PkC35FCwhbQnBk6KXNvdtfo9RqatMC639F+6oryb3BuMy++Ij4Yoi8WnPBs5Sww==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/credential-provider-env": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/credential-provider-process": "3.310.0",
-        "@aws-sdk/credential-provider-sso": "3.321.1",
-        "@aws-sdk/credential-provider-web-identity": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-node": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.321.1.tgz",
-      "integrity": "sha512-5B1waOwSvY2JMLGRebo7IUqnTaGoCnby9cRbG/dhi7Ke97M3V8380S9THDJ/bktjL8zHEVfBVZy7HhXHzhSjEg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/credential-provider-env": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/credential-provider-ini": "3.321.1",
-        "@aws-sdk/credential-provider-process": "3.310.0",
-        "@aws-sdk/credential-provider-sso": "3.321.1",
-        "@aws-sdk/credential-provider-web-identity": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-process": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz",
-      "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-sso": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.321.1.tgz",
-      "integrity": "sha512-kg0rc1OacJFgAvmZj0TOu+BSc+yRdnC5dO/RAag3XU6+hlQI5/C080RQp9Qj6V7ga0HtAJMRwJcUlCPA3RJPug==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/client-sso": "3.321.1",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/token-providers": "3.321.1",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-provider-web-identity": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz",
-      "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/credential-providers": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.321.1.tgz",
-      "integrity": "sha512-z7uPo5B/pW8k2IHT2Nu2SFAWEzBnR/NnjUVOTwf93bxNbc7IxRODiCMggmK2wpjiRSBAc8zKKbZ4dHCcb4MyZg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/client-cognito-identity": "3.321.1",
-        "@aws-sdk/client-sso": "3.321.1",
-        "@aws-sdk/client-sts": "3.321.1",
-        "@aws-sdk/credential-provider-cognito-identity": "3.321.1",
-        "@aws-sdk/credential-provider-env": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/credential-provider-ini": "3.321.1",
-        "@aws-sdk/credential-provider-node": "3.321.1",
-        "@aws-sdk/credential-provider-process": "3.310.0",
-        "@aws-sdk/credential-provider-sso": "3.321.1",
-        "@aws-sdk/credential-provider-web-identity": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/fetch-http-handler": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz",
-      "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/querystring-builder": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "node_modules/@aws-sdk/hash-node": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz",
-      "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-buffer-from": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/invalid-dependency": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz",
-      "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "node_modules/@aws-sdk/is-array-buffer": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz",
-      "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-content-length": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz",
-      "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-endpoint": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz",
-      "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-host-header": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz",
-      "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-logger": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz",
-      "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-recursion-detection": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz",
-      "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-retry": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz",
-      "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/service-error-classification": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "tslib": "^2.5.0",
-        "uuid": "^8.3.2"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-sdk-sts": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz",
-      "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/middleware-signing": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-serde": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz",
-      "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-signing": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz",
-      "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/signature-v4": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-stack": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz",
-      "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/middleware-user-agent": {
-      "version": "3.319.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.319.0.tgz",
-      "integrity": "sha512-ytaLx2dlR5AdMSne6FuDCISVg8hjyKj+cHU20b2CRA/E/z+XXrLrssp4JrCgizRKPPUep0psMIa22Zd6osTT5Q==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/node-config-provider": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz",
-      "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/node-http-handler": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz",
-      "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/abort-controller": "3.310.0",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/querystring-builder": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/property-provider": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz",
-      "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/protocol-http": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz",
-      "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/querystring-builder": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz",
-      "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-uri-escape": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/querystring-parser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz",
-      "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/service-error-classification": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz",
-      "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==",
-      "optional": true,
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/shared-ini-file-loader": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz",
-      "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/signature-v4": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz",
-      "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/is-array-buffer": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-hex-encoding": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "@aws-sdk/util-uri-escape": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/smithy-client": {
-      "version": "3.316.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz",
-      "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/token-providers": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.321.1.tgz",
-      "integrity": "sha512-I1sXS4qXirSvgvrOIPf+e1D7GvC83DdeyMxHZvuhHgeMCqDAzToS8OLxOX0enN9xZRHWAQYja8xyeGbDL2I0Zw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/client-sso-oidc": "3.321.1",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/types": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz",
-      "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/url-parser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz",
-      "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/querystring-parser": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-base64": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz",
-      "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/util-buffer-from": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-body-length-browser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz",
-      "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-body-length-node": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz",
-      "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-buffer-from": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz",
-      "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/is-array-buffer": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-config-provider": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz",
-      "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-defaults-mode-browser": {
-      "version": "3.316.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz",
-      "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "bowser": "^2.11.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-defaults-mode-node": {
-      "version": "3.316.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz",
-      "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-endpoints": {
-      "version": "3.319.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz",
-      "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-hex-encoding": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz",
-      "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-locate-window": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
-      "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-middleware": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz",
-      "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-retry": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz",
-      "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/service-error-classification": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-uri-escape": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz",
-      "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-user-agent-browser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz",
-      "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/types": "3.310.0",
-        "bowser": "^2.11.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-user-agent-node": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz",
-      "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "aws-crt": ">=1.0.0"
-      },
-      "peerDependenciesMeta": {
-        "aws-crt": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@aws-sdk/util-utf8": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz",
-      "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==",
-      "optional": true,
-      "dependencies": {
-        "@aws-sdk/util-buffer-from": "3.310.0",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@aws-sdk/util-utf8-browser": {
-      "version": "3.259.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
-      "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
-      "optional": true,
-      "dependencies": {
-        "tslib": "^2.3.1"
-      }
-    },
-    "node_modules/@discordjs/builders": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.1.tgz",
-      "integrity": "sha512-CCcLwn/8ANhlAbhlE18fcaN0hfXTen53/JiwZs1t9oE/Cqa9maA8ZRarkCIsXF4J7J/MYnd0J6IsxeKsq+f6mw==",
-      "dependencies": {
-        "@discordjs/formatters": "^0.3.0",
-        "@discordjs/util": "^0.2.0",
-        "@sapphire/shapeshift": "^3.8.1",
-        "discord-api-types": "^0.37.37",
-        "fast-deep-equal": "^3.1.3",
-        "ts-mixer": "^6.0.3",
-        "tslib": "^2.5.0"
-      },
-      "engines": {
-        "node": ">=16.9.0"
-      }
-    },
-    "node_modules/@discordjs/collection": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.0.tgz",
-      "integrity": "sha512-suyVndkEAAWrGxyw/CPGdtXoRRU6AUNkibtnbJevQzpelkJh3Q1gQqWDpqf5i39CnAn5+LrN0YS+cULeEjq2Yw==",
-      "engines": {
-        "node": ">=16.9.0"
-      }
-    },
-    "node_modules/@discordjs/formatters": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.0.tgz",
-      "integrity": "sha512-Fc4MomalbP8HMKEMor3qUiboAKDtR7PSBoPjwm7WYghVRwgJlj5WYvUsriLsxeKk8+Qq2oy+HJlGTUkGvX0YnA==",
-      "dependencies": {
-        "discord-api-types": "^0.37.37"
-      },
-      "engines": {
-        "node": ">=16.9.0"
-      }
-    },
-    "node_modules/@discordjs/rest": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.0.tgz",
-      "integrity": "sha512-r2HzmznRIo8IDGYBWqQfkEaGN1LrFfWQd3dSyC4tOpMU8nuVvFUEw6V/lwnG44jyOq+vgyDny2fxeUDMt9I4aQ==",
-      "dependencies": {
-        "@discordjs/collection": "^1.5.0",
-        "@discordjs/util": "^0.2.0",
-        "@sapphire/async-queue": "^1.5.0",
-        "@sapphire/snowflake": "^3.4.0",
-        "discord-api-types": "^0.37.37",
-        "file-type": "^18.2.1",
-        "tslib": "^2.5.0",
-        "undici": "^5.21.0"
-      },
-      "engines": {
-        "node": ">=16.9.0"
-      }
-    },
-    "node_modules/@discordjs/util": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.2.0.tgz",
-      "integrity": "sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg==",
-      "engines": {
-        "node": ">=16.9.0"
-      }
-    },
-    "node_modules/@sapphire/async-queue": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz",
-      "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==",
-      "engines": {
-        "node": ">=v14.0.0",
-        "npm": ">=7.0.0"
-      }
-    },
-    "node_modules/@sapphire/shapeshift": {
-      "version": "3.8.2",
-      "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.2.tgz",
-      "integrity": "sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3",
-        "lodash": "^4.17.21"
-      },
-      "engines": {
-        "node": ">=v14.0.0",
-        "npm": ">=7.0.0"
-      }
-    },
-    "node_modules/@sapphire/snowflake": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.2.tgz",
-      "integrity": "sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g==",
-      "engines": {
-        "node": ">=v14.0.0",
-        "npm": ">=7.0.0"
-      }
-    },
-    "node_modules/@tokenizer/token": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
-      "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
-    },
-    "node_modules/@types/node": {
-      "version": "17.0.6",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz",
-      "integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA=="
-    },
-    "node_modules/@types/webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
-    },
-    "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/@types/ws": {
-      "version": "8.5.4",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
-      "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
-    },
-    "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/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/bowser": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
-      "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
-      "optional": true
-    },
-    "node_modules/bson": {
-      "version": "4.7.2",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
-      "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
-      "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/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/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/chalk/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/chalk/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-    },
-    "node_modules/combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dependencies": {
-        "delayed-stream": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/data-uri-to-buffer": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
-      "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
-      "engines": {
-        "node": ">= 12"
-      }
-    },
-    "node_modules/deepmerge-ts": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.2.tgz",
-      "integrity": "sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==",
-      "engines": {
-        "node": ">=12.4.0"
-      }
-    },
-    "node_modules/delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/discord-api-types": {
-      "version": "0.37.40",
-      "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.40.tgz",
-      "integrity": "sha512-LMALvtO+p6ERK8rwWoaI490NfIE/egbqjR4/rfLL1z9gQE1gqLiTpIUUDIunfAtKYzeH6ucyXhaXXWpfZh/Q6g=="
-    },
-    "node_modules/discord-giveaways": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/discord-giveaways/-/discord-giveaways-6.0.1.tgz",
-      "integrity": "sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==",
-      "dependencies": {
-        "deepmerge-ts": "^4.2.1",
-        "serialize-javascript": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=16.9.0"
-      },
-      "peerDependencies": {
-        "discord.js": ">=14.0.0"
-      }
-    },
-    "node_modules/discord-handlers": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/discord-handlers/-/discord-handlers-0.0.1.tgz",
-      "integrity": "sha512-ilivA4f94Ygb/pgrWRZzxO75pPA+ck788VUYCb72irj53/2nMBW4gfxI7bojQ5wchmYUpvbD4o0SkjSxLbP7vg==",
-      "dependencies": {
-        "chalk": "^4.1.2",
-        "discord.js": "^14.6.0",
-        "mongoose": "^6.7.3",
-        "path": "^0.12.7"
-      }
-    },
-    "node_modules/discord.js": {
-      "version": "14.9.0",
-      "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.9.0.tgz",
-      "integrity": "sha512-ygGms5xP4hG+QrrY9k7d/OYCzMltSMtdl/2Snzq/nLCiZo+Sna91Ulv9l0+B5Jd/Czcq37B7wJAnmja7GOa+bg==",
-      "dependencies": {
-        "@discordjs/builders": "^1.6.0",
-        "@discordjs/collection": "^1.5.0",
-        "@discordjs/formatters": "^0.3.0",
-        "@discordjs/rest": "^1.7.0",
-        "@discordjs/util": "^0.2.0",
-        "@sapphire/snowflake": "^3.4.0",
-        "@types/ws": "^8.5.4",
-        "discord-api-types": "^0.37.37",
-        "fast-deep-equal": "^3.1.3",
-        "lodash.snakecase": "^4.1.1",
-        "tslib": "^2.5.0",
-        "undici": "^5.21.0",
-        "ws": "^8.13.0"
-      },
-      "engines": {
-        "node": ">=16.9.0"
-      }
-    },
-    "node_modules/dot-prop": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
-      "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
-      "dependencies": {
-        "is-obj": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/dotenv": {
-      "version": "16.0.3",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
-      "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
-    },
-    "node_modules/fast-xml-parser": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz",
-      "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==",
-      "optional": true,
-      "dependencies": {
-        "strnum": "^1.0.5"
-      },
-      "bin": {
-        "fxparser": "src/cli/cli.js"
-      },
-      "funding": {
-        "type": "paypal",
-        "url": "https://paypal.me/naturalintelligence"
-      }
-    },
-    "node_modules/fetch-blob": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
-      "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/jimmywarting"
-        },
-        {
-          "type": "paypal",
-          "url": "https://paypal.me/jimmywarting"
-        }
-      ],
-      "dependencies": {
-        "node-domexception": "^1.0.0",
-        "web-streams-polyfill": "^3.0.3"
-      },
-      "engines": {
-        "node": "^12.20 || >= 14.13"
-      }
-    },
-    "node_modules/file-type": {
-      "version": "18.3.0",
-      "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.3.0.tgz",
-      "integrity": "sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==",
-      "dependencies": {
-        "readable-web-to-node-stream": "^3.0.2",
-        "strtok3": "^7.0.0",
-        "token-types": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/file-type?sponsor=1"
-      }
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "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"
-      }
-    },
-    "node_modules/formdata-polyfill": {
-      "version": "4.0.10",
-      "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
-      "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
-      "dependencies": {
-        "fetch-blob": "^3.1.2"
-      },
-      "engines": {
-        "node": ">=12.20.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/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/is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/japi.rest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/japi.rest/-/japi.rest-1.0.1.tgz",
-      "integrity": "sha512-dJGpErZk9Dp81jHXLLCIohSPbQuqem/fpwKbBdImYQzNtrrNEaDDkSQ5ECGHpLB3jg/Z9Chh0uaSJnMOjOfTlQ==",
-      "dependencies": {
-        "node-fetch": "^2.6.1"
-      }
-    },
-    "node_modules/japi.rest/node_modules/node-fetch": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
-      "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
-      "dependencies": {
-        "whatwg-url": "^5.0.0"
-      },
-      "engines": {
-        "node": "4.x || >=6.0.0"
-      },
-      "peerDependencies": {
-        "encoding": "^0.1.0"
-      },
-      "peerDependenciesMeta": {
-        "encoding": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/japi.rest/node_modules/tr46": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
-    },
-    "node_modules/japi.rest/node_modules/webidl-conversions": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
-    },
-    "node_modules/japi.rest/node_modules/whatwg-url": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-      "dependencies": {
-        "tr46": "~0.0.3",
-        "webidl-conversions": "^3.0.0"
-      }
-    },
-    "node_modules/kareem": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz",
-      "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==",
-      "engines": {
-        "node": ">=12.0.0"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-    },
-    "node_modules/lodash.snakecase": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
-      "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="
-    },
-    "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/mime-db": {
-      "version": "1.51.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
-      "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.34",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
-      "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
-      "dependencies": {
-        "mime-db": "1.51.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/moment": {
-      "version": "2.29.4",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
-      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/mongodb": {
-      "version": "4.14.0",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz",
-      "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==",
-      "dependencies": {
-        "bson": "^4.7.0",
-        "mongodb-connection-string-url": "^2.5.4",
-        "socks": "^2.7.1"
-      },
-      "engines": {
-        "node": ">=12.9.0"
-      },
-      "optionalDependencies": {
-        "@aws-sdk/credential-providers": "^3.186.0",
-        "saslprep": "^1.0.3"
-      }
-    },
-    "node_modules/mongodb-connection-string-url": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
-      "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
-      "dependencies": {
-        "@types/whatwg-url": "^8.2.1",
-        "whatwg-url": "^11.0.0"
-      }
-    },
-    "node_modules/mongoose": {
-      "version": "6.10.5",
-      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz",
-      "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==",
-      "dependencies": {
-        "bson": "^4.7.0",
-        "kareem": "2.5.1",
-        "mongodb": "4.14.0",
-        "mpath": "0.9.0",
-        "mquery": "4.0.3",
-        "ms": "2.1.3",
-        "sift": "16.0.1"
-      },
-      "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": "3.0.0-canary.1",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz",
-      "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==",
-      "engines": {
-        "node": ">=12.13"
-      }
-    },
-    "node_modules/node": {
-      "version": "16.20.0",
-      "resolved": "https://registry.npmjs.org/node/-/node-16.20.0.tgz",
-      "integrity": "sha512-dom1A0xPnc1qzE+voYGswg3afb5QzlQxsPqE2b94BUcZZ6I5+v1EzqV0wHo7mXM1YzFTJOLshOwyAlouNEk3tA==",
-      "dev": true,
-      "dependencies": {
-        "node-bin-setup": "^1.0.0"
-      },
-      "bin": {
-        "node": "bin/node"
-      },
-      "engines": {
-        "npm": ">=5.0.0"
-      }
-    },
-    "node_modules/node-bin-setup": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.3.tgz",
-      "integrity": "sha512-opgw9iSCAzT2+6wJOETCpeRYAQxSopqQ2z+N6BXwIMsQQ7Zj5M8MaafQY8JMlolRR6R1UXg2WmhKp0p9lSOivg==",
-      "dev": true
-    },
-    "node_modules/node-domexception": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
-      "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/jimmywarting"
-        },
-        {
-          "type": "github",
-          "url": "https://paypal.me/jimmywarting"
-        }
-      ],
-      "engines": {
-        "node": ">=10.5.0"
-      }
-    },
-    "node_modules/node-fetch": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz",
-      "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==",
-      "dependencies": {
-        "data-uri-to-buffer": "^4.0.0",
-        "fetch-blob": "^3.1.4",
-        "formdata-polyfill": "^4.0.10"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/node-fetch"
-      }
-    },
-    "node_modules/parsec": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/parsec/-/parsec-2.0.2.tgz",
-      "integrity": "sha512-4rXD5jon00sYj70xma4MKI9uGLfE7CvJq8iM+MBrJ596oWUWJZZqjZbLtTWUj5KIkegS4CexIqS4YgEq80zXOA==",
-      "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
-    },
-    "node_modules/path": {
-      "version": "0.12.7",
-      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
-      "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
-      "dependencies": {
-        "process": "^0.11.1",
-        "util": "^0.10.3"
-      }
-    },
-    "node_modules/peek-readable": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz",
-      "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==",
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/Borewit"
-      }
-    },
-    "node_modules/process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
-      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/quickmongo": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz",
-      "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==",
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz",
-      "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==",
-      "dependencies": {
-        "dot-prop": "^6.0.1"
-        "dot-prop": "^6.0.1"
-      }
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dependencies": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/readable-web-to-node-stream": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
-      "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
-      "dependencies": {
-        "readable-stream": "^3.6.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/Borewit"
-      }
-    },
-    "node_modules/readable-web-to-node-stream/node_modules/readable-stream": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "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/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/serialize-javascript": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-      "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/sift": {
-      "version": "16.0.1",
-      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz",
-      "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
-    },
-    "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.1",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
-      "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
-      "dependencies": {
-        "ip": "^2.0.0",
-        "smart-buffer": "^4.2.0"
-      },
-      "engines": {
-        "node": ">=8.10.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/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/strnum": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
-      "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
-      "optional": true
-    },
-    "node_modules/strtok3": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz",
-      "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==",
-      "dependencies": {
-        "@tokenizer/token": "^0.3.0",
-        "peek-readable": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/Borewit"
-      }
-    },
-    "node_modules/token-types": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz",
-      "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==",
-      "dependencies": {
-        "@tokenizer/token": "^0.3.0",
-        "ieee754": "^1.2.1"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/Borewit"
-      }
-    },
-    "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/ts-mixer": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz",
-      "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ=="
-    },
-    "node_modules/tslib": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
-      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
-    },
-    "node_modules/undici": {
-      "version": "5.22.0",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz",
-      "integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==",
-      "dependencies": {
-        "busboy": "^1.6.0"
-      },
-      "engines": {
-        "node": ">=14.0"
-      }
-    },
-    "node_modules/util": {
-      "version": "0.10.4",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
-      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
-      "dependencies": {
-        "inherits": "2.0.3"
-      }
-    },
-    "node_modules/util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "node_modules/util/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
-    },
-    "node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "optional": true,
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/web-streams-polyfill": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
-      "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
-      "engines": {
-        "node": ">= 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/ws": {
-      "version": "8.13.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
-      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": ">=5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    }
-  },
-  "dependencies": {
-    "@aws-crypto/ie11-detection": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
-      "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
-      "optional": true,
-      "requires": {
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "optional": true
-        }
-      }
-    },
-    "@aws-crypto/sha256-browser": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
-      "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
-      "optional": true,
-      "requires": {
-        "@aws-crypto/ie11-detection": "^3.0.0",
-        "@aws-crypto/sha256-js": "^3.0.0",
-        "@aws-crypto/supports-web-crypto": "^3.0.0",
-        "@aws-crypto/util": "^3.0.0",
-        "@aws-sdk/types": "^3.222.0",
-        "@aws-sdk/util-locate-window": "^3.0.0",
-        "@aws-sdk/util-utf8-browser": "^3.0.0",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "optional": true
-        }
-      }
-    },
-    "@aws-crypto/sha256-js": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
-      "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
-      "optional": true,
-      "requires": {
-        "@aws-crypto/util": "^3.0.0",
-        "@aws-sdk/types": "^3.222.0",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "optional": true
-        }
-      }
-    },
-    "@aws-crypto/supports-web-crypto": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
-      "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
-      "optional": true,
-      "requires": {
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "optional": true
-        }
-      }
-    },
-    "@aws-crypto/util": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
-      "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "^3.222.0",
-        "@aws-sdk/util-utf8-browser": "^3.0.0",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "optional": true
-        }
-      }
-    },
-    "@aws-sdk/abort-controller": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz",
-      "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/client-cognito-identity": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.321.1.tgz",
-      "integrity": "sha512-6XuGHbGjKmwmBP9fxVtHtgYsSUZEDJZAdBa9jD3+//6OG9Qh4/mxRUZJFImMT8DOrmNLHU2q2W/4HjsbDql6VA==",
-      "optional": true,
-      "requires": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/client-sts": "3.321.1",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/credential-provider-node": "3.321.1",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-signing": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/client-sso": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.321.1.tgz",
-      "integrity": "sha512-ecoT4tBGtRJR5G7oLBTMXZmgZZlff1amhSdKPEtkWxv6kWc8VPb5rRuRgVPsDR9HuesI6ZVlODptvGtnfkIJwA==",
-      "optional": true,
-      "requires": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/client-sso-oidc": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.321.1.tgz",
-      "integrity": "sha512-PBVfHQbyrsfzbnO6u9d9Sik8JlXGLhHj3zLd87iBkYXBdHwD5NuvwWu7OtjUtrHjP4SfzodVwfjmTbDAFqbtzw==",
-      "optional": true,
-      "requires": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/client-sts": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.321.1.tgz",
-      "integrity": "sha512-AB+N4a1TVEKl9Sd5O2TxTprEZp7Va6zPZLMraFAYMdmJVBmCmmwyBs7ygju685DpQ1dos5PRsKCRcossyY5pDQ==",
-      "optional": true,
-      "requires": {
-        "@aws-crypto/sha256-browser": "3.0.0",
-        "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/credential-provider-node": "3.321.1",
-        "@aws-sdk/fetch-http-handler": "3.310.0",
-        "@aws-sdk/hash-node": "3.310.0",
-        "@aws-sdk/invalid-dependency": "3.310.0",
-        "@aws-sdk/middleware-content-length": "3.310.0",
-        "@aws-sdk/middleware-endpoint": "3.310.0",
-        "@aws-sdk/middleware-host-header": "3.310.0",
-        "@aws-sdk/middleware-logger": "3.310.0",
-        "@aws-sdk/middleware-recursion-detection": "3.310.0",
-        "@aws-sdk/middleware-retry": "3.310.0",
-        "@aws-sdk/middleware-sdk-sts": "3.310.0",
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/middleware-signing": "3.310.0",
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/middleware-user-agent": "3.319.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/node-http-handler": "3.321.1",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/smithy-client": "3.316.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "@aws-sdk/util-body-length-browser": "3.310.0",
-        "@aws-sdk/util-body-length-node": "3.310.0",
-        "@aws-sdk/util-defaults-mode-browser": "3.316.0",
-        "@aws-sdk/util-defaults-mode-node": "3.316.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "@aws-sdk/util-user-agent-browser": "3.310.0",
-        "@aws-sdk/util-user-agent-node": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "fast-xml-parser": "4.1.2",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/config-resolver": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz",
-      "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-config-provider": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-cognito-identity": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.321.1.tgz",
-      "integrity": "sha512-g+3MQcwhpw1WqQ27BJLCCS90aUExH8kT9o2WM2tYjGATfTQ8+tpAqao2JxChtfzQbq6m69M175bZ3o09EaKobQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/client-cognito-identity": "3.321.1",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-env": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz",
-      "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-imds": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz",
-      "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-ini": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.321.1.tgz",
-      "integrity": "sha512-prndSVQhiikNaI40bYnM2Q8PkC35FCwhbQnBk6KXNvdtfo9RqatMC639F+6oryb3BuMy++Ij4Yoi8WnPBs5Sww==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/credential-provider-env": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/credential-provider-process": "3.310.0",
-        "@aws-sdk/credential-provider-sso": "3.321.1",
-        "@aws-sdk/credential-provider-web-identity": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-node": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.321.1.tgz",
-      "integrity": "sha512-5B1waOwSvY2JMLGRebo7IUqnTaGoCnby9cRbG/dhi7Ke97M3V8380S9THDJ/bktjL8zHEVfBVZy7HhXHzhSjEg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/credential-provider-env": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/credential-provider-ini": "3.321.1",
-        "@aws-sdk/credential-provider-process": "3.310.0",
-        "@aws-sdk/credential-provider-sso": "3.321.1",
-        "@aws-sdk/credential-provider-web-identity": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-process": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz",
-      "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-sso": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.321.1.tgz",
-      "integrity": "sha512-kg0rc1OacJFgAvmZj0TOu+BSc+yRdnC5dO/RAag3XU6+hlQI5/C080RQp9Qj6V7ga0HtAJMRwJcUlCPA3RJPug==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/client-sso": "3.321.1",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/token-providers": "3.321.1",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-provider-web-identity": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz",
-      "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/credential-providers": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.321.1.tgz",
-      "integrity": "sha512-z7uPo5B/pW8k2IHT2Nu2SFAWEzBnR/NnjUVOTwf93bxNbc7IxRODiCMggmK2wpjiRSBAc8zKKbZ4dHCcb4MyZg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/client-cognito-identity": "3.321.1",
-        "@aws-sdk/client-sso": "3.321.1",
-        "@aws-sdk/client-sts": "3.321.1",
-        "@aws-sdk/credential-provider-cognito-identity": "3.321.1",
-        "@aws-sdk/credential-provider-env": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/credential-provider-ini": "3.321.1",
-        "@aws-sdk/credential-provider-node": "3.321.1",
-        "@aws-sdk/credential-provider-process": "3.310.0",
-        "@aws-sdk/credential-provider-sso": "3.321.1",
-        "@aws-sdk/credential-provider-web-identity": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/fetch-http-handler": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz",
-      "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/querystring-builder": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-base64": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/hash-node": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz",
-      "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-buffer-from": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/invalid-dependency": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz",
-      "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/is-array-buffer": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz",
-      "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-content-length": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz",
-      "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-endpoint": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz",
-      "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/middleware-serde": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/url-parser": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-host-header": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz",
-      "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-logger": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz",
-      "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-recursion-detection": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz",
-      "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-retry": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz",
-      "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/service-error-classification": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "@aws-sdk/util-retry": "3.310.0",
-        "tslib": "^2.5.0",
-        "uuid": "^8.3.2"
-      }
-    },
-    "@aws-sdk/middleware-sdk-sts": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz",
-      "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/middleware-signing": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-serde": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz",
-      "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-signing": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz",
-      "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/signature-v4": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-stack": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz",
-      "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/middleware-user-agent": {
-      "version": "3.319.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.319.0.tgz",
-      "integrity": "sha512-ytaLx2dlR5AdMSne6FuDCISVg8hjyKj+cHU20b2CRA/E/z+XXrLrssp4JrCgizRKPPUep0psMIa22Zd6osTT5Q==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-endpoints": "3.319.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/node-config-provider": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz",
-      "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/node-http-handler": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz",
-      "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/abort-controller": "3.310.0",
-        "@aws-sdk/protocol-http": "3.310.0",
-        "@aws-sdk/querystring-builder": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/property-provider": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz",
-      "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/protocol-http": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz",
-      "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/querystring-builder": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz",
-      "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-uri-escape": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/querystring-parser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz",
-      "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/service-error-classification": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz",
-      "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==",
-      "optional": true
-    },
-    "@aws-sdk/shared-ini-file-loader": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz",
-      "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/signature-v4": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz",
-      "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/is-array-buffer": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "@aws-sdk/util-hex-encoding": "3.310.0",
-        "@aws-sdk/util-middleware": "3.310.0",
-        "@aws-sdk/util-uri-escape": "3.310.0",
-        "@aws-sdk/util-utf8": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/smithy-client": {
-      "version": "3.316.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz",
-      "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/middleware-stack": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/token-providers": {
-      "version": "3.321.1",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.321.1.tgz",
-      "integrity": "sha512-I1sXS4qXirSvgvrOIPf+e1D7GvC83DdeyMxHZvuhHgeMCqDAzToS8OLxOX0enN9xZRHWAQYja8xyeGbDL2I0Zw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/client-sso-oidc": "3.321.1",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/shared-ini-file-loader": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/types": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz",
-      "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/url-parser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz",
-      "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/querystring-parser": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-base64": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz",
-      "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/util-buffer-from": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-body-length-browser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz",
-      "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-body-length-node": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz",
-      "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-buffer-from": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz",
-      "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/is-array-buffer": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-config-provider": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz",
-      "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-defaults-mode-browser": {
-      "version": "3.316.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz",
-      "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "bowser": "^2.11.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-defaults-mode-node": {
-      "version": "3.316.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz",
-      "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/config-resolver": "3.310.0",
-        "@aws-sdk/credential-provider-imds": "3.310.0",
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/property-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-endpoints": {
-      "version": "3.319.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz",
-      "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-hex-encoding": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz",
-      "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-locate-window": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
-      "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-middleware": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz",
-      "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-retry": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz",
-      "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/service-error-classification": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-uri-escape": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz",
-      "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-user-agent-browser": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz",
-      "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/types": "3.310.0",
-        "bowser": "^2.11.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-user-agent-node": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz",
-      "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/node-config-provider": "3.310.0",
-        "@aws-sdk/types": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-utf8": {
-      "version": "3.310.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz",
-      "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==",
-      "optional": true,
-      "requires": {
-        "@aws-sdk/util-buffer-from": "3.310.0",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@aws-sdk/util-utf8-browser": {
-      "version": "3.259.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
-      "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
-      "optional": true,
-      "requires": {
-        "tslib": "^2.3.1"
-      }
-    },
-    "@discordjs/builders": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.1.tgz",
-      "integrity": "sha512-CCcLwn/8ANhlAbhlE18fcaN0hfXTen53/JiwZs1t9oE/Cqa9maA8ZRarkCIsXF4J7J/MYnd0J6IsxeKsq+f6mw==",
-      "requires": {
-        "@discordjs/formatters": "^0.3.0",
-        "@discordjs/util": "^0.2.0",
-        "@sapphire/shapeshift": "^3.8.1",
-        "discord-api-types": "^0.37.37",
-        "fast-deep-equal": "^3.1.3",
-        "ts-mixer": "^6.0.3",
-        "tslib": "^2.5.0"
-      }
-    },
-    "@discordjs/collection": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.0.tgz",
-      "integrity": "sha512-suyVndkEAAWrGxyw/CPGdtXoRRU6AUNkibtnbJevQzpelkJh3Q1gQqWDpqf5i39CnAn5+LrN0YS+cULeEjq2Yw=="
-    },
-    "@discordjs/formatters": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.0.tgz",
-      "integrity": "sha512-Fc4MomalbP8HMKEMor3qUiboAKDtR7PSBoPjwm7WYghVRwgJlj5WYvUsriLsxeKk8+Qq2oy+HJlGTUkGvX0YnA==",
-      "requires": {
-        "discord-api-types": "^0.37.37"
-      }
-    },
-    "@discordjs/rest": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.0.tgz",
-      "integrity": "sha512-r2HzmznRIo8IDGYBWqQfkEaGN1LrFfWQd3dSyC4tOpMU8nuVvFUEw6V/lwnG44jyOq+vgyDny2fxeUDMt9I4aQ==",
-      "requires": {
-        "@discordjs/collection": "^1.5.0",
-        "@discordjs/util": "^0.2.0",
-        "@sapphire/async-queue": "^1.5.0",
-        "@sapphire/snowflake": "^3.4.0",
-        "discord-api-types": "^0.37.37",
-        "file-type": "^18.2.1",
-        "tslib": "^2.5.0",
-        "undici": "^5.21.0"
-      }
-    },
-    "@discordjs/util": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.2.0.tgz",
-      "integrity": "sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg=="
-    },
-    "@sapphire/async-queue": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz",
-      "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA=="
-    },
-    "@sapphire/shapeshift": {
-      "version": "3.8.2",
-      "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.2.tgz",
-      "integrity": "sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==",
-      "requires": {
-        "fast-deep-equal": "^3.1.3",
-        "lodash": "^4.17.21"
-      }
-    },
-    "@sapphire/snowflake": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.2.tgz",
-      "integrity": "sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g=="
-    },
-    "@tokenizer/token": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
-      "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
-    },
-    "@types/node": {
-      "version": "17.0.6",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz",
-      "integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA=="
-    },
-    "@types/webidl-conversions": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
-      "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
-    },
-    "@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": "*"
-      }
-    },
-    "@types/ws": {
-      "version": "8.5.4",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
-      "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "requires": {
-        "color-convert": "^2.0.1"
-      }
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
-    },
-    "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"
-      }
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-    },
-    "bowser": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
-      "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
-      "optional": true
-    },
-    "bson": {
-      "version": "4.7.2",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
-      "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
-      "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"
-      }
-    },
-    "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"
-      }
-    },
-    "chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "requires": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "requires": {
-        "color-name": "~1.1.4"
-      }
-    },
-    "color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "data-uri-to-buffer": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
-      "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="
-    },
-    "deepmerge-ts": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.2.tgz",
-      "integrity": "sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q=="
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
-    },
-    "discord-api-types": {
-      "version": "0.37.40",
-      "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.40.tgz",
-      "integrity": "sha512-LMALvtO+p6ERK8rwWoaI490NfIE/egbqjR4/rfLL1z9gQE1gqLiTpIUUDIunfAtKYzeH6ucyXhaXXWpfZh/Q6g=="
-    },
-    "discord-giveaways": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/discord-giveaways/-/discord-giveaways-6.0.1.tgz",
-      "integrity": "sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==",
-      "requires": {
-        "deepmerge-ts": "^4.2.1",
-        "serialize-javascript": "^6.0.0"
-      }
-    },
-    "discord-handlers": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/discord-handlers/-/discord-handlers-0.0.1.tgz",
-      "integrity": "sha512-ilivA4f94Ygb/pgrWRZzxO75pPA+ck788VUYCb72irj53/2nMBW4gfxI7bojQ5wchmYUpvbD4o0SkjSxLbP7vg==",
-      "requires": {
-        "chalk": "^4.1.2",
-        "discord.js": "^14.6.0",
-        "mongoose": "^6.7.3",
-        "path": "^0.12.7"
-      }
-    },
-    "discord.js": {
-      "version": "14.9.0",
-      "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.9.0.tgz",
-      "integrity": "sha512-ygGms5xP4hG+QrrY9k7d/OYCzMltSMtdl/2Snzq/nLCiZo+Sna91Ulv9l0+B5Jd/Czcq37B7wJAnmja7GOa+bg==",
-      "requires": {
-        "@discordjs/builders": "^1.6.0",
-        "@discordjs/collection": "^1.5.0",
-        "@discordjs/formatters": "^0.3.0",
-        "@discordjs/rest": "^1.7.0",
-        "@discordjs/util": "^0.2.0",
-        "@sapphire/snowflake": "^3.4.0",
-        "@types/ws": "^8.5.4",
-        "discord-api-types": "^0.37.37",
-        "fast-deep-equal": "^3.1.3",
-        "lodash.snakecase": "^4.1.1",
-        "tslib": "^2.5.0",
-        "undici": "^5.21.0",
-        "ws": "^8.13.0"
-      }
-    },
-    "dot-prop": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
-      "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
-      "requires": {
-        "is-obj": "^2.0.0"
-      }
-    },
-    "dotenv": {
-      "version": "16.0.3",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
-      "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
-    },
-    "fast-xml-parser": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz",
-      "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==",
-      "optional": true,
-      "requires": {
-        "strnum": "^1.0.5"
-      }
-    },
-    "fetch-blob": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
-      "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
-      "requires": {
-        "node-domexception": "^1.0.0",
-        "web-streams-polyfill": "^3.0.3"
-      }
-    },
-    "file-type": {
-      "version": "18.3.0",
-      "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.3.0.tgz",
-      "integrity": "sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==",
-      "requires": {
-        "readable-web-to-node-stream": "^3.0.2",
-        "strtok3": "^7.0.0",
-        "token-types": "^5.0.1"
-      }
-    },
-    "follow-redirects": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
-    },
-    "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"
-      }
-    },
-    "formdata-polyfill": {
-      "version": "4.0.10",
-      "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
-      "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
-      "requires": {
-        "fetch-blob": "^3.1.2"
-      }
-    },
-    "ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
-    },
-    "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=="
-    },
-    "is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
-    },
-    "japi.rest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/japi.rest/-/japi.rest-1.0.1.tgz",
-      "integrity": "sha512-dJGpErZk9Dp81jHXLLCIohSPbQuqem/fpwKbBdImYQzNtrrNEaDDkSQ5ECGHpLB3jg/Z9Chh0uaSJnMOjOfTlQ==",
-      "requires": {
-        "node-fetch": "^2.6.1"
-      },
-      "dependencies": {
-        "node-fetch": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
-          "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
-          "requires": {
-            "whatwg-url": "^5.0.0"
-          }
-        },
-        "tr46": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
-        },
-        "webidl-conversions": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
-        },
-        "whatwg-url": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-          "requires": {
-            "tr46": "~0.0.3",
-            "webidl-conversions": "^3.0.0"
-          }
-        }
-      }
-    },
-    "kareem": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz",
-      "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA=="
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-    },
-    "lodash.snakecase": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
-      "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="
-    },
-    "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
-    },
-    "mime-db": {
-      "version": "1.51.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
-      "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
-    },
-    "mime-types": {
-      "version": "2.1.34",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
-      "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
-      "requires": {
-        "mime-db": "1.51.0"
-      }
-    },
-    "moment": {
-      "version": "2.29.4",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
-      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
-    },
-    "mongodb": {
-      "version": "4.14.0",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz",
-      "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==",
-      "requires": {
-        "@aws-sdk/credential-providers": "^3.186.0",
-        "bson": "^4.7.0",
-        "mongodb-connection-string-url": "^2.5.4",
-        "saslprep": "^1.0.3",
-        "socks": "^2.7.1"
-      }
-    },
-    "mongodb-connection-string-url": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
-      "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
-      "requires": {
-        "@types/whatwg-url": "^8.2.1",
-        "whatwg-url": "^11.0.0"
-      }
-    },
-    "mongoose": {
-      "version": "6.10.5",
-      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz",
-      "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==",
-      "requires": {
-        "bson": "^4.7.0",
-        "kareem": "2.5.1",
-        "mongodb": "4.14.0",
-        "mpath": "0.9.0",
-        "mquery": "4.0.3",
-        "ms": "2.1.3",
-        "sift": "16.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=="
-        }
-      }
-    },
-    "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": "3.0.0-canary.1",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz",
-      "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g=="
-    },
-    "node": {
-      "version": "16.20.0",
-      "resolved": "https://registry.npmjs.org/node/-/node-16.20.0.tgz",
-      "integrity": "sha512-dom1A0xPnc1qzE+voYGswg3afb5QzlQxsPqE2b94BUcZZ6I5+v1EzqV0wHo7mXM1YzFTJOLshOwyAlouNEk3tA==",
-      "dev": true,
-      "requires": {
-        "node-bin-setup": "^1.0.0"
-      }
-    },
-    "node-bin-setup": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.3.tgz",
-      "integrity": "sha512-opgw9iSCAzT2+6wJOETCpeRYAQxSopqQ2z+N6BXwIMsQQ7Zj5M8MaafQY8JMlolRR6R1UXg2WmhKp0p9lSOivg==",
-      "dev": true
-    },
-    "node-domexception": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
-      "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
-    },
-    "node-fetch": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz",
-      "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==",
-      "requires": {
-        "data-uri-to-buffer": "^4.0.0",
-        "fetch-blob": "^3.1.4",
-        "formdata-polyfill": "^4.0.10"
-      }
-    },
-    "parsec": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/parsec/-/parsec-2.0.2.tgz",
-      "integrity": "sha512-4rXD5jon00sYj70xma4MKI9uGLfE7CvJq8iM+MBrJ596oWUWJZZqjZbLtTWUj5KIkegS4CexIqS4YgEq80zXOA=="
-    },
-    "path": {
-      "version": "0.12.7",
-      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
-      "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
-      "requires": {
-        "process": "^0.11.1",
-        "util": "^0.10.3"
-      }
-    },
-    "peek-readable": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz",
-      "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A=="
-    },
-    "process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
-    },
-    "punycode": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
-      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
-    },
-    "quickmongo": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz",
-      "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==",
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz",
-      "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==",
-      "requires": {
-        "dot-prop": "^6.0.1"
-        "dot-prop": "^6.0.1"
-      }
-    },
-    "randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "requires": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "readable-web-to-node-stream": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
-      "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
-      "requires": {
-        "readable-stream": "^3.6.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.2",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-          "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
-    },
-    "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=="
-    },
-    "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"
-      }
-    },
-    "serialize-javascript": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
-      "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "requires": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "sift": {
-      "version": "16.0.1",
-      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz",
-      "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
-    },
-    "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.1",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
-      "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
-      "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"
-      }
-    },
-    "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"
-      }
-    },
-    "strnum": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
-      "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
-      "optional": true
-    },
-    "strtok3": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz",
-      "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==",
-      "requires": {
-        "@tokenizer/token": "^0.3.0",
-        "peek-readable": "^5.0.0"
-      }
-    },
-    "token-types": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz",
-      "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==",
-      "requires": {
-        "@tokenizer/token": "^0.3.0",
-        "ieee754": "^1.2.1"
-      }
-    },
-    "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"
-      }
-    },
-    "ts-mixer": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz",
-      "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ=="
-    },
-    "tslib": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
-      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
-    },
-    "undici": {
-      "version": "5.22.0",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz",
-      "integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==",
-      "requires": {
-        "busboy": "^1.6.0"
-      }
-    },
-    "util": {
-      "version": "0.10.4",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
-      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
-      "requires": {
-        "inherits": "2.0.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
-        }
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "optional": true
-    },
-    "web-streams-polyfill": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
-      "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
-    },
-    "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"
-      }
-    },
-    "ws": {
-      "version": "8.13.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
-      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
-      "requires": {}
-    }
-  }
-}
diff --git a/package.json b/package.json
index ebfd29a..57aee87 100644
--- a/package.json
+++ b/package.json
@@ -4,37 +4,30 @@
   "description": "",
   "main": "index.js",
   "scripts": {
-    "start": "node index.js"
-  },
-  "engines": {
-    "node": "16.x"
+    "start": "node index.js",
+    "dev": "nodemon index.js"
   },
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/EmotionChild/Giveaway-Child.git"
+    "url": "git+https://toastielab.dev/toastie_t0ast/Holana.git"
   },
-  "author": "EmotionChild",
+  "author": "Toastie",
   "license": "Apache-2.0",
   "bugs": {
-    "url": "https://github.com/EmotionChild/Giveaway-Child/issues"
+    "url": "https://toastielab.dev/toastie_t0ast/Holana/issues"
   },
-  "homepage": "https://github.com/EmotionChild/Giveaway-Child#readme",
+  "homepage": "https://toastielab.dev/toastie_t0ast/Holana#readme",
   "dependencies": {
-    "axios": "^0.27.2",
-    "chalk": "^4.1.2",
+    "beautify": "0.0.8",
     "discord-giveaways": "^6.0.1",
-    "discord-handlers": "^0.0.1",
-    "discord.js": "^14.6.0",
-    "dotenv": "^16.0.3",
-    "japi.rest": "^1.0.1",
-    "moment": "^2.29.4",
-    "mongoose": "^6.9.0",
-    "ms": "^3.0.0-canary.1",
-    "node-fetch": "^3.3.0",
-    "parsec": "^2.0.2",
-    "quickmongo": "^4.0.0"
+    "discord-sync-commands": "0.3.0",
+    "discord.js": "^14.9.0",
+    "fero-ms": "^2.0.7",
+    "ms": "^2.1.3",
+    "quickdb": "1.0.5",
+    "quickmongo": "4.0.0"
   },
   "devDependencies": {
-    "node": "^16.9.1"
+    "nodemon": "^2.0.22"
   }
 }
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..90ddc3c
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,1060 @@
+lockfileVersion: '6.0'
+
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false
+
+dependencies:
+  beautify:
+    specifier: 0.0.8
+    version: 0.0.8
+  discord-giveaways:
+    specifier: ^6.0.1
+    version: 6.0.1(discord.js@14.14.1)
+  discord-sync-commands:
+    specifier: 0.3.0
+    version: 0.3.0
+  discord.js:
+    specifier: ^14.9.0
+    version: 14.14.1
+  fero-ms:
+    specifier: ^2.0.7
+    version: 2.0.7
+  ms:
+    specifier: ^2.1.3
+    version: 2.1.3
+  quickdb:
+    specifier: 1.0.5
+    version: 1.0.5
+  quickmongo:
+    specifier: 4.0.0
+    version: 4.0.0
+
+devDependencies:
+  nodemon:
+    specifier: ^2.0.22
+    version: 2.0.22
+
+packages:
+
+  /@discordjs/builders@0.5.0:
+    resolution: {integrity: sha512-HP5y4Rqw68o61Qv4qM5tVmDbWi4mdTFftqIOGRo33SNPpLJ1Ga3KEIR2ibKofkmsoQhEpLmopD1AZDs3cKpHuw==}
+    engines: {node: '>=14.0.0', npm: '>=7.0.0'}
+    deprecated: no longer supported
+    dependencies:
+      '@sindresorhus/is': 4.6.0
+      discord-api-types: 0.22.0
+      ow: 0.27.0
+      ts-mixer: 6.0.3
+      tslib: 2.6.2
+    dev: false
+
+  /@discordjs/builders@1.7.0:
+    resolution: {integrity: sha512-GDtbKMkg433cOZur8Dv6c25EHxduNIBsxeHrsRoIM8+AwmEZ8r0tEpckx/sHwTLwQPOF3e2JWloZh9ofCaMfAw==}
+    engines: {node: '>=16.11.0'}
+    dependencies:
+      '@discordjs/formatters': 0.3.3
+      '@discordjs/util': 1.0.2
+      '@sapphire/shapeshift': 3.9.3
+      discord-api-types: 0.37.61
+      fast-deep-equal: 3.1.3
+      ts-mixer: 6.0.3
+      tslib: 2.6.2
+    dev: false
+
+  /@discordjs/collection@0.2.4:
+    resolution: {integrity: sha512-PVrEJH+V6Ob0OwfagYQ/57kwt/HNEJxt5jqY4P+S3st9y29t9iokdnGMQoJXG5VEMAQIPbzu9Snw1F6yE8PdLA==}
+    engines: {node: '>=16.0.0', npm: '>=7.0.0'}
+    deprecated: no longer supported
+    dev: false
+
+  /@discordjs/collection@1.5.3:
+    resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==}
+    engines: {node: '>=16.11.0'}
+    dev: false
+
+  /@discordjs/collection@2.0.0:
+    resolution: {integrity: sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==}
+    engines: {node: '>=18'}
+    dev: false
+
+  /@discordjs/form-data@3.0.1:
+    resolution: {integrity: sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==}
+    engines: {node: '>= 6'}
+    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+    dependencies:
+      asynckit: 0.4.0
+      combined-stream: 1.0.8
+      mime-types: 2.1.35
+    dev: false
+
+  /@discordjs/formatters@0.3.3:
+    resolution: {integrity: sha512-wTcI1Q5cps1eSGhl6+6AzzZkBBlVrBdc9IUhJbijRgVjCNIIIZPgqnUj3ntFODsHrdbGU8BEG9XmDQmgEEYn3w==}
+    engines: {node: '>=16.11.0'}
+    dependencies:
+      discord-api-types: 0.37.61
+    dev: false
+
+  /@discordjs/rest@2.2.0:
+    resolution: {integrity: sha512-nXm9wT8oqrYFRMEqTXQx9DUTeEtXUDMmnUKIhZn6O2EeDY9VCdwj23XCPq7fkqMPKdF7ldAfeVKyxxFdbZl59A==}
+    engines: {node: '>=16.11.0'}
+    dependencies:
+      '@discordjs/collection': 2.0.0
+      '@discordjs/util': 1.0.2
+      '@sapphire/async-queue': 1.5.0
+      '@sapphire/snowflake': 3.5.1
+      '@vladfrangu/async_event_emitter': 2.2.2
+      discord-api-types: 0.37.61
+      magic-bytes.js: 1.5.0
+      tslib: 2.6.2
+      undici: 5.27.2
+    dev: false
+
+  /@discordjs/util@1.0.2:
+    resolution: {integrity: sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==}
+    engines: {node: '>=16.11.0'}
+    dev: false
+
+  /@discordjs/ws@1.0.2:
+    resolution: {integrity: sha512-+XI82Rm2hKnFwAySXEep4A7Kfoowt6weO6381jgW+wVdTpMS/56qCvoXyFRY0slcv7c/U8My2PwIB2/wEaAh7Q==}
+    engines: {node: '>=16.11.0'}
+    dependencies:
+      '@discordjs/collection': 2.0.0
+      '@discordjs/rest': 2.2.0
+      '@discordjs/util': 1.0.2
+      '@sapphire/async-queue': 1.5.0
+      '@types/ws': 8.5.9
+      '@vladfrangu/async_event_emitter': 2.2.2
+      discord-api-types: 0.37.61
+      tslib: 2.6.2
+      ws: 8.14.2
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
+    dev: false
+
+  /@fastify/busboy@2.1.0:
+    resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==}
+    engines: {node: '>=14'}
+    dev: false
+
+  /@isaacs/cliui@8.0.2:
+    resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+    engines: {node: '>=12'}
+    dependencies:
+      string-width: 5.1.2
+      string-width-cjs: /string-width@4.2.3
+      strip-ansi: 7.1.0
+      strip-ansi-cjs: /strip-ansi@6.0.1
+      wrap-ansi: 8.1.0
+      wrap-ansi-cjs: /wrap-ansi@7.0.0
+    dev: false
+
+  /@one-ini/wasm@0.1.1:
+    resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
+    dev: false
+
+  /@pkgjs/parseargs@0.11.0:
+    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+    engines: {node: '>=14'}
+    requiresBuild: true
+    dev: false
+    optional: true
+
+  /@sapphire/async-queue@1.5.0:
+    resolution: {integrity: sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==}
+    engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
+    dev: false
+
+  /@sapphire/shapeshift@3.9.3:
+    resolution: {integrity: sha512-WzKJSwDYloSkHoBbE8rkRW8UNKJiSRJ/P8NqJ5iVq7U2Yr/kriIBx2hW+wj2Z5e5EnXL1hgYomgaFsdK6b+zqQ==}
+    engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
+    dependencies:
+      fast-deep-equal: 3.1.3
+      lodash: 4.17.21
+    dev: false
+
+  /@sapphire/snowflake@3.5.1:
+    resolution: {integrity: sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==}
+    engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
+    dev: false
+
+  /@sindresorhus/is@4.6.0:
+    resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
+    engines: {node: '>=10'}
+    dev: false
+
+  /@types/node@20.10.0:
+    resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==}
+    dependencies:
+      undici-types: 5.26.5
+    dev: false
+
+  /@types/ws@7.4.7:
+    resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
+    dependencies:
+      '@types/node': 20.10.0
+    dev: false
+
+  /@types/ws@8.5.9:
+    resolution: {integrity: sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==}
+    dependencies:
+      '@types/node': 20.10.0
+    dev: false
+
+  /@vladfrangu/async_event_emitter@2.2.2:
+    resolution: {integrity: sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==}
+    engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
+    dev: false
+
+  /abbrev@1.1.1:
+    resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+    dev: true
+
+  /abbrev@2.0.0:
+    resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
+    engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+    dev: false
+
+  /ansi-regex@5.0.1:
+    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+    engines: {node: '>=8'}
+    dev: false
+
+  /ansi-regex@6.0.1:
+    resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+    engines: {node: '>=12'}
+    dev: false
+
+  /ansi-styles@4.3.0:
+    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+    engines: {node: '>=8'}
+    dependencies:
+      color-convert: 2.0.1
+    dev: false
+
+  /ansi-styles@6.2.1:
+    resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+    engines: {node: '>=12'}
+    dev: false
+
+  /anymatch@3.1.3:
+    resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+    engines: {node: '>= 8'}
+    dependencies:
+      normalize-path: 3.0.0
+      picomatch: 2.3.1
+    dev: true
+
+  /asynckit@0.4.0:
+    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+    dev: false
+
+  /balanced-match@1.0.2:
+    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+  /beautify@0.0.8:
+    resolution: {integrity: sha512-1iF6Ey2qxDkm6bPgKcoXUmwFDpoRi5IgwefQDDQBRLxlZAAYwcULoQ2IdBArXZuSsuL7AT+KvZI9xZVLeUZPRg==}
+    hasBin: true
+    dependencies:
+      cssbeautify: 0.3.1
+      html: 1.0.0
+      js-beautify: 1.14.11
+    dev: false
+
+  /binary-extensions@2.2.0:
+    resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /brace-expansion@1.1.11:
+    resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+    dependencies:
+      balanced-match: 1.0.2
+      concat-map: 0.0.1
+    dev: true
+
+  /brace-expansion@2.0.1:
+    resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+    dependencies:
+      balanced-match: 1.0.2
+    dev: false
+
+  /braces@3.0.2:
+    resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+    engines: {node: '>=8'}
+    dependencies:
+      fill-range: 7.0.1
+    dev: true
+
+  /buffer-from@1.1.2:
+    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+    dev: false
+
+  /callsites@3.1.0:
+    resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+    engines: {node: '>=6'}
+    dev: false
+
+  /chokidar@3.5.3:
+    resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+    engines: {node: '>= 8.10.0'}
+    dependencies:
+      anymatch: 3.1.3
+      braces: 3.0.2
+      glob-parent: 5.1.2
+      is-binary-path: 2.1.0
+      is-glob: 4.0.3
+      normalize-path: 3.0.0
+      readdirp: 3.6.0
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
+
+  /color-convert@2.0.1:
+    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+    engines: {node: '>=7.0.0'}
+    dependencies:
+      color-name: 1.1.4
+    dev: false
+
+  /color-name@1.1.4:
+    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+    dev: false
+
+  /combined-stream@1.0.8:
+    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      delayed-stream: 1.0.0
+    dev: false
+
+  /commander@10.0.1:
+    resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
+    engines: {node: '>=14'}
+    dev: false
+
+  /concat-map@0.0.1:
+    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+    dev: true
+
+  /concat-stream@1.6.2:
+    resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
+    engines: {'0': node >= 0.8}
+    dependencies:
+      buffer-from: 1.1.2
+      inherits: 2.0.4
+      readable-stream: 2.3.8
+      typedarray: 0.0.6
+    dev: false
+
+  /config-chain@1.1.13:
+    resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
+    dependencies:
+      ini: 1.3.8
+      proto-list: 1.2.4
+    dev: false
+
+  /core-util-is@1.0.3:
+    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+    dev: false
+
+  /cross-spawn@7.0.3:
+    resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+    engines: {node: '>= 8'}
+    dependencies:
+      path-key: 3.1.1
+      shebang-command: 2.0.0
+      which: 2.0.2
+    dev: false
+
+  /cssbeautify@0.3.1:
+    resolution: {integrity: sha512-ljnSOCOiMbklF+dwPbpooyB78foId02vUrTDogWzu6ca2DCNB7Kc/BHEGBnYOlUYtwXvSW0mWTwaiO2pwFIoRg==}
+    hasBin: true
+    dev: false
+
+  /debug@3.2.7(supports-color@5.5.0):
+    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: 2.1.3
+      supports-color: 5.5.0
+    dev: true
+
+  /deepmerge-ts@4.3.0:
+    resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==}
+    engines: {node: '>=12.4.0'}
+    dev: false
+
+  /delayed-stream@1.0.0:
+    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+    engines: {node: '>=0.4.0'}
+    dev: false
+
+  /discord-api-types@0.22.0:
+    resolution: {integrity: sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg==}
+    engines: {node: '>=12'}
+    deprecated: No longer supported. Install the latest release!
+    dev: false
+
+  /discord-api-types@0.37.61:
+    resolution: {integrity: sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==}
+    dev: false
+
+  /discord-giveaways@6.0.1(discord.js@14.14.1):
+    resolution: {integrity: sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==}
+    engines: {node: '>=16.9.0'}
+    peerDependencies:
+      discord.js: '>=14.0.0'
+    dependencies:
+      deepmerge-ts: 4.3.0
+      discord.js: 14.14.1
+      serialize-javascript: 6.0.1
+    dev: false
+
+  /discord-sync-commands@0.3.0:
+    resolution: {integrity: sha512-JPKJTqzUvAtqTFcHp8GgEZfgpkOaeUIHpLVcnP88lK8gMMxUfz1X9+DsVgbAbsWSF7uer0PpBowHyWomzTJH/g==}
+    dependencies:
+      discord.js: github.com/discordjs/discord.js/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - utf-8-validate
+    dev: false
+
+  /discord.js@14.14.1:
+    resolution: {integrity: sha512-/hUVzkIerxKHyRKopJy5xejp4MYKDPTszAnpYxzVVv4qJYf+Tkt+jnT2N29PIPschicaEEpXwF2ARrTYHYwQ5w==}
+    engines: {node: '>=16.11.0'}
+    dependencies:
+      '@discordjs/builders': 1.7.0
+      '@discordjs/collection': 1.5.3
+      '@discordjs/formatters': 0.3.3
+      '@discordjs/rest': 2.2.0
+      '@discordjs/util': 1.0.2
+      '@discordjs/ws': 1.0.2
+      '@sapphire/snowflake': 3.5.1
+      '@types/ws': 8.5.9
+      discord-api-types: 0.37.61
+      fast-deep-equal: 3.1.3
+      lodash.snakecase: 4.1.1
+      tslib: 2.6.2
+      undici: 5.27.2
+      ws: 8.14.2
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
+    dev: false
+
+  /dot-prop@6.0.1:
+    resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
+    engines: {node: '>=10'}
+    dependencies:
+      is-obj: 2.0.0
+    dev: false
+
+  /eastasianwidth@0.2.0:
+    resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+    dev: false
+
+  /editorconfig@1.0.4:
+    resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==}
+    engines: {node: '>=14'}
+    hasBin: true
+    dependencies:
+      '@one-ini/wasm': 0.1.1
+      commander: 10.0.1
+      minimatch: 9.0.1
+      semver: 7.5.4
+    dev: false
+
+  /emoji-regex@8.0.0:
+    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+    dev: false
+
+  /emoji-regex@9.2.2:
+    resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+    dev: false
+
+  /fast-deep-equal@3.1.3:
+    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+    dev: false
+
+  /fero-ms@2.0.7:
+    resolution: {integrity: sha512-FtPY5YEmSomF6soqAdB/9pVFppK49VB1V2wWQtSlqX/WnRBX1EhJIv54AsDeast9TD/9jYLMulBJdGRHVQhw4Q==}
+    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+    dev: false
+
+  /fill-range@7.0.1:
+    resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      to-regex-range: 5.0.1
+    dev: true
+
+  /foreground-child@3.1.1:
+    resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+    engines: {node: '>=14'}
+    dependencies:
+      cross-spawn: 7.0.3
+      signal-exit: 4.1.0
+    dev: false
+
+  /fsevents@2.3.3:
+    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /glob-parent@5.1.2:
+    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+    engines: {node: '>= 6'}
+    dependencies:
+      is-glob: 4.0.3
+    dev: true
+
+  /glob@10.3.10:
+    resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    hasBin: true
+    dependencies:
+      foreground-child: 3.1.1
+      jackspeak: 2.3.6
+      minimatch: 9.0.3
+      minipass: 7.0.4
+      path-scurry: 1.10.1
+    dev: false
+
+  /has-flag@3.0.0:
+    resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /html@1.0.0:
+    resolution: {integrity: sha512-lw/7YsdKiP3kk5PnR1INY17iJuzdAtJewxr14ozKJWbbR97znovZ0mh+WEMZ8rjc3lgTK+ID/htTjuyGKB52Kw==}
+    hasBin: true
+    dependencies:
+      concat-stream: 1.6.2
+    dev: false
+
+  /ignore-by-default@1.0.1:
+    resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
+    dev: true
+
+  /inherits@2.0.4:
+    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+    dev: false
+
+  /ini@1.3.8:
+    resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+    dev: false
+
+  /is-binary-path@2.1.0:
+    resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: 2.2.0
+    dev: true
+
+  /is-extglob@2.1.1:
+    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /is-fullwidth-code-point@3.0.0:
+    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+    engines: {node: '>=8'}
+    dev: false
+
+  /is-glob@4.0.3:
+    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extglob: 2.1.1
+    dev: true
+
+  /is-number@7.0.0:
+    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+    engines: {node: '>=0.12.0'}
+    dev: true
+
+  /is-obj@2.0.0:
+    resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+    engines: {node: '>=8'}
+    dev: false
+
+  /isarray@1.0.0:
+    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+    dev: false
+
+  /isexe@2.0.0:
+    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+    dev: false
+
+  /jackspeak@2.3.6:
+    resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+    engines: {node: '>=14'}
+    dependencies:
+      '@isaacs/cliui': 8.0.2
+    optionalDependencies:
+      '@pkgjs/parseargs': 0.11.0
+    dev: false
+
+  /js-beautify@1.14.11:
+    resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==}
+    engines: {node: '>=14'}
+    hasBin: true
+    dependencies:
+      config-chain: 1.1.13
+      editorconfig: 1.0.4
+      glob: 10.3.10
+      nopt: 7.2.0
+    dev: false
+
+  /lodash.isequal@4.5.0:
+    resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+    dev: false
+
+  /lodash.snakecase@4.1.1:
+    resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
+    dev: false
+
+  /lodash@4.17.21:
+    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+    dev: false
+
+  /lru-cache@10.1.0:
+    resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
+    engines: {node: 14 || >=16.14}
+    dev: false
+
+  /lru-cache@6.0.0:
+    resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+    engines: {node: '>=10'}
+    dependencies:
+      yallist: 4.0.0
+    dev: false
+
+  /magic-bytes.js@1.5.0:
+    resolution: {integrity: sha512-wJkXvutRbNWcc37tt5j1HyOK1nosspdh3dj6LUYYAvF6JYNqs53IfRvK9oEpcwiDA1NdoIi64yAMfdivPeVAyw==}
+    dev: false
+
+  /mime-db@1.52.0:
+    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+    engines: {node: '>= 0.6'}
+    dev: false
+
+  /mime-types@2.1.35:
+    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+    engines: {node: '>= 0.6'}
+    dependencies:
+      mime-db: 1.52.0
+    dev: false
+
+  /minimatch@3.1.2:
+    resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+    dependencies:
+      brace-expansion: 1.1.11
+    dev: true
+
+  /minimatch@9.0.1:
+    resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    dependencies:
+      brace-expansion: 2.0.1
+    dev: false
+
+  /minimatch@9.0.3:
+    resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    dependencies:
+      brace-expansion: 2.0.1
+    dev: false
+
+  /minipass@7.0.4:
+    resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    dev: false
+
+  /ms@2.1.3:
+    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+  /node-fetch@2.7.0:
+    resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+    engines: {node: 4.x || >=6.0.0}
+    peerDependencies:
+      encoding: ^0.1.0
+    peerDependenciesMeta:
+      encoding:
+        optional: true
+    dependencies:
+      whatwg-url: 5.0.0
+    dev: false
+
+  /nodemon@2.0.22:
+    resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==}
+    engines: {node: '>=8.10.0'}
+    hasBin: true
+    dependencies:
+      chokidar: 3.5.3
+      debug: 3.2.7(supports-color@5.5.0)
+      ignore-by-default: 1.0.1
+      minimatch: 3.1.2
+      pstree.remy: 1.1.8
+      semver: 5.7.2
+      simple-update-notifier: 1.1.0
+      supports-color: 5.5.0
+      touch: 3.1.0
+      undefsafe: 2.0.5
+    dev: true
+
+  /nopt@1.0.10:
+    resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
+    hasBin: true
+    dependencies:
+      abbrev: 1.1.1
+    dev: true
+
+  /nopt@7.2.0:
+    resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==}
+    engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+    hasBin: true
+    dependencies:
+      abbrev: 2.0.0
+    dev: false
+
+  /normalize-path@3.0.0:
+    resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /ow@0.27.0:
+    resolution: {integrity: sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==}
+    engines: {node: '>=12'}
+    dependencies:
+      '@sindresorhus/is': 4.6.0
+      callsites: 3.1.0
+      dot-prop: 6.0.1
+      lodash.isequal: 4.5.0
+      type-fest: 1.4.0
+      vali-date: 1.0.0
+    dev: false
+
+  /path-key@3.1.1:
+    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+    engines: {node: '>=8'}
+    dev: false
+
+  /path-scurry@1.10.1:
+    resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    dependencies:
+      lru-cache: 10.1.0
+      minipass: 7.0.4
+    dev: false
+
+  /picomatch@2.3.1:
+    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+    engines: {node: '>=8.6'}
+    dev: true
+
+  /process-nextick-args@2.0.1:
+    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+    dev: false
+
+  /proto-list@1.2.4:
+    resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
+    dev: false
+
+  /pstree.remy@1.1.8:
+    resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
+    dev: true
+
+  /quickdb@1.0.5:
+    resolution: {integrity: sha512-bl//t43nrKh6gWS1ET5dp0UjCITnMM0lPMofolfeKF8bXAb5rvCX64WVAHRXPIdmhJULFUybYUlz2Xlsp+3Lhg==}
+    dev: false
+
+  /quickmongo@4.0.0:
+    resolution: {integrity: sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==}
+    dependencies:
+      dot-prop: 6.0.1
+    dev: false
+
+  /randombytes@2.1.0:
+    resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+    dependencies:
+      safe-buffer: 5.2.1
+    dev: false
+
+  /readable-stream@2.3.8:
+    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+    dependencies:
+      core-util-is: 1.0.3
+      inherits: 2.0.4
+      isarray: 1.0.0
+      process-nextick-args: 2.0.1
+      safe-buffer: 5.1.2
+      string_decoder: 1.1.1
+      util-deprecate: 1.0.2
+    dev: false
+
+  /readdirp@3.6.0:
+    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      picomatch: 2.3.1
+    dev: true
+
+  /safe-buffer@5.1.2:
+    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+    dev: false
+
+  /safe-buffer@5.2.1:
+    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+    dev: false
+
+  /semver@5.7.2:
+    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+    hasBin: true
+    dev: true
+
+  /semver@7.0.0:
+    resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
+    hasBin: true
+    dev: true
+
+  /semver@7.5.4:
+    resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
+    engines: {node: '>=10'}
+    hasBin: true
+    dependencies:
+      lru-cache: 6.0.0
+    dev: false
+
+  /serialize-javascript@6.0.1:
+    resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==}
+    dependencies:
+      randombytes: 2.1.0
+    dev: false
+
+  /shebang-command@2.0.0:
+    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+    engines: {node: '>=8'}
+    dependencies:
+      shebang-regex: 3.0.0
+    dev: false
+
+  /shebang-regex@3.0.0:
+    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+    engines: {node: '>=8'}
+    dev: false
+
+  /signal-exit@4.1.0:
+    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+    engines: {node: '>=14'}
+    dev: false
+
+  /simple-update-notifier@1.1.0:
+    resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==}
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      semver: 7.0.0
+    dev: true
+
+  /string-width@4.2.3:
+    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+    engines: {node: '>=8'}
+    dependencies:
+      emoji-regex: 8.0.0
+      is-fullwidth-code-point: 3.0.0
+      strip-ansi: 6.0.1
+    dev: false
+
+  /string-width@5.1.2:
+    resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+    engines: {node: '>=12'}
+    dependencies:
+      eastasianwidth: 0.2.0
+      emoji-regex: 9.2.2
+      strip-ansi: 7.1.0
+    dev: false
+
+  /string_decoder@1.1.1:
+    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+    dependencies:
+      safe-buffer: 5.1.2
+    dev: false
+
+  /strip-ansi@6.0.1:
+    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+    engines: {node: '>=8'}
+    dependencies:
+      ansi-regex: 5.0.1
+    dev: false
+
+  /strip-ansi@7.1.0:
+    resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+    engines: {node: '>=12'}
+    dependencies:
+      ansi-regex: 6.0.1
+    dev: false
+
+  /supports-color@5.5.0:
+    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+    engines: {node: '>=4'}
+    dependencies:
+      has-flag: 3.0.0
+    dev: true
+
+  /to-regex-range@5.0.1:
+    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+    engines: {node: '>=8.0'}
+    dependencies:
+      is-number: 7.0.0
+    dev: true
+
+  /touch@3.1.0:
+    resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
+    hasBin: true
+    dependencies:
+      nopt: 1.0.10
+    dev: true
+
+  /tr46@0.0.3:
+    resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+    dev: false
+
+  /ts-mixer@6.0.3:
+    resolution: {integrity: sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==}
+    dev: false
+
+  /tslib@2.6.2:
+    resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+    dev: false
+
+  /type-fest@1.4.0:
+    resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
+    engines: {node: '>=10'}
+    dev: false
+
+  /typedarray@0.0.6:
+    resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+    dev: false
+
+  /undefsafe@2.0.5:
+    resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
+    dev: true
+
+  /undici-types@5.26.5:
+    resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+    dev: false
+
+  /undici@5.27.2:
+    resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==}
+    engines: {node: '>=14.0'}
+    dependencies:
+      '@fastify/busboy': 2.1.0
+    dev: false
+
+  /util-deprecate@1.0.2:
+    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+    dev: false
+
+  /vali-date@1.0.0:
+    resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==}
+    engines: {node: '>=0.10.0'}
+    dev: false
+
+  /webidl-conversions@3.0.1:
+    resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+    dev: false
+
+  /whatwg-url@5.0.0:
+    resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+    dependencies:
+      tr46: 0.0.3
+      webidl-conversions: 3.0.1
+    dev: false
+
+  /which@2.0.2:
+    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+    engines: {node: '>= 8'}
+    hasBin: true
+    dependencies:
+      isexe: 2.0.0
+    dev: false
+
+  /wrap-ansi@7.0.0:
+    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+    engines: {node: '>=10'}
+    dependencies:
+      ansi-styles: 4.3.0
+      string-width: 4.2.3
+      strip-ansi: 6.0.1
+    dev: false
+
+  /wrap-ansi@8.1.0:
+    resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+    engines: {node: '>=12'}
+    dependencies:
+      ansi-styles: 6.2.1
+      string-width: 5.1.2
+      strip-ansi: 7.1.0
+    dev: false
+
+  /ws@7.5.9:
+    resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
+    engines: {node: '>=8.3.0'}
+    peerDependencies:
+      bufferutil: ^4.0.1
+      utf-8-validate: ^5.0.2
+    peerDependenciesMeta:
+      bufferutil:
+        optional: true
+      utf-8-validate:
+        optional: true
+    dev: false
+
+  /ws@8.14.2:
+    resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
+    engines: {node: '>=10.0.0'}
+    peerDependencies:
+      bufferutil: ^4.0.1
+      utf-8-validate: '>=5.0.2'
+    peerDependenciesMeta:
+      bufferutil:
+        optional: true
+      utf-8-validate:
+        optional: true
+    dev: false
+
+  /yallist@4.0.0:
+    resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+    dev: false
+
+  github.com/discordjs/discord.js/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a:
+    resolution: {tarball: https://codeload.github.com/discordjs/discord.js/tar.gz/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a}
+    name: discord.js
+    version: 13.2.0-dev
+    engines: {node: '>=16.6.0', npm: '>=7.0.0'}
+    prepare: true
+    requiresBuild: true
+    dependencies:
+      '@discordjs/builders': 0.5.0
+      '@discordjs/collection': 0.2.4
+      '@discordjs/form-data': 3.0.1
+      '@sapphire/async-queue': 1.5.0
+      '@types/ws': 7.4.7
+      discord-api-types: 0.22.0
+      node-fetch: 2.7.0
+      ws: 7.5.9
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - utf-8-validate
+    dev: false
diff --git a/schemas/giveawaysSchema.js b/schemas/giveawaysSchema.js
deleted file mode 100644
index 4d8fafb..0000000
--- a/schemas/giveawaysSchema.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const mongoose = require('mongoose');
-
-const giveawaySchema = new mongoose.Schema({
-  messageId: String,
-  channelId: String,
-  guildId: String,
-  startAt: Number,
-  endAt: Number,
-  ended: Boolean,
-  winnerCount: Number,
-  prize: String,
-  messages: {
-    giveaway: String,
-    giveawayEnded: String,
-    inviteToParticipate: String,
-    drawing: String,
-    dropMessage: String,
-    winMessage: mongoose.Mixed,
-    embedFooter: mongoose.Mixed,
-    noWinner: String,
-    winners: String,
-    endedAt: String,
-    hostedBy: String
-  },
-  thumbnail: String,
-  hostedBy: String,
-  winnerIds: { type: [String], default: undefined },
-  reaction: mongoose.Mixed,
-  botsCanWin: Boolean,
-  embedColor: mongoose.Mixed,
-  embedColorEnd: mongoose.Mixed,
-  exemptPermissions: { type: [], default: undefined },
-  exemptMembers: String,
-  bonusEntries: String,
-  extraData: mongoose.Mixed,
-  lastChance: {
-    enabled: Boolean,
-    content: String,
-    threshold: Number,
-    embedColor: mongoose.Mixed
-  },
-  pauseOptions: {
-    isPaused: Boolean,
-    content: String,
-    unpauseAfter: Number,
-    embedColor: mongoose.Mixed,
-    durationAfterPause: Number,
-    infiniteDurationText: String
-  },
-  isDrop: Boolean,
-  allowedMentions: {
-    parse: { type: [String], default: undefined },
-    users: { type: [String], default: undefined },
-    roles: { type: [String], default: undefined }
-  }
-}, { id: false });
-
-const giveawayModel = mongoose.model('giveaways', giveawaySchema);
-
-module.exports = giveawayModel;
\ No newline at end of file
diff --git a/schemas/guild.js b/schemas/guild.js
deleted file mode 100644
index 16adaeb..0000000
--- a/schemas/guild.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const { Schema, model } = require('mongoose');
-
-const guildSchema = new Schema({
-  _id: Schema.Types.ObjectId,
-  guildId: String,
-  guildName: String,
-});
-
-module.exports = model("Guild", guildSchema, "guilds");
\ No newline at end of file
diff --git a/slash/about.js b/slash/about.js
deleted file mode 100644
index 25bc2cf..0000000
--- a/slash/about.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const { ApplicationCommandOptionType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, } = require('discord.js');
-
-module.exports = {
-  name: 'avatar',
-  description: 'Shows User Avatar',
-  options: [{
-    name: 'user',
-    type: ApplicationCommandOptionType.User,
-    description: 'Select a user',
-    required: false,
-  }],
-  run: async (client, interaction) => {
-    const user = interaction.options.getUser('user') || interaction.user
-
-    const row = new ActionRowBuilder()
-      .addComponents(
-        new ButtonBuilder()
-          .setLabel(`Avatar URL`)
-          .setStyle(ButtonStyle.Link)
-          .setURL(`${user.displayAvatarURL({ dynamic: false, format: 'png', size: 1024 })}`))
-    
-    const embed = new EmbedBuilder()
-      .setTitle(`${user.username}'s Avatar`)
-      .setColor('#2F3136')
-      .setFooter({ text: `Requested by: ${interaction.user.username}`, iconURL: interaction.user.displayAvatarURL({ dynamic: true }) })
-      .setImage(user.displayAvatarURL({ dynamic: true, size: 1024 }))
-    interaction.reply({ embeds: [embed], components: [row] });
-  }
-}
\ No newline at end of file
diff --git a/slash/avatar.js b/slash/avatar.js
deleted file mode 100644
index b74a3c1..0000000
--- a/slash/avatar.js
+++ /dev/null
@@ -1,74 +0,0 @@
-const {
-  ApplicationCommandOptionType,
-  EmbedBuilder,
-  ActionRowBuilder,
-  ButtonBuilder,
-  ButtonStyle,
-} = require("discord.js");
-module.exports = {
-  name: "avatar",
-  description: "Shows User Avatar",
-  options: [
-    {
-      name: "user",
-      type: ApplicationCommandOptionType.User,
-      description: "Select a user",
-      required: false,
-    },
-  ],
-  run: async (client, interaction) => {
-    const user = interaction.options.getUser("user") || interaction.user;
-    const fetch = require("axios");
-    let userdata = await fetch.get(
-      `https://discord.com/api/guilds/${interaction.guild.id}/members/${user.id}`,
-      {
-        headers: {
-          Authorization: `Bot ${client.token}`,
-        },
-      }
-    );
-
-    if (userdata.data.avatar !== undefined && userdata.data.avatar !== null) {
-      let AvatarURL = `https://cdn.discordapp.com/guilds/${interaction.guild.id}/users/${user.id}/avatars/${userdata.data.avatar}.webp?size=1024`;
-      const row = new ActionRowBuilder().addComponents(
-        new ButtonBuilder()
-          .setLabel(`Avatar URL`)
-          .setStyle(ButtonStyle.Link)
-          .setURL(AvatarURL)
-      );
-
-      const embed = new EmbedBuilder()
-        .setTitle(`${user.username}'s Avatar`)
-        .setColor("#2F3136")
-        .setFooter({
-          text: `Requested by: ${interaction.user.username}`,
-          iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
-        })
-        .setImage(AvatarURL);
-      interaction.reply({ embeds: [embed], components: [row] });
-    } else {
-      const row = new ActionRowBuilder().addComponents(
-        new ButtonBuilder()
-          .setLabel(`Avatar URL`)
-          .setStyle(ButtonStyle.Link)
-          .setURL(
-            `${user.displayAvatarURL({
-              dynamic: false,
-              format: "png",
-              size: 1024,
-            })}`
-          )
-      );
-
-      const embed = new EmbedBuilder()
-        .setTitle(`${user.username}'s Avatar`)
-        .setColor("#2F3136")
-        .setFooter({
-          text: `Requested by: ${interaction.user.username}`,
-          iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
-        })
-        .setImage(user.displayAvatarURL({ dynamic: true, size: 1024 }));
-      interaction.reply({ embeds: [embed], components: [row] });
-    }
-  },
-};
\ No newline at end of file
diff --git a/slash/edit.js b/slash/edit.js
deleted file mode 100644
index b52abb8..0000000
--- a/slash/edit.js
+++ /dev/null
@@ -1,72 +0,0 @@
-const { ApplicationCommandOptionType } = require('discord.js');
-
-module.exports = {
-    name: 'edit',
-    description: 'πŸŽ‰ Edit a giveaway',
-
-    options: [
-        {
-            name: 'giveaway',
-            description: 'The giveaway to end (message ID)',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        },
-        {
-            name: 'duration',
-            description: 'Setting time of mentioned giveaway. Eg. 1h sets the current giveaway to end after an hour!',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        },
-        {
-            name: 'winners',
-            description: 'How many winners the giveaway should have',
-            type: ApplicationCommandOptionType.Integer,
-            required: true
-        },
-        {
-            name: 'prize',
-            description: 'What the prize of the giveaway should be',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        }
-    ],
-
-    run: async (client, interaction) => {
-
-        // If the member doesn't have enough permissions
-        if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) {
-            return interaction.reply({
-                content: '<:x_:1010816180719722566> You need to have the manage messages permissions to start giveaways.',
-                ephemeral: true
-            });
-        }
-        const gid = interaction.options.getString('giveaway');
-        const time = interaction.options.getString('duration');
-        const winnersCount = interaction.options.getInteger('winners');
-        const prize = interaction.options.getString('prize');
-        
-        await interaction.deferReply({
-         ephemeral: true
-        })
-        // Edit the giveaway
-        try {
-        await client.giveawaysManager.edit(gid, {
-            newWinnersCount: winnersCount,
-            newPrize: prize,
-            addTime: time
-        })
-        } catch(e) {
-return interaction.editReply({
-            content:
-                `No giveaway found with the given message ID: \`${gid}\``,
-            ephemeral: true
-        });
-        }
-        interaction.editReply({
-            content:
-                `This giveaway has now been edited!`,
-            ephemeral: true
-        });
-    }
-
-};
\ No newline at end of file
diff --git a/slash/end.js b/slash/end.js
deleted file mode 100644
index 9d450c0..0000000
--- a/slash/end.js
+++ /dev/null
@@ -1,65 +0,0 @@
-const { ApplicationCommandOptionType } = require('discord.js');
-
-module.exports = {
-    name: "end",
-    description: 'πŸŽ‰ End an already running giveaway',
-
-    options: [
-        {
-            name: 'giveaway',
-            description: 'The giveaway to end (message ID or giveaway prize)',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        }
-    ],
-
-    run: async (client, interaction) => {
-
-        // If the member doesn't have enough permissions
-        if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) {
-            return interaction.reply({
-                content: '<:x_:1010816180719722566> You need to have the manage messages permissions to end giveaways.',
-                ephemeral: true
-            });
-        }
-
-        const query = interaction.options.getString('giveaway');
-
-        // fetching the giveaway with message Id or prize
-        const giveaway =
-            // Search with giveaway prize
-            client.giveawaysManager.giveaways.find((g) => g.prize === query && g.guildId === interaction.guild.id) ||
-            // Search with giveaway Id
-            client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id);
-
-        // If no giveaway was found with the corresponding input
-        if (!giveaway) {
-            return interaction.reply({
-                content: 'Unable to find a giveaway for `' + query + '`.',
-                ephemeral: true
-            });
-        }
-
-        if (giveaway.ended) {
-            return interaction.reply({
-                content: 'This giveaway has already ended!',
-                ephemeral: true
-            });
-        }
-
-        // Edit the giveaway
-        client.giveawaysManager.end(giveaway.messageId)
-            // Success message
-            .then(() => {
-                // Success message
-                interaction.reply(`**[This Giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** Has Now Ended!`);
-            })
-            .catch((e) => {
-                interaction.reply({
-                    content: e,
-                    ephemeral: true
-                });
-            });
-
-    }
-};
\ No newline at end of file
diff --git a/slash/help.js b/slash/help.js
deleted file mode 100644
index 99c7b40..0000000
--- a/slash/help.js
+++ /dev/null
@@ -1,108 +0,0 @@
-const { EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder, SelectMenuBuilder, ComponentType } = require('discord.js');
-const config = require('../config.json');
-
-module.exports = {
-  name: 'help',
-  description: 'πŸ“œ View all the commands available to the bot!',
-  run: async (client, interaction) => {
-    const embed = new EmbedBuilder()
-      .setTitle(`Commands of ${client.user.username}`)
-      .setColor('#2F3136')
-      .setDescription('Please Select a category to view all its commands\n<:invi:1000459192555024404><:next:1000472400049209385> **Giveaway Commands** \n<:invi:1000459192555024404><:next:1000472400049209385> **Configuration Commands**')
-      .setThumbnail('https://ellie.gcoms.xyz/Ellise.png')
-      .setTimestamp()
-      .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://i.imgur.com/sB02Hbz.png')
-    });
-
-    const giveaway = new EmbedBuilder()
-      .setTitle("Categories Β» Giveaway")
-      .setColor('#2F3136')
-      .setDescription("<:sort:1003268901360115842> Here are the giveaway commands")
-      .addFields(
-    { name: 'Create / Start'  , value: `Start a giveaway in your guild!\n > **Type: \`/start\`**`, inline: true },
-    { name: 'Edit' , value: `Edit an already running giveaway!\n > **Type: \`/edit\`**`, inline: true },
-    { name: 'End' , value: `End an already running giveaway!\n > **Type: \`/end\`**`, inline: true },
-    { name: 'Pause' , value: `Pause an already running giveaway!\n > **Type: \`/pause\`**`, inline: true },
-    { name: 'Reroll' , value: `Reroll an ended giveaway!\n > **Type: \`/reroll\`**`, inline: true },
-    { name: 'Resume' , value: `Resume a paused giveaway!\n > **Type: \`/resume\`**`, inline: true },
-  )
-      .setTimestamp()
-      .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-    });
-
-    const general = new EmbedBuilder()
-      .setTitle("Categories Β» Configuration")
-      .setColor('#2F3136')
-      .setDescription("<:sort:1003268901360115842> Here are the configuration commands in slash")
-      .addFields(
-        { name: 'Help', value: `Show the help menu.\n > **Type: \`/help\`**`, inline: true },
-        { name: 'About', value: `Show Info About Holana.\n > **Type: \`/about\`**`, inline: true },
-        { name: 'Server Info', value: `Shows server info.\n > **Type: \`/serverinfo\`**`, inline: true },
-        { name: 'Server Icon', value: `Shows server icon.\n > **Type: \`/servericon\`**`, inline: true },
-        { name: 'User Info', value: `Shows user info.\n > **Type: \`/userinfo\`**`, inline: true },
-        { name: 'User Avatar', value: `Shows user avatar.\n > **Type: \`/avatar\`**`, inline: true },
-        { name: 'Invite', value: `Get the bot's invite link.\n > **Type: \`/invite\`**`, inline: true },
-        { name: 'Ping', value: `Check the bot's ping!\n > **Type: \`/ping\`**`, inline: true },
-        { name: 'System', value: `Check the bot's System info.\n > **Type: \`/info\`**`, inline: true },
-      )
-      .setTimestamp()
-      .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-    });
-
-    const components = (state) => [
-      new ActionRowBuilder().addComponents(
-        new StringSelectMenuBuilder()
-          .setCustomId("help-menu")
-          .setPlaceholder("Please Select a Category")
-          .setDisabled(state)
-          .addOptions([{
-            label: `Giveaways`,
-            value: `giveaway`,
-            description: `View all the giveaway based commands!`,
-            emoji: `<:confetti:984296694357319730>`
-          },
-          {
-            label: `Configuration`,
-            value: `general`,
-            description: `View all the general bot commands!`,
-            emoji: `<:Discord_settings:990669159849414736>`
-          }
-          ])
-      ),
-    ];
-
-    const initialMessage = await interaction.reply({ embeds: [embed], components: components(false) });
-
-    const filter = (interaction) => interaction.user.id === interaction.member.id;
-
-    const collector = interaction.channel.createMessageComponentCollector(
-      {
-        filter,
-        componentType: ComponentType.SelectMenu,
-        idle: 300000,
-        dispose: true,
-      });
-
-    collector.on('collect', (interaction) => {
-      if (interaction.values[0] === "giveaway") {
-        interaction.update({ embeds: [giveaway], components: components(false) }).catch((e) => { });
-      } else if (interaction.values[0] === "general") {
-        interaction.update({ embeds: [general], components: components(false) }).catch((e) => { });
-      }
-    });
-    collector.on('end', (collected, reason) => {
-      if (reason == "time") {
-        initialMessage.edit({
-          content: "Collector Destroyed, Try Again!",
-          components: [],
-        });
-      }
-    })
-  }
-}
\ No newline at end of file
diff --git a/slash/info.js b/slash/info.js
deleted file mode 100644
index 30d0081..0000000
--- a/slash/info.js
+++ /dev/null
@@ -1,53 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-
-module.exports = {
-    name: 'info',
-    description: 'πŸ“š Check my system info!',
-    run: async (client, interaction) => {      
-      let ccount = client.channels.cache.size;
-      let mcount = 0; 
-client.guilds.cache.forEach((guild) => {
-    mcount += guild.memberCount 
-})
-
-    const row = new ActionRowBuilder()
-			.addComponents(
-        new ButtonBuilder()
-    .setLabel(`Invite ${client.user.username}`)
-    .setStyle(ButtonStyle.Link)
-    .setURL("https://discord.com/api/oauth2/authorize?client_id=973436715819745290&permissions=406881561681&scope=bot%20applications.commands")
-    .setEmoji('973537545289875486'),
-      )
-  
-  let pembed = new EmbedBuilder()
-    .setAuthor({name: "Holana", iconURL: "https://ellie.gcoms.xyz/Ellise.png" })
-    .setTitle('Information')
-    .setColor('#2F3136')
-    .setTimestamp()
-    .addFields(
-        { name: "\Server", value: `\`\`\`ini\n[ ${client.guilds.cache.size} ]\n\`\`\``, inline: true },
-        {name: "Users", value: `\`\`\`ini\n[ ${mcount} ]\n\`\`\``, inline: true },
-        {name: "Channels", value: `\`\`\`ini\n[ ${ccount} ]\n\`\`\``, inline: true}
-               )
-    .setDescription(`
-**= STATISTICS =**
-> **β€’ Discord.js** : v14.7.1
-> **β€’ Node**       : v18.13.0
-
-**= SYSTEM =**
-> **β€’ Hosting**     : -
-> **β€’ Platform**   : Windows
-
-**= CPU =**
-> **β€’ Model**      : -
-> **β€’ Speed**      : -
-> **β€’ Cores**      : -`)
-    .setFooter({
-        text: `©️ IVON`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-    })
-        interaction.reply({
-          embeds: [pembed], components: [row]
-        });
-    },
-};
\ No newline at end of file
diff --git a/slash/invite.js b/slash/invite.js
deleted file mode 100644
index 89ad08a..0000000
--- a/slash/invite.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-const config = require('../config.json');
-
-module.exports = {
-    name: 'invite',
-    description: 'βž• Invite the bot to your server!',
-    run: async (client, interaction) => {
-    const row = new ActionRowBuilder()
-    .addComponents(
-        new ButtonBuilder()
-        .setLabel(`Invite ${client.user.username}`)
-        .setStyle(ButtonStyle.Link)
-        .setEmoji('973537545289875486')
-        .setURL(`https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands`),
-    )
-    let invite = new EmbedBuilder()
-      .setAuthor({ 
-          name: `Invite ${client.user.username}`, 
-          iconURL: client.user.displayAvatarURL() 
-      })    
-    .setTitle("Invite & Support Link!")
-    .setDescription(`I'm A Giveaway bot to host Giveaways easily on your server with multiple options, Including role requirements, bonus roles, bonus points and server joinings. Get started with Holana today!`)  
-    .setColor('#2F3136')
-    .setTimestamp()
-    .setThumbnail('https://ellie.gcoms.xyz/Ellise.png')
-    .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-    })
-    
-    interaction.reply({ embeds: [invite], components: [row]});
-}
-}
\ No newline at end of file
diff --git a/slash/pause.js b/slash/pause.js
deleted file mode 100644
index 89f3ba0..0000000
--- a/slash/pause.js
+++ /dev/null
@@ -1,63 +0,0 @@
-const { ApplicationCommandOptionType } = require('discord.js');
-
-module.exports = {
-    name: "pause",
-    description: '⏸ Pause a giveaway',
-
-    options: [
-        {
-            name: 'giveaway',
-            description: 'The giveaway to pause (message ID)',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        }
-    ],
-
-    run: async (client, interaction) => {
-
-        // If the member doesn't have enough permissions
-        if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) {
-            return interaction.reply({
-                content: '<:x_:1010816180719722566> You need to have the manage messages permissions to pause giveaways.',
-                ephemeral: true
-            });
-        }
-
-        const query = interaction.options.getString('giveaway');
-
-        // try to find the giveaway with prize alternatively with ID
-        const giveaway =
-            // Search with giveaway ID
-            client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id);
-
-        // If no giveaway was found
-        if (!giveaway) {
-            return interaction.reply({
-                content: 'Unable to find a giveaway for `' + query + '`.',
-                ephemeral: true
-            });
-        }
-
-        if (giveaway.pauseOptions.isPaused) {
-            return interaction.reply({
-                content: `**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})**  is already paused.`,
-                ephemeral: true
-            });
-        }
-
-        // Edit the giveaway
-        client.giveawaysManager.pause(giveaway.messageId)
-            // Success message
-            .then(() => {
-                // Success message
-                interaction.reply(`**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** has now been paused!`);
-            })
-            .catch((e) => {
-                interaction.reply({
-                    content: e,
-                    ephemeral: true
-                });
-            });
-
-    }
-};
\ No newline at end of file
diff --git a/slash/ping.js b/slash/ping.js
deleted file mode 100644
index 6a46731..0000000
--- a/slash/ping.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const { EmbedBuilder } = require('discord.js');
-
-module.exports = {
-    name: 'ping',
-    description: 'πŸ“Check my ping!',
-    run: async (client, interaction) => {
-      let pembed = new EmbedBuilder()
-		  .setTitle("Pong!")
-      .setColor('#2F3136')
-      .setThumbnail('https://ellie.gcoms.xyz/Ellise.png')
-		  .addFields({name: '**Latency**', value: `\`\`\`ini\n[ ${Date.now() - interaction.createdTimestamp}ms ]\n\`\`\``, inline: true},
-			     {name: '**API Latency**', value: `\`\`\`ini\n[ ${Math.round(client.ws.ping)}ms ]\n\`\`\``, inline: true})
-		  .setTimestamp()
-      .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise.png')
-    })
-        interaction.reply({
-          embeds: [pembed]
-        });
-    },
-};
\ No newline at end of file
diff --git a/slash/reroll.js b/slash/reroll.js
deleted file mode 100644
index 0066916..0000000
--- a/slash/reroll.js
+++ /dev/null
@@ -1,62 +0,0 @@
-const { ApplicationCommandOptionType } = require('discord.js');
-
-module.exports = {
-    name: "reroll",
-    description: 'πŸŽ‰ Reroll a giveaway',
-
-    options: [
-        {
-            name: 'giveaway',
-            description: 'The giveaway to reroll (message ID)',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        }
-    ],
-
-    run: async (client, interaction) => {
-
-        // If the member doesn't have enough permissions
-        if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) {
-            return interaction.reply({
-                content: '<:x_:1010816180719722566> You need to have the manage messages permission to reroll giveaways.',
-                ephemeral: true
-            });
-        }
-
-        const query = interaction.options.getString('giveaway');
-
-        // try to find the giveaway with the provided prize OR with the ID
-        const giveaway =
-            // Search with giveaway ID
-            client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id);
-
-        // If no giveaway was found
-        if (!giveaway) {
-            return interaction.reply({
-                content: 'Unable to find a giveaway for `' + query + '`.',
-                ephemeral: true
-            });
-        }
-
-        if (!giveaway.ended) {
-            return interaction.reply({
-                content: `[This Giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) has not been ended yet`,
-                ephemeral: true
-            });
-        }
-
-        // Reroll the giveaway
-        client.giveawaysManager.reroll(giveaway.messageId)
-            .then(() => {
-                // Success message
-                interaction.reply(`Rerolled **[this giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})!**`);
-            })
-            .catch((e) => {
-                interaction.reply({
-                    content: e,
-                    ephemeral: true
-                });
-            });
-
-    }
-};
\ No newline at end of file
diff --git a/slash/resume.js b/slash/resume.js
deleted file mode 100644
index 8873227..0000000
--- a/slash/resume.js
+++ /dev/null
@@ -1,63 +0,0 @@
-const { ApplicationCommandOptionType } = require('discord.js');
-
-module.exports = {
-    name: "resume",
-    description: 'β–Ά Resume a paused giveaway',
-
-    options: [
-        {
-            name: 'giveaway',
-            description: 'The giveaway to resume (message ID)',
-            type: ApplicationCommandOptionType.String,
-            required: true
-        }
-    ],
-
-    run: async (client, interaction) => {
-
-        // If the member doesn't have enough permissions
-        if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) {
-            return interaction.reply({
-                content: '<:x_:1010816180719722566> You need to have the manage messages permissions to pause giveaways.',
-                ephemeral: true
-            });
-        }
-
-        const query = interaction.options.getString('giveaway');
-
-        // try to find the giveaway with prize alternatively with ID
-        const giveaway =
-            // Search with giveaway ID
-            client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id);
-
-        // If no giveaway was found
-        if (!giveaway) {
-            return interaction.reply({
-                content: 'Unable to find a giveaway for `' + query + '`.',
-                ephemeral: true
-            });
-        }
-
-        if (!giveaway.pauseOptions.isPaused) {
-            return interaction.reply({
-                content: `**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})**  is not paused!`,
-                ephemeral: true
-            });
-        }
-
-        // Edit the giveaway
-        client.giveawaysManager.unpause(giveaway.messageId)
-            // Success message
-            .then(() => {
-                // Success message
-                interaction.reply(`**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** has been successfully resumed!`);
-            })
-            .catch((e) => {
-                interaction.reply({
-                    content: e,
-                    ephemeral: true
-                });
-            });
-
-    }
-};
\ No newline at end of file
diff --git a/slash/servericon.js b/slash/servericon.js
deleted file mode 100644
index 76900fd..0000000
--- a/slash/servericon.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
-
-module.exports = {
-  name: 'servericon',
-  description: 'sends the Server Icon',
-  run: async (client, interaction) => {
-    
-const row = new ActionRowBuilder()
-    .addComponents(
-        new ButtonBuilder()
-        .setLabel(`Server Icon URL`)
-        .setStyle(ButtonStyle.Link)
-        .setURL(`${interaction.guild.iconURL()}?size=1024`))
-
-    let embed = new EmbedBuilder()
-    .setAuthor({ name: interaction.guild.name })
-    .setImage(interaction.guild.iconURL({ dynamic: true, size: 1024 }))
-    .setColor('#2F3136')
-    .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise')
-    })
-    interaction.reply({embeds: [embed], components: [row]});
-
-  }
-}
\ No newline at end of file
diff --git a/slash/serverinfo.js b/slash/serverinfo.js
deleted file mode 100644
index 24dc846..0000000
--- a/slash/serverinfo.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const { EmbedBuilder } = require('discord.js');
-
-module.exports = {
-  name: 'serverinfo',
-  description: 'sends the serverinfo',
-  run: async (client, interaction) => {
-    const guild = client.guilds.resolve(interaction.guildId)
-      const voicechannels = await guild.channels.cache.filter(
-                (ch) => ch.type === ChannelType.GuildVoice
-            ).size
-const textchannels = await guild.channels.cache.filter(
-                (ch) => ch.type === ChannelType.GuildText
-            ).size
-
-    let embed = new EmbedBuilder()
-    .setTitle("**Server Information**")
-        .setColor('#2F3136')
-        .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
-      .setDescription(`
-      <:profile:1000770439406157904> **Name:** \`${interaction.guild.name}\`
-      <:invi:1000459192555024404><:next:1000472400049209385> **Server ID:** ${interaction.guild.id}
-      <:vip:990606565344182302> **Owner:** <@${(interaction.guild.ownerId)}>
-      <:invi:1000459192555024404><:next:1000472400049209385> **Owner ID:** ${(await interaction.guild.ownerId)}\n
-      <:birthday:1000469205520502935> **Created At: ** <t:${parseInt(interaction.guild.createdTimestamp / 1000)}:R>
-      <:member:1000768159952949258> **Members:** \`${interaction.guild.memberCount}\`
-      <:role:1000449831157907556> **Roles:** \`${interaction.guild.roles.cache.size}\`
-      <:boost:990601774438166609> **Emojis:** \`${interaction.guild.emojis.cache.size}\`
-      <a:nitro:990601542463807528> **Animated Emojis:** \`${interaction.guild.emojis.cache.filter(emoji => emoji.animated).size}\`
-      <:channel:990666581493284915> **Text Channels:** \`${textchannels}\`
-      <:voice:990666579182223431> **Voice Channels:** \`${voicechannels}\`\n\n
-      **Boost Information**\n
-      <:boosters:1000708963626668052> **Total Boosts:** \`${interaction.guild.premiumSubscriptionCount}\`
-      <:boost:984643370511118378> **Boost Level:** \`${interaction.guild.premiumTier}\``)
-        .setAuthor({ name: interaction.guild.name })
-        .setFooter({
-        text: `©️ Holana`, 
-        iconURL: ('https://ellie.gcoms.xyz/Ellise')
-    })
-    interaction.reply({embeds: [embed]});
-  }
-}
\ No newline at end of file
diff --git a/slash/start.js b/slash/start.js
deleted file mode 100644
index 1987d26..0000000
--- a/slash/start.js
+++ /dev/null
@@ -1,164 +0,0 @@
-const Discord = require("discord.js")
-const {  ApplicationCommandOptionType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
-const messages = require("../utils/message");
-const ms = require("ms")
-module.exports = {
-  name: 'start',
-  description: 'πŸŽ‰ Start a giveaway',
-
-  options: [
-    {
-      name: 'duration',
-      description: 'How long the giveaway should last for. Example values: 1m, 1h, 1d',
-      type: ApplicationCommandOptionType.String,
-      required: true
-    },
-    {
-      name: 'winners',
-      description: 'How many winners the giveaway should have',
-      type: ApplicationCommandOptionType.Integer,
-      required: true
-    },
-    {
-      name: 'prize',
-      description: 'What the prize of the giveaway should be',
-      type: ApplicationCommandOptionType.String,
-      required: true
-    },
-    {
-      name: 'channel',
-      description: 'The channel to start the giveaway in',
-      type: ApplicationCommandOptionType.Channel,
-      required: true
-    },
-    {
-      name: 'bonusrole',
-      description: 'Role which would recieve bonus entries',
-      type: ApplicationCommandOptionType.Role,
-      required: false
-    },
-    {
-      name: 'bonusamount',
-      description: 'The amount of bonus entries the role will recieve',
-      type: ApplicationCommandOptionType.Integer,
-      required: false
-    },
-    {
-      name: 'description',
-      description: 'Add more details about your giveaway',
-      type: ApplicationCommandOptionType.String,
-      required: false
-    },
-    {
-      name: 'role',
-      description: 'Role you want to add as giveaway joining requirement',
-      type: ApplicationCommandOptionType.Role,
-      required: false
-    },
-  ],
-
-  run: async (client, interaction) => {
-
-    // If the member doesn't have enough permissions
-    if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) {
-      return interaction.reply({
-        content: ':x: You need to have the manage messages permissions to start giveaways.',
-        ephemeral: true
-      });
-    }
-
-    const giveawayChannel = interaction.options.getChannel('channel');
-    const giveawayDuration = interaction.options.getString('duration');
-    const giveawayWinnerCount = interaction.options.getInteger('winners');
-    const giveawayPrize = interaction.options.getString('prize');
-
-    if (!giveawayChannel.isTextBased()) {
-      return interaction.reply({
-        content: ':x: Please select a text channel!',
-        ephemeral: true
-      });
-    }
-   if(isNaN(ms(giveawayDuration))) {
-    return interaction.reply({
-      content: ':x: Please select a valid duration!',
-      ephemeral: true
-    });
-  }
-    if (giveawayWinnerCount < 1) {
-      return interaction.reply({
-        content: ':x: Please select a valid winner count! greater or equal to one.',
-      })
-    }
-
-    const bonusRole = interaction.options.getRole('bonusrole')
-    const bonusEntries = interaction.options.getInteger('bonusamount')
-    let rolereq = interaction.options.getRole('role')
-    let invite = interaction.options.getString('description')
-
-    if (bonusRole) {
-      if (!bonusEntries) {
-        return interaction.reply({
-          content: `:x: You must specify how many bonus entries would ${bonusRole} recieve!`,
-          ephemeral: true
-        });
-      }
-    }
-
-
-    await interaction.deferReply({ ephemeral: true })
-
-    if (rolereq) {
-      messages.inviteToParticipate = `**React with <:confetti:984296694357319730> to participate!**\n>>> - Only members having ${rolereq} are allowed to participate in this giveaway!`
-    }
-    if (rolereq && invite) {
-      messages.inviteToParticipate = `**React with <:confetti:984296694357319730> to participate!**\n>>> - Only members having ${rolereq} are allowed to participate in this giveaway!`
-    }
-    if (!rolereq && invite) {
-      messages.inviteToParticipate = `**React with <:confetti:984296694357319730> to participate!**\n>>> Read more details about this giveaway down below!`
-    }
-
-
-    // start giveaway
-    await client.giveawaysManager.start(giveawayChannel, {
-      // The giveaway duration
-      duration: ms(giveawayDuration),
-      // The giveaway prize
-      prize: giveawayPrize,
-      // The giveaway Host
-      hostedBy: `<@${interaction.user.id}>`,
-      // The giveaway winner count
-      winnerCount: parseInt(giveawayWinnerCount),
-      // BonusEntries If Provided
-      bonusEntries: [
-        {
-          // Members who have the role which is assigned to "rolename" get the amount of bonus entries which are assigned to "BonusEntries"
-          bonus: new Function('member', `return member.roles.cache.some((r) => r.name === \'${bonusRole ?.name}\') ? ${bonusEntries} : null`),
-          cumulative: false
-        }
-      ],
-      // Messages
-      messages,
-      extraData: {
-        role: rolereq == null ? "null" : rolereq.id,
-      }
-    });
-    interaction.editReply({
-      content:
-        `Giveaway started in ${giveawayChannel}!`,
-      ephemeral: true
-    })
-
-    if (bonusRole) {
-      let giveaway = new Discord.EmbedBuilder()
-        .setAuthor({ name: `Bonus Entries Alert!` })
-        .setDescription(
-          `**${bonusRole}** Has **${bonusEntries}** Extra Entries in this giveaway!`
-        )
-        .setColor("#2F3136")
-        .setTimestamp();
-      giveawayChannel.send({ embeds: [giveaway] });
-    }
-
-  }
-
-};
\ No newline at end of file
diff --git a/slash/userinfo.js b/slash/userinfo.js
deleted file mode 100644
index 801343e..0000000
--- a/slash/userinfo.js
+++ /dev/null
@@ -1,234 +0,0 @@
-const {
-  EmbedBuilder,
-  ActionRowBuilder,
-  ApplicationCommandOptionType,
-  AttachmentBuilder,
-} = require("discord.js");
-const moment = require("moment");
-const japiRestPkg = require("japi.rest");
-const japiRest = new japiRestPkg('API Key'); // Get ur japi key from https://key.japi.rest
-
-module.exports = {
-  name: "userinfo",
-  description: "Gives information about a user or server",
-  UserPerms: ["MANAGE_MESSAGES"],
-  BotPerms: ["EMBED_LINKS"],
-  options: [
-    {
-      name: "member",
-      description:
-        "Please select a server member of whose information you want",
-      type: ApplicationCommandOptionType.User,
-      required: false,
-    },
-  ],
-  /**
-   * @param {Client} client
-   * @param {CommandInteraction} interaction
-   * @param {String[]} args
-   */
-  run: async (client, interaction, args) => {
-    const flags = {
-      DISCORD_EMPLOYEE: "<:BadgeStaff:990666549163610252>", //Replace your emoji here
-      DISCORD_PARTNER: "<:Partner:990667758654091274>", //Replace your emoji here
-      BUGHUNTER_LEVEL_1: "<:bughunterlv1:990666534609354843>", //Replace your emoji here
-      BUGHUNTER_LEVEL_2: "<:bughunterlv2:990666595795873832>", //Replace your emoji here
-      HYPESQUAD_EVENTS: "<:discord_serveur:990666593455452200>", //Replace your emoji here
-      HOUSE_BRAVERY: "<:bravery:990666567593373736>", //Replace your emoji here
-      HOUSE_BRILLIANCE: "<:brillance:990666570013479042>", //Replace your emoji here
-      HOUSE_BALANCE: "<:balance:990666565273911427>", //Replace your emoji here
-      EARLY_SUPPORTER: "<:earlysupporter:990666536802992188>", //Replace your emoji here
-      SYSTEM: "<:developer:974687011040526376>", //Replace your emoji here
-      VERIFIED_BOT: "<:gg:991441731163803799><:ggg:991441739590156290>", //Replace your emoji here
-      VERIFIED_DEVELOPER: "<:developersofDiscord:990666539218899004>", //Replace your emoji here
-      ACTIVE_DEVELOPER: "<:active_developer:1040582016112013382>",
-      NITRO: "<:DiscordNitro:990666558235877396>", //Replace your emoji here
-      BOOSTER_1: "<:1m:991804502455885824>", //Replace your emoji here
-      BOOSTER_2: "<:2m:991804500388102305>", //Replace your emoji here
-      BOOSTER_3: "<:3m:991804504678867026>", //Replace your emoji here
-      BOOSTER_4: "<:6m:991804497384972490>", //Replace your emoji here
-      BOOSTER_5: "<:9m:991804517706375278>", //Replace your emoji here
-      BOOSTER_6: "<:12m:991804515198193674>", //Replace your emoji here
-      BOOSTER_7: "<:15m:991804512434147418>", //Replace your emoji here
-      BOOSTER_8: "<:18m:991804509766557767>", //Replace your emoji here
-      BOOSTER_9: "<:24m:991804507308707850>", //Replace your emoji here
-    };
-    //badge system
-
-    const { options } = interaction;
-    const user = (await options.getUser("member")) || interaction.user;
-    const member = await interaction.guild.members.fetch(user);
-    const owner = await interaction.guild.fetchOwner();
-
-    const avpng = member.user.displayAvatarURL({
-      format: "png",
-      dynamic: true,
-    });
-    const joinedServerAt = `${moment(member.joinedTimestamp).format(
-      "DD/MM/YYYY"
-    )}`;
-    const isBot = member.user.bot
-      ? "<:true:990666572366499940>"
-      : "<:false:990666574295867393>";
-    let memberPermissons = `${member.permissions
-      .toArray()
-      .map((p) => `${p}`)
-      .join(", ")}`;
-    if (member.user.id === owner.id) {
-      memberPermissons = "SERVER_OWNER";
-    }
-    const joinedDiscordAt = `${moment(member.user.createdTimestamp).format(
-      "DD/MM/YYYY"
-    )}`;
-    const statuses = {
-      online: "🟒",
-      idle: "πŸŒ™",
-      dnd: "β›”",
-      offline: "⚫️",
-    };
-    const status = `${statuses[member.presence?.status]} ${
-      member.presence?.status
-    }`;
-    const activity = member.presence?.activities[0];
-    var userstatus = "None";
-    if (activity) {
-      if (activity.type === "CUSTOM_STATUS") {
-        let emoji = `${
-          activity.emoji
-            ? activity.emoji.id
-              ? `<${activity.emoji.animated ? "a" : ""}:${
-                  activity.emoji.name
-                }:${activity.emoji.id}>`
-              : activity.emoji.name
-            : ""
-        }`;
-        userstatus = `${emoji} \`${activity.state || "None"}\``;
-      } else {
-        userstatus = `\`${
-          activity.type.toLowerCase().charAt(0).toUpperCase() +
-          activity.type.toLowerCase().slice(1)
-        } ${activity.name}\``;
-      }
-    }
-    const totalRoles = await member.roles.cache.size;
-    const roles = await member.roles;
-    const highestRole =
-      member.roles.highest.id === interaction.guild.id
-        ? "None"
-        : member.roles.highest;
-    function trimArray(arr, maxLen = 25) {
-      if (Array.from(arr.values()).length > maxLen) {
-        const len = Array.from(arr.values()).length - maxLen;
-        arr = Array.from(arr.values())
-          .sort((a, b) => b.rawPosition - a.rawPosition)
-          .slice(0, maxLen);
-        arr.map((role) => `<@&${role.id}>`);
-        arr.push(`${len} more...`);
-      }
-      return arr.join(", ");
-    }
-    const Roles =
-      (await member.roles.cache.size) < 25
-        ? Array.from(roles.cache.values())
-            .sort((a, b) => b.rawPosition - a.rawPosition)
-            .map((role) => `<@&${role.id}>`)
-            .join(", ")
-        : roles.cache.size > 25
-        ? trimArray(roles.cache)
-        : "None";
-
-    japiRest.discord.getUser(user.id).then((user) => {
-      data = user.data;
-      fetch(data);
-    });
-
-    async function fetch(data) {
-      const badges = data.public_flags_array
-        ? data.public_flags_array.map((flag) => {
-            return flags[flag];
-          })
-        : "No Badges.";
-
-      const fetchh = require("axios");
-
-      let userdata = await fetchh.get(
-        `https://discord.com/api/users/${user.id}`,
-        {
-          headers: {
-            Authorization: `Bot ${client.token}`,
-          },
-        }
-      );
-      let banner = userdata.data.banner;
-      //if (!banner && !userdata.data.accent_color) banner = "a_" + userdata.data.accent_color.toString(16);
-      if (banner) {
-        fileType = banner.startsWith("a_") ? ".gif" : ".png";
-        const url = `https://cdn.discordapp.com/banners/${user.id}/${banner}${fileType}?size=1024`;
-        const UserInfoEm = new EmbedBuilder()
-          .setColor("2f3136")
-          .setTitle("**WHO THE HELL IS THIS?**")
-          .setThumbnail(member.user.displayAvatarURL({ dynamic: true }))
-          .setImage(`${url}`)
-          .setDescription(
-            `
-                      **Name:** \`${member.user.username}\`
-                      > Nickname: **${member.nickname == null ? "No nickname set" : member.nickname}**
-                      > Tag: **${member.user.tag}**
-                      > ID: **${member.user.id}**
-                      > Avatar: [PNG](${avpng})\n
-                       **Creation:** <t:${parseInt(
-                         member.user.createdTimestamp / 1000
-                       )}:R>
-                       **Joined:** <t:${parseInt(
-                         member.joinedTimestamp / 1000
-                       )}:R>
-                       **Bot:** ${isBot}
-                       **Discord Badges:** ${badges}\n         
-                       **Highest Role:** \n${highestRole}\n
-                       **Roles:** \n${Roles}\n
-                       **Permissions:** \n\`\`\`ini\n[ ${memberPermissons} ]\`\`\``
-          )
-          .setFooter({
-            text: "©️ Holana",
-            iconURL: "https://ellie.gcoms.xyz/Ellise",
-          });
-        await interaction.reply({
-          content: `Information about **${member.user.tag}**`,
-          embeds: [UserInfoEm],
-        });
-      } else {
-        const UserInfoEm = new EmbedBuilder()
-          .setColor("2f3136")
-          .setTitle("**WHO THE HELL IS THIS?**")
-          .setThumbnail(member.user.displayAvatarURL({ dynamic: true }))
-          .setDescription(
-            `
-                      **Name:** \`${member.user.username}\`
-                      > Nickname: **${member.nickname == null ? "No nickname set" : member.nickname}**
-                      > Tag: **${member.user.tag}**
-                      > ID: **${member.user.id}**
-                      > Avatar: [Click here](${avpng})\n
-                       **Creation:** <t:${parseInt(
-                         member.user.createdTimestamp / 1000
-                       )}:R>
-                       **Joined:** <t:${parseInt(
-                         member.joinedTimestamp / 1000
-                       )}:R>
-                       **Bot:** ${isBot}
-                       **Discord Badges:** ${badges}\n         
-                       **Highest Role:** \n${highestRole}\n
-                       **Roles:** \n${Roles}\n
-                       **Permissions:** \n\`\`\`ini\n[ ${memberPermissons} ]\`\`\``
-          )
-          .setFooter({
-            text: "©️ Holana",
-            iconURL: "https://ellie.gcoms.xyz/Ellise",
-          });
-        await interaction.reply({
-          content: `Information about **${member.user.tag}**`,
-          embeds: [UserInfoEm],
-        });
-      }
-    }
-  },
-};
\ No newline at end of file
diff --git a/utils/message.js b/utils/messages.js
similarity index 100%
rename from utils/message.js
rename to utils/messages.js
diff --git a/utils/slashsync.js b/utils/slashsync.js
deleted file mode 100644
index a38291a..0000000
--- a/utils/slashsync.js
+++ /dev/null
@@ -1,55 +0,0 @@
-const Discord = require('discord.js');
-
-module.exports = async(client, commands, options = {
-  debug: false,
-  guildId: null
-}) => {
-
-  const log = (message) => options.debug && console.log(message);
-
-  const ready = client.readyAt ? Promise.resolve() : new Promise(resolve => client.once('ready', resolve));
-  await ready;
-  const currentCommands = await client.application.commands.fetch(options.guildId && { guildId: options.guildId });
-
-  log(`Synchronizing commands...`);
-  log(`Currently ${currentCommands.size} commands are registered to the bot.`);
-
-  const newCommands = commands.filter((command) => !currentCommands.some((c) => c.name === command.name));
-  for (let newCommand of newCommands) {
-      await client.application.commands.create(newCommand, options.guildId);
-  }
-
-  log(`Created ${newCommands.length} commands!`);
-
-  const deletedCommands = currentCommands.filter((command) => !commands.some((c) => c.name === command.name)).toJSON();
-  for (let deletedCommand of deletedCommands) {
-      await deletedCommand.delete();
-  }
-
-  log(`Deleted ${deletedCommands.length} commands!`);
-
-  const updatedCommands = commands.filter((command) => currentCommands.some((c) => c.name === command.name));
-  let updatedCommandCount = 0;
-  for (let updatedCommand of updatedCommands) {
-      const newCommand = updatedCommand;
-      const previousCommand = currentCommands.find((c) => c.name === updatedCommand.name);
-      let modified = false;
-      if (previousCommand.description !== newCommand.description) modified = true;
-      if (!Discord.ApplicationCommand.optionsEqual(previousCommand.options ?? [], newCommand.options ?? [])) modified = true;
-      if (modified) {
-          await previousCommand.edit(newCommand);
-          updatedCommandCount++;
-      }
-  }
-
-  log(`Updated ${updatedCommandCount} commands!`);
-
-  log(`Commands synchronized!`);
-
-  return {
-    currentCommandCount: currentCommands.size,
-    newCommandCount: newCommands.length,
-    deletedCommandCount: deletedCommands.length,
-    updatedCommandCount
-  };
-}
\ No newline at end of file