diff --git a/.gitignore b/.gitignore
index 74b7586..211d86a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,5 @@
 
 # vercel
 .vercel
+
+.direnv/
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1a80597..5b6467b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,6 +4,7 @@
         "Captchas",
         "Carrington",
         "Cavendon",
+        "Clicksmas",
         "Customise",
         "RSMV",
         "Statethis",
@@ -27,7 +28,11 @@
         "slowmode",
         "softban",
         "svgr",
+        "tsparticles",
         "unban",
         "viewas"
+    ],
+    "githubPullRequests.ignoredPullRequestBranches": [
+        "production"
     ]
 }
\ No newline at end of file
diff --git a/Components/Card.js b/Components/Card.js
index c4a31c6..7f9330f 100644
--- a/Components/Card.js
+++ b/Components/Card.js
@@ -40,7 +40,7 @@
         } else if (this.props.icon) {
             icons = <img alt={this.props.title} className={Styles.image} src={`https://assets.clicks.codes/${this.props.icon}.svg`} />
         } else if (this.props.wave) {
-            icons = <img alt={this.props.title} className={Styles.image} src={`https://assets.clicks.codes//${this.props.wave}.svg`} />
+            icons = <img alt={this.props.title} className={Styles.image} src={`https://assets.clicks.codes/web/waves/card/${this.props.wave}.svg`} />
         }
         return <>{icons}</>;
     }
diff --git a/Components/Header.js b/Components/Header.js
index b89c0e0..f28c853 100644
--- a/Components/Header.js
+++ b/Components/Header.js
@@ -4,6 +4,7 @@
 import Head from 'next/head';
 import { useReward } from "react-rewards";
 import ScrollContainer from 'react-indiana-drag-scroll'
+import { Paragraph } from "./Texttools.js"
 
 const positive = [
     "https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f389.svg",
@@ -34,76 +35,6 @@
 
 function Header(props) {
     const keys = Object.keys(props.effects ?? {});
-    const changingSubtextEffect = keys.includes("changingSubtext");
-    const typedEffect = keys.includes("type") || changingSubtextEffect;
-
-
-    const [ clickTotal, setClickTotal ] = React.useState(0);
-    const [ currText, setCurrentText ] = React.useState(typedEffect ? "" : (props.subtext ?? ""));
-    const [ hasRendered, setHasRendered ] = React.useState(false);
-
-    function typeText(currentText, toType) {
-        let count = 0;
-        let interval = setInterval(() => {
-            setCurrentText(currentText + toType.substring(0, count));
-            count++;
-            if (count > toType.length) {
-                clearInterval(interval);
-            }
-        }, props.effects.type ?? 50);
-        return currentText + toType
-    }
-
-    function unTypeText(currentText, amount) {
-        let count = 0;
-        const permanentText = currentText.slice(0, currentText.length - amount);
-        let toRemove = currentText.slice(currentText.length - amount, currentText.length);
-        let interval = setInterval(() => {
-            toRemove = toRemove.slice(0, toRemove.length - 1);
-            setCurrentText(permanentText + toRemove);
-            count++;
-            if (count >= amount) {
-                clearInterval(interval);
-            }
-        }, 500 / amount);
-        return permanentText;
-    }
-
-    function startAnimations() {
-        setHasRendered(true);
-        if (!changingSubtextEffect && typedEffect) return typeText("", props.subtext);
-        if (changingSubtextEffect && typedEffect) {
-            let lastPicked = -1;
-            function selectNextString() {
-                if (Math.floor(Math.random() * 100) === 0) {
-                    return props.effects.changingSubtext.rare[Math.floor(Math.random() * props.effects.changingSubtext.rare.length)];
-                }
-                let selectedIndex = lastPicked
-                while (selectedIndex === lastPicked) {
-                    selectedIndex = Math.floor(Math.random() * props.effects.changingSubtext.common.length);
-                }
-                lastPicked = selectedIndex;
-                return props.effects.changingSubtext.common[selectedIndex];
-            }
-            let nextString = selectNextString();
-            let currentText = typeText("", props.subtext + nextString);
-            setTimeout(() => {
-                function next() {
-                    setTimeout(() => {
-                        setTimeout(() => {
-                            nextString = selectNextString();
-                            currentText = typeText(currentText, nextString);
-                        }, 1000);
-                        currentText = unTypeText(currentText, nextString.length);
-                    }, 4000);
-                }
-                next()
-                setInterval(() => {
-                    next()
-                }, 5000);
-            }, 3000);
-        }
-    }
 
     const { reward: reward, isAnimating: isAnimating } = useReward('headerConfetti', 'confetti', {
         elementSize: 10,
@@ -128,6 +59,7 @@
 
     const all = positive.concat(negative)
     const [imagesPreloaded, setImagesPreloaded] = useState(false)
+    const [clickTotal, setClickTotal] = useState(0)
     useEffect(() => {
         let isCancelled = false
         async function effect() {
@@ -174,15 +106,16 @@
             }
         }
     }
-
-    if (!hasRendered) startAnimations();
+    const season = props.season ?? { season: "normal", filePath: "normal" };
 
     return (
-        <div className={Styles.header}  style={{
+        <div className={Styles.header} style={{
             margin: "0",
             minHeight: props.fullscreen ? "calc(100vh - 42px)" : "calc(100vh - (4 * max(2em, 4vw)) - 1em)",
+            transform: season.season === "aprilFools" ? "rotate(2.5deg)" : "none",
+            transition: "transform 1s cubic-bezier(.47,1.64,.41,.8), background-color 0.3s ease-in-out"
         }} id={props.id ? props.id : null}>
-            <div className={Styles.container} style={{minHeight: props.fullscreen ? "calc(100vh - 42px)" : "calc(100vh - (4 * max(2em, 4vw)) - 1em)",}}>
+            <div className={Styles.container} style={{minHeight: props.fullscreen ? "calc(100vh - 42px)" : "calc(100vh - (4 * max(2em, 4vw)) - 1em)"}}>
                 {imagesPreloaded}
                 <div className={Styles.backgroundGradient} style={{
                     backgroundImage: `linear-gradient(69.44deg, #${props.gradient[0]} 0%, #${props.gradient[1]} 100%)`,
@@ -222,8 +155,11 @@
                         <h1 className={Styles.title}>{props.name}</h1>
                     </div>
                     <div className={Styles.textBar}>
-                        <p className={Styles.subtext + " " + (props.buttons.length ? Styles.subtextExtra : null)}>{currText}</p>
-                        { typedEffect ? <div className={Styles.typedEffect} /> : <></> }
+                        {
+                            typeof props.subtext === "string" ?
+                            <p className={Styles.subtext + " " + (props.buttons.length ? Styles.subtextExtra : null)}>{props.subtext}</p> :
+                            props.subtext
+                        }
                     </div>
                     <a href="#skipNav" id="skipNav" style={{display: "none"}} />
                     { props.buttons.length ?
diff --git a/Components/NavBar.js b/Components/NavBar.js
index 6ea02c9..2e620b4 100644
--- a/Components/NavBar.js
+++ b/Components/NavBar.js
@@ -18,17 +18,18 @@
     }
 
     render() {
+        const season = this.props.season.filePath;
         return (
             <div className={Styles.cutoffContainer}>
                 <div className={Styles.container + " " + (this.props.subBar ? Styles.slideUp : null)}>
                     <a href="#skipNav" className={Styles.skipNav}>Skip navigation</a>
                     <a className={Styles.icon} href="/"><img alt="Clicks" className={Styles.icon} src="https://assets.clicks.codes/web/logos/clicks.svg" /></a>
                     <Divider />
-                    <a className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src="https://assets.clicks.codes/bots/gps/circle.svg" /></a>
-                    <a className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src="https://assets.clicks.codes/bots/rsm/circle.svg" /></a>
-                    {/* <a className={Styles.icon} href="/nucleus#"><img alt="Nucleus" className={Styles.icon} src="https://assets.clicks.codes/bots/nucleus/circle.svg" /></a> */}
-                    <a className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src="https://assets.clicks.codes/bots/clicksforms/circle.svg" /></a>
-                    <a className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src="https://assets.clicks.codes/bots/hooky/circle.svg" /></a>
+                    <a className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src={`https://assets.clicks.codes/bots/gps/${season}.svg`} /></a>
+                    {/* <a className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src={`https://assets.clicks.codes/bots/rsm/${season}.svg`} /></a> */}
+                    <a className={Styles.icon} href="/nucleus"><img alt="Nucleus" className={Styles.icon} src={`https://assets.clicks.codes/bots/nucleus/${season}.svg`} /></a>
+                    <a className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src={`https://assets.clicks.codes/bots/clicksforms/${season}.svg`} /></a>
+                    <a className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src={`https://assets.clicks.codes/bots/hooky/${season}.svg`} /></a>
                     <Divider />
                     <ThemeChangeButton/>
                 </div>
diff --git a/Components/Panels.js b/Components/Panels.js
index 7aaa658..b700cf7 100644
--- a/Components/Panels.js
+++ b/Components/Panels.js
@@ -6,6 +6,7 @@
 class PanelClass extends Component {
     constructor(props) {
         super(props);
+        this.panel = react.createRef();
     }
 
     getStyle() {
@@ -16,12 +17,20 @@
     }
 
     render() {
-        return <div className={Styles.panel} style={this.getStyle()} id={this.props.id} tabIndex={0}>
-                {
-                    react.Children.toArray(this.props.children).map((child, index) => {
-                        return child;
-                    })
-                }
+        let style = this.getStyle();
+        if (this.props.forceStyle) {
+            style = {...style, ...this.props.forceStyle};
+            if (this.props.forceStyle.transform) {
+                style = {...this.getStyle(), transition: "transform ease-in-out 0.5s"};
+                style.transform += " " + this.props.forceStyle.transform;
+            }
+        }
+        return <div className={Styles.panel} style={style} id={this.props.id} tabIndex={0}>
+            {
+                react.Children.toArray(this.props.children).map((child, index) => {
+                    return child;
+                })
+            }
         </div>
     }
 }
@@ -30,13 +39,12 @@
 class AutoLayout extends Component {
     constructor(props) {
         super(props);
-        this.children = react.Children.toArray(this.props.children)
         this.validity = []
         this.calculateValidity()
     }
 
     calculateValidity() {
-        this.children.map((item, index) => {
+        react.Children.toArray(this.props.children).map((item, index) => {
             if ( index > 0 && item.props.halfSize && this.validity[index - 1] === 'half1' ) {
                 this.validity[index] = 'half2';
             } else if ( index > 0 && !item.props.halfSize && this.validity[index - 1] === 'half1' ) {
@@ -56,16 +64,17 @@
     }
 
     render() {
+        const children = react.Children.toArray(this.props.children)
         return (
-            <div className={Styles.container}>
+            <div className={Styles.container} ref={this.props.forwardedRef}>
                 {
-                    this.children.map((item, index) => {
+                    children.map((item, index) => {
                         if ( this.validity[index] === 'full' ) {
-                            return this.children[index]
+                            return children[index]
                         } else if ( this.validity[index] === 'half1' ) {
                             return <div key={index} className={Styles.doublePanel}>
-                                {this.children[index]}
-                                {this.children[index + 1]}
+                                {children[index]}
+                                {children[index + 1]}
                             </div>
                         }
                     })
diff --git a/Components/Texttools.js b/Components/Texttools.js
index 57fddc0..76fa8cf 100644
--- a/Components/Texttools.js
+++ b/Components/Texttools.js
@@ -48,11 +48,11 @@
     }
 
     render() {
-        return <pre
+        return <span
             className={Styles.code}
             style={{color: `#${this.props.colour}`}}
             onClick={this.props.clickable ? () => this.clicked() : () => this.clicked()}
-        >{this.state.isPopoverOpen ? "Copied!" : this.props.children}</pre>
+        >{this.state.isPopoverOpen ? "Copied!" : this.props.children}</span>
     }
 }
 
diff --git a/Components/Transcripts/Attachment.js b/Components/Transcripts/Attachment.js
new file mode 100644
index 0000000..ddad85f
--- /dev/null
+++ b/Components/Transcripts/Attachment.js
@@ -0,0 +1,11 @@
+import Styles from "../../styles/Components/transcripts.module.css"
+
+function attachment(props) {
+    return (
+        <div className={Styles.attachment}>
+            <a className={Styles.attachmentLink} href={props.attachment.url} target="_blank" rel="noreferrer" >{props.attachment.name}</a>
+        </div>
+    )
+}
+
+export default attachment;
\ No newline at end of file
diff --git a/Components/Transcripts/Author.js b/Components/Transcripts/Author.js
new file mode 100644
index 0000000..c096b69
--- /dev/null
+++ b/Components/Transcripts/Author.js
@@ -0,0 +1,33 @@
+import Image from "next/image";
+import Styles from "../../styles/Components/transcripts.module.css"
+import * as hdate from 'human-date'
+
+function Author(props) {
+    const today = props.message.createdTimestamp - (1000 * 60 * 60 * 24) > 0;
+    const last2days = props.message.createdTimestamp - (1000 * 60 * 60 * 24 * 2) > 0;
+    const date = new Date(props.message.createdTimestamp)
+    let timeDelta;
+    if (today) {
+        timeDelta = "Today";
+    } else if (last2days) {
+        timeDelta = "Yesterday";
+    } else {
+        timeDelta = hdate.prettyPrint(date).split(", ")[0];
+    }
+    timeDelta += ` at ${date.getHours()}:${date.getMinutes()}`
+    return (
+        <div className={Styles.verticalFlex} style={{width: "calc(100vw - 60px - 40px)"}}>
+            <div className={Styles.horizontalFlex}>
+                <p style={{color: props.message.author.topRole.color ? props.message.author.topRole.color + " !important" : "var(--theme-ui-colors-text)"}} className={Styles.authorText}>
+                    {props.message.author.username}#{props.message.author.discriminator}
+                </p>
+                {props.message.author.topRole.badge ? <Image src={props.message.author.topRole.badge} width={20} height={20} alt=""/> : null}
+                {props.message.author.bot ? <div className={Styles.botBadge}>BOT</div> : ""}
+                <p style={{color: "#888888", margin: "0", fontSize: "20px"}}>{timeDelta.toString()}</p>
+            </div>
+        </div>
+    )
+
+}
+
+export default Author;
diff --git a/Components/Transcripts/Embed.js b/Components/Transcripts/Embed.js
new file mode 100644
index 0000000..d793b98
--- /dev/null
+++ b/Components/Transcripts/Embed.js
@@ -0,0 +1,97 @@
+import Styles from "../../styles/Components/transcripts.module.css"
+import Image from "next/image";
+import Showdown from "showdown";
+import Axios from "axios";
+import { useEffect, useState } from "react";
+
+const bold = /(\*\*.+\*\*)/g;
+const italic = /(\*.+\*|\_.+\_)/g;
+const emoji = /(<a?:.+:\D+>)/g;
+const user = /(<@!?\d+>)/g;
+const underline = /(\_\_.+\_\_)/g;
+const strikethrough = /(\~\~.+\~\~)/g;
+const code = /(\`.+\`)/g;
+const codeBlock = /(\`\`\`.+\`\`\`)/g;
+const spoiler = /(\`\`\`.+\`\`\`)/g;
+
+const regex = /(\*\*\*.+\*\*\*|\*\*.+\*\*|\*.+\*|\_.+\_|\_\_.+\_\_|\~\~.+\~\~|\`.+\`|\`\`\`.+\`\`\`|\`\`\`.+\`\`\`|<a?:.+:\D+>|<@!?\d+>|<#\d+>)/g;
+
+async function parse(text) {
+    const splitText = text.split(regex);
+    console.log(splitText)
+    return await splitText.map( async (item, index) => {
+        if (item.match(bold)) {
+            return <b key={index}>{item.replaceAll(/\*\*/g, '')}</b>
+        }
+        if (item.match(underline)) {
+            return <u key={index}>{item.replaceAll(/\_\_/g, '')}</u>
+        }
+        if (item.match(italic)) {
+            return <i key={index}>{item.replaceAll(/\*/g, '')}</i>
+        }
+        if (item.match(code)) {
+            return <code key={index}>{item.replaceAll(/\`/g, '')}</code>
+        }
+        if (item.match(emoji)) {
+            return <Image key={index} src={`https://cdn.discord.com/emojis/${item.replaceAll(/\D/g, '')}`} width={20} height={20} alt="" />
+        }
+        if (item.match(user)) {
+            const username = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}users/${item.replaceAll(/\D/g, '')}`)).data;
+            console.log(username)
+            return <>{username}</>
+
+        }
+        return item
+    })
+
+
+}
+
+function Embed(props) {
+
+    let description = props.embed.description;
+    if (description) {
+        description = description.split("\n");
+    }
+
+    return (
+        <div className={Styles.embed} style={{borderColor: props.color ?? "#F27878"}}>
+            {
+                props.embed.author ?
+                <div className={Styles.embedAuthor}>
+                    {
+                        props.embed.author.iconURL ?
+                        <Image src={props.embed.author.iconURL} alt=""/> :
+                        null
+                    }
+                    {
+                        props.embed.author.url ?
+                        <a href={props.embed.author.url}>
+                            {props.embed.author?.name ?? ""}
+                        </a> :
+                        <p>{props.embed.author?.name ?? ""}</p>
+                    }
+                </div> :
+                null
+            }
+            {
+                props.embed.title ?
+                <div className={Styles.embedTitle}>{props.embed.title}</div> :
+                null
+            }
+            {
+                props.embed.description ?
+                <div className={Styles.embedDescription}>
+                    {
+                        description.map((item) => {
+                            return <>{item}<br /></>;
+                        })
+                    }
+                </div>
+                : null
+            }
+        </div>
+    )
+}
+
+export default Embed;
diff --git a/Components/Transcripts/Message.js b/Components/Transcripts/Message.js
new file mode 100644
index 0000000..2a74d62
--- /dev/null
+++ b/Components/Transcripts/Message.js
@@ -0,0 +1,32 @@
+import Styles from "../../styles/Components/transcripts.module.css"
+import Author from "./Author";
+import Image from "next/image";
+import Attachment from "./Attachment";
+import Embed from "./Embed";
+
+function message(props) {
+
+    return (
+        <div className={Styles.container}>
+            <div className={Styles.verticalFlex} style={{width: "60px"}}>
+                <Image className={Styles.avatar} src={props.message.author.iconURL ?? "https://picsum.photos/50"} width={50} height={50} alt=""/>  {/* TODO: Add a cync icon here as a default*/}
+            </div>
+            <div className={Styles.verticalFlex} style={{width: "calc(100vw - 60px - 40px)"}}>
+                <Author message={props.message} />
+                <p className={Styles.messageContent}>{props.message.content}</p>
+                {
+                    props.message.embeds ? props.message.embeds.map((embed, index) => {
+                        return <Embed key={index.toString()} embed={embed} />
+                    }) : null
+                }
+                {
+                    props.message.attachments ? props.message.attachments.map((attachment, index) => {
+                        return <Attachment key={index.toString()} attachment={attachment} alt="" />
+                    }) : null
+                }
+            </div>
+        </div>
+    )
+}
+
+export default message;
\ No newline at end of file
diff --git a/Components/overlays/christmas.js b/Components/overlays/christmas.js
new file mode 100644
index 0000000..dc2283e
--- /dev/null
+++ b/Components/overlays/christmas.js
@@ -0,0 +1,17 @@
+import React from "react";
+import Snowfall from 'react-snowfall'
+
+React.useLayoutEffect = React.useEffect
+
+function Christmas({  }) {
+    return (
+        <div style={{width: "100%", height: "100%"}}>
+            <Snowfall
+                snowflakeCount={100}
+                color="#C4C4C4AA"
+            />
+        </div>
+    )
+}
+
+export default Christmas;
diff --git a/embed/index.js b/embed/index.js
new file mode 100644
index 0000000..7ef2ced
--- /dev/null
+++ b/embed/index.js
@@ -0,0 +1,106 @@
+import HCaptcha from 'react-hcaptcha';
+import Axios from 'axios';
+import Router from 'next/router';
+import React from 'react';
+import Header from '../../../Components/Header'
+import { useReward } from 'react-rewards';
+import { Card, CardRow } from '../../../Components/Card';
+
+import { AutoLayout, Panel, Title, Text, Divider } from '../../../Components/Panels';
+import { List, ListItem } from '../../../Components/Texttools';
+import { useColorMode } from 'theme-ui';
+import Styles from '../../../styles/nucleus/embed.module.css';
+
+
+function Embed(props) {
+    const [clicked, setClicked] = React.useState(false);
+    const [theme, setTheme] = useColorMode()
+
+    const { reward: reward, isAnimating: isAnimating } = useReward('confetti', 'confetti', {
+        elementSize: 10,
+        elementCount: 150,
+        startVelocity: 35,
+        lifetime: 300,
+        decay: 0.94,
+        spread: 170,
+        position: "absolute",
+        colors: ["#68D49E"]
+    });
+
+    async function submitForm(tkn) {
+        if ( clicked ) {
+            Router.push('/nucleus/verify/alreadyVerified', '/nucleus/verify/success');
+        }
+        setClicked(true);
+        reward();
+        let code = await Axios.post('/api/nucleus/verify/complete', {
+            code: props.code,
+            tkn: tkn
+        });
+        setTimeout(() => {
+            if (code.data.success === true ) return Router.push('/nucleus/verify/success','/nucleus/verify')
+            else return Router.push('/nucleus/verify/failure','/nucleus/verify')
+        }, 2500);
+    }
+
+    return <>
+        <Header
+            name="Embed Editor"
+            subtext={`Editing embed in ${props.gName}`}
+            gradient={["F27878", "D96B6B"]}
+            wave="web/waves/header/nucleus"
+            buttons={[]}
+        />
+        <AutoLayout>
+            <Panel>
+                <Title>Preview</Title>
+                <Divider name="preview"/>
+                <div className={Styles.previewEmbed}>
+                    <div className={Styles.left}></div>
+                        <div className={Styles.title}><input ></input></div>
+                        <div className={Styles.description}><input ></input></div>
+                    </div>
+                    <div className={Styles.right}>
+                        <div className={Styles.uploadImage} />
+                    </div>
+                    <>
+
+                    </>
+                <div className={Styles.footer}>
+                    <ImageUpload size={64} />
+                </div>
+            </Panel>
+            <Panel halfSize={false} id="invite">
+            <Title>Invite</Title>
+            <Divider />
+            <CardRow>
+                <Card
+                    wave="nucleus"
+                    icon="bots/nucleus/circle"
+                    buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+                    title="Nucleus"
+                    subtext="Invite Nucleus to your server"
+                    buttons={[
+                        {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
+                    ]}
+                    url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
+                />
+            </CardRow>
+        </Panel>
+        </AutoLayout>
+    </>
+}
+
+export default Embed;
+export async function getServerSideProps(ctx) {
+    return {
+        props: {
+            gID: code.data.gID,
+            gName: code.data.gName,
+            mID: code.data.mID,
+            cID: code.data.cID,
+            headers: headers,
+            code: ctx.query.code
+        }
+    }
+}
\ No newline at end of file
diff --git a/next.config.js b/next.config.js
index 33c5c8e..4d67c66 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,3 +1,5 @@
+require('dotenv').config();
+
 module.exports = {
   reactStrictMode: true,
   webpack(config) {
@@ -34,5 +36,11 @@
         ]
       },
     ];
+  },
+  images: {
+    domains: ["picsum.photos", "cdn.discordapp.com"]
+  },
+  env: {
+    NUCLEUS_CALLBACK: process.env.NUCLEUS_CALLBACK,
   }
-};
\ No newline at end of file
+};
diff --git a/package.json b/package.json
index 107f685..5f9eea4 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,7 @@
     "build": "ANALYZE=true NODE_ENV=production next build",
     "start": "next start",
     "lint": "next lint",
-    "windev": "next dev",
+    "windev": "next dev -p 3030",
     "winbuild": "next build"
   },
   "dependencies": {
@@ -15,9 +15,14 @@
     "@next/bundle-analyzer": "^12.1.6",
     "@svgr/webpack": "^5.5.0",
     "axios": "^0.21.1",
+    "dotenv": "^16.0.3",
+    "fs": "^0.0.1-security",
+    "human-date": "^1.4.0",
     "js-cookie": "^3.0.1",
     "js-cookies": "^1.0.4",
+    "jsdom": "^21.1.0",
     "mongodb": "^4.1.1",
+    "net": "^1.0.2",
     "next": "^12.2.2",
     "next-redux-wrapper": "^7.0.4",
     "next-safe": "^3.2.1",
@@ -27,14 +32,18 @@
     "react-fade-in": "^2.0.1",
     "react-fast-marquee": "^1.3.1",
     "react-hcaptcha": "^0.1.1",
-    "react-in-viewport": "^1.0.0-alpha.20",
+    "react-in-viewport": "^1.0.0-alpha.29",
     "react-indiana-drag-scroll": "^2.1.0",
     "react-redux": "^7.2.4",
     "react-rewards": "^2.0.3",
+    "react-snowfall": "^1.2.1",
     "react-tiny-popover": "^7.0.1",
     "redux": "^4.1.1",
     "redux-thunk": "^2.3.0",
-    "theme-ui": "^0.12.0"
+    "showdown": "^2.1.0",
+    "theme-ui": "^0.12.0",
+    "tls": "^0.0.1",
+    "tsparticles": "^2.5.3"
   },
   "devDependencies": {
     "eslint": "7.32.0",
diff --git a/pages/01189998819991197253.js b/pages/01189998819991197253.js
index 88b3f13..768763f 100644
--- a/pages/01189998819991197253.js
+++ b/pages/01189998819991197253.js
@@ -28,6 +28,7 @@
                     props.showMessage(quotes[Math.floor(Math.random() * quotes.length)])
                 })}]}
                 fullscreen={true}
+                season={props.season}
             />
         </>
     )
diff --git a/pages/403.js b/pages/403.js
index ca404b1..cb2127f 100644
--- a/pages/403.js
+++ b/pages/403.js
@@ -6,7 +6,6 @@
         super(props);
     }
 
-
     render() {
         return (
             <>
@@ -17,6 +16,7 @@
                     wave="web/waves/header/rsm"
                     buttons={[{color: "F27878", buttonText: "ffffff", text: "Go Home", link: "/#"}]}
                     fullscreen={true}
+                    season={this.props.season}
                 />
             </>
         )
diff --git a/pages/404.js b/pages/404.js
index a9bdce5..9e62237 100644
--- a/pages/404.js
+++ b/pages/404.js
@@ -6,7 +6,6 @@
         super(props);
     }
 
-
     render() {
         return (
             <>
@@ -22,6 +21,7 @@
                             target: true
                     }]}
                     fullscreen={true}
+                    season={this.props.season}
                 />
             </>
         )
diff --git a/pages/418.js b/pages/418.js
index 68daf86..c240c21 100644
--- a/pages/418.js
+++ b/pages/418.js
@@ -6,7 +6,6 @@
         super(props);
     }
 
-
     render() {
         return (
             <>
@@ -17,6 +16,7 @@
                     wave="web/waves/header/rsm"
                     buttons={[{color: "F27878", buttonText: "ffffff", text: "Go Home", link: "/#"}]}
                     fullscreen={true}
+                    season={this.props.season}
                 />
             </>
         )
diff --git a/pages/500.js b/pages/500.js
index f0c12ef..7ec247d 100644
--- a/pages/500.js
+++ b/pages/500.js
@@ -6,7 +6,6 @@
         super(props);
     }
 
-
     render() {
         return (
             <>
@@ -22,6 +21,7 @@
                             target: true
                     }]}
                     fullscreen={true}
+                    season={this.props.season}
                 />
             </>
         )
diff --git a/pages/_app.js b/pages/_app.js
index a94db64..f09cb57 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -1,8 +1,10 @@
 import '../styles/globals.css';
 import NavBar from '../Components/NavBar';
 import { ThemeProvider } from 'theme-ui';
-import React from 'react';
+import React, {useEffect} from 'react';
+import { useRouter } from 'next/router';
 import Styles from '../styles/globals.module.css';
+import Christmas from '../Components/overlays/christmas';
 
 const theme = {
     config: {
@@ -13,6 +15,7 @@
         text: '#424242',
         background: '#ffffff',
         primary: '#6576CC',
+        highlight: '#78ECF2',
         cardText: '#ffffff',
         cardBackground: 'rgba(255, 255, 255, 0.65)',
         cardBorder: '#C4C4C4',
@@ -31,6 +34,7 @@
                 text: '#ffffff',
                 background: '#000000',
                 primary: '#6576CC',
+                highlight: '#78ECF2',
                 cardText: '#424242',
                 cardBackground: 'rgba(0, 0, 0, 0.65)',
                 cardBorder: '#424242',
@@ -53,6 +57,22 @@
     const [subBar, setSubBar] = React.useState(false);
     const [currentElement, setElement] = React.useState(<></>);
 
+    const router = useRouter();
+    const [season, setSeason] = React.useState({ season: "normal", filePath: "normal" });
+
+    useEffect(() => async () => {
+        const params = router.query["theme"];
+        if (params) {
+        setSeason({season: params, filePath: "seasonal/" + params});
+            return;
+        }
+        let newSeason = await (await fetch("/api/season")).json();
+        // newSeason = {season: "trans", filePath: "seasonal/trans"}
+        setSeason({...newSeason });
+        // const params = "aprilFools"
+        // setSeason({season: params, filePath: "seasonal/" + params});
+    }, [season.season, router])
+
     const showSubBar = (element, timeout, positioning="left") => {
         setSubBar(true);
         if (positioning === "center") {
@@ -61,7 +81,7 @@
         setElement(element);
         if (timeout) {
             setTimeout(() => {
-                setSubBar(false);
+            setSubBar(false);
                 setTimeout(() => {
                     setElement(<></>);
                 }, 0.31 * 1000)
@@ -77,6 +97,14 @@
         showSubBar(<p className={Styles.message}>{text}</p>, 5, positioning);
     }
 
+    let Overlay = <></>;
+    switch (season.season) {
+        case "christmas": {
+            Overlay = <Christmas />;
+            break;
+        }
+    }
+
     return <>
         <ThemeProvider theme={theme}>
         <NavBar
@@ -86,16 +114,22 @@
             setElement={setElement}
             showMessage={showMessage}
             showSubBar={showSubBar}
+            season={season}
         />
         <Component
             {...pageProps}
             showSubBar={showSubBar}
             hideSubBar={hideSubBar}
             showMessage={showMessage}
+            season={season}
         />
+        <div className={Styles.container} style={{
+            pointerEvents: "none",
+            height: "1000vh"
+        }}>{Overlay}</div>
         <div className={Styles.container} />
         </ThemeProvider>
     </>
 }
 
-export default App
+export default App;
diff --git a/pages/api/nucleus/verify/complete.js b/pages/api/nucleus/verify/complete.js
index cdffc2e..d8b6a0f 100644
--- a/pages/api/nucleus/verify/complete.js
+++ b/pages/api/nucleus/verify/complete.js
@@ -11,7 +11,7 @@
         return res.status(200).send({success: false})
     }
     try {
-        await Axios.post(`${process.env.VERIFY_CALLBACK}/verify/${req.body.code}`, {
+        await Axios.post(`${process.env.NUCLEUS_CALLBACK}verify/${req.body.code}`, {
             secret: process.env.VERIFY_SECRET
         });
     } catch (e) {
@@ -20,4 +20,4 @@
     return res.status(200).send({success: true});
 }
 
-export default Complete;
\ No newline at end of file
+export default Complete;
diff --git a/pages/api/rsmv/complete.js b/pages/api/rsmv/complete.js
deleted file mode 100644
index 9b2ea9e..0000000
--- a/pages/api/rsmv/complete.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import Axios from 'axios';
-
-const Complete = async (req, res) => {
-    let code = await Axios.post('http://127.0.0.1:3000/api/rsmv/validate', {code:req.body.code});
-    if (code.status !== 200) {
-        return res.send(404);
-    }
-    if (code.data.user  !== req.body.uid) return res.send(401)
-    if (code.data.guild !== req.body.gid) return res.send(401)
-    if (code.data.role  !== req.body.rid) return res.send(401)
-
-    let secret = process.env.VERIFY_SECRET;
-    let resp = await Axios.get(
-        `http://localhost:10000/verify/${req.body.gid}/${req.body.rid}/${req.body.uid}/${secret}/${req.body.code}`
-    )
-    return res.send(resp.status);
-}
-
-export default Complete;
\ No newline at end of file
diff --git a/pages/api/rsmv/validate.js b/pages/api/rsmv/validate.js
deleted file mode 100644
index e0c4de1..0000000
--- a/pages/api/rsmv/validate.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import Axios from 'axios';
-
-const Validate = async (req, res) => {
-    try {
-        var out = await Axios.get(`http://localhost:10000/verify/${req.body.code}`)
-        out = out.data
-        let props = {
-            user: out.user,
-            role: out.role,
-            role_name: out.role_name,
-            guild: out.guild,
-            guild_name: out.guild_name,
-            guild_icon_url: out.guild_icon_url,
-            guild_size: out.guild_size
-        }
-        return res.status(200).send(props)
-    } catch (err) {
-        return res.status(400).end()
-    }
-}
-
-export default Validate;
\ No newline at end of file
diff --git a/pages/api/rsmv/verifyTkn.js b/pages/api/rsmv/verifyTkn.js
deleted file mode 100644
index 50eb77e..0000000
--- a/pages/api/rsmv/verifyTkn.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import Axios from 'axios';
-import qs from 'querystring';
-
-const verifyTkn = async (req, res) => {
-    const chk = await Axios.post('https://hcaptcha.com/siteverify', qs.stringify({
-            response: req.body.tkn,
-            secret: '0x19C699BFfce07b2a026121DE6702706BB2d51D6c',
-            sitekey: '85074411-fa13-4d9b-b901-53095c6d1fc6'
-        }))
-
-    return res.send({ success: chk.data.success });
-}
-
-export default verifyTkn;
\ No newline at end of file
diff --git a/pages/api/season.js b/pages/api/season.js
new file mode 100644
index 0000000..fe3e262
--- /dev/null
+++ b/pages/api/season.js
@@ -0,0 +1,55 @@
+function daysIntoSeason(date) {
+    return Math.floor((new Date().getTime() - date.getTime()) / (1000 * 60 * 60 * 24))
+}
+
+function daysSinceDate(date) {
+    // If the date is after today, make it last year
+    if (date > new Date()) {
+        date.setFullYear(date.getFullYear() - 1);
+    }
+    return Math.floor((new Date().getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
+}
+
+function getSeason() {
+    let year = new Date().getFullYear();
+
+    const dates = {
+        pride: [new Date(`${year}-6-1`), new Date(`${year}-6-31`)],
+        halloween: [new Date(`${year}-10-25`), new Date(`${year}-11-1`)],
+        trans: [new Date(`${year}-11-13`), new Date(`${year}-11-19`)],
+        christmas: [new Date(`${year}-12-1`), new Date(`${year}-12-26`)],
+        aprilFools: [new Date(`${year}-04-01`), new Date(`${year}-04-01`)]
+    }
+    const filePaths = {
+        normal: "normal",
+        halloween: "seasonal/halloween",
+        christmas: "seasonal/christmas",
+        pride: "seasonal/pride",
+        trans: "seasonal/trans",
+        aprilFools: "seasonal/aprilFools"
+    }
+
+    let current = new Date();
+    let currentSeason = Object.keys(dates).find((str) => current >= dates[str][0] && current <= dates[str][1]) || "normal";
+    let currentDaysIntoSeason;
+    if (currentSeason !== "normal") {
+        currentDaysIntoSeason = daysIntoSeason(dates[currentSeason][0])
+    } else {
+        // Calculate how many days it has been since each season ended
+        let days = Object.keys(dates).map((str) => daysSinceDate(dates[str][1]))
+        currentDaysIntoSeason = Math.min(...days) - 1;
+    }
+
+    return {
+        season: currentSeason,
+        filePath: filePaths[currentSeason],
+        daysIntoSeason: currentDaysIntoSeason
+    }
+}
+
+const Season = async (req, res) => {
+    return res.status(200).send(getSeason());
+}
+
+export default Season;
+export { getSeason };
diff --git a/pages/castaway.js b/pages/castaway.js
index 9ad8ca8..370156d 100644
--- a/pages/castaway.js
+++ b/pages/castaway.js
@@ -1,7 +1,7 @@
 import Header from '../Components/Header'
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 
-export default function Home() {
+export default function Home(props) {
   return (
     <>
       <Header
@@ -12,6 +12,7 @@
         buttons={[
           {color: "78ECF2", buttonText: "000000", link: "#timeline", text: "Timeline"}
         ]}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={false} id="timeline">
diff --git a/pages/clicksforms.js b/pages/clicksforms.js
index 155d605..ebf9a09 100644
--- a/pages/clicksforms.js
+++ b/pages/clicksforms.js
@@ -33,6 +33,7 @@
             {id: "invite", color: "775EBF", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
           ]}
           callback={() => this.highlightSection()}
+          season={this.props.season}
         />
         <AutoLayout>
           <Panel halfSize={true} id="commands">
diff --git a/pages/clicksforms/error/deleted.js b/pages/clicksforms/error/deleted.js
index 0d7a49b..8d78a9f 100644
--- a/pages/clicksforms/error/deleted.js
+++ b/pages/clicksforms/error/deleted.js
@@ -15,6 +15,7 @@
                 wave="web/waves/header/rsm"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/clicksforms/error/nocode.js b/pages/clicksforms/error/nocode.js
index dfb7b6e..f8955ec 100644
--- a/pages/clicksforms/error/nocode.js
+++ b/pages/clicksforms/error/nocode.js
@@ -15,6 +15,7 @@
                 wave="web/waves/header/rsm"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/clicksforms/error/unknown.js b/pages/clicksforms/error/unknown.js
index e3ab125..4cd1e9c 100644
--- a/pages/clicksforms/error/unknown.js
+++ b/pages/clicksforms/error/unknown.js
@@ -15,6 +15,7 @@
                 wave="web/waves/header/rsm"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/clicksforms/form.js b/pages/clicksforms/form.js
index aa1b032..38cfcb5 100644
--- a/pages/clicksforms/form.js
+++ b/pages/clicksforms/form.js
@@ -6,7 +6,7 @@
 export default class Form extends Component {
     constructor(props) {
         super(props);
-}
+    }
 
     render() {
         return (
@@ -17,6 +17,7 @@
                     gradient={["71AFE5", "6576CC"]}
                     wave="web/waves/header/clicksforms"
                     buttons={[]}
+                    season={this.props.season}
                 />
                 <div className={Styles.form}>
                     <div className={Styles.header}>
diff --git a/pages/cpm.js b/pages/cpm.js
index 97bffee..a016676 100644
--- a/pages/cpm.js
+++ b/pages/cpm.js
@@ -4,7 +4,7 @@
 import Header from '../Components/Header';
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 
-export default function Home() {
+export default function Home(props) {
   return (
     <>
       <Header
@@ -13,6 +13,10 @@
         gradient={["6576CC", "4B5899"]}
         wave="web/waves/header/cmp"
         buttons={[]}
+        index={true}
+        fullscreen={true}
+        showSubBar={props.showSubBar}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={false}>
@@ -103,7 +107,7 @@
           <Text>Your parents were right, this place is terrifying</Text>
           <CardRow>
           <Card
-            wave="discord" title="Discord" subtext="No, dat cord sorry for the confusion"
+            wave="discord" title="This cord" subtext="No, dat cord sorry for the confusion"
             icon="web/icons/discord"
             buttons={[
               {color: "404EED", link: "https://discord.gg/bPaNnxe", text: "Join"}
diff --git a/pages/gps.js b/pages/gps.js
index 8b2e194..0e64c39 100644
--- a/pages/gps.js
+++ b/pages/gps.js
@@ -3,7 +3,7 @@
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 import { List, ListItem, Code } from '../Components/Texttools';
 
-export default function Home() {
+export default function Home(props) {
   return (
     <>
       <Header
@@ -16,6 +16,7 @@
           {color: "71AFE5", buttonText: "FFFFFF", link: "#commands", text: "Commands"},
           {color: "6576CC", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
         ]}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={false} id="features">
diff --git a/pages/hooky.js b/pages/hooky.js
index b204daf..921dde1 100644
--- a/pages/hooky.js
+++ b/pages/hooky.js
@@ -2,7 +2,7 @@
 import Header from '../Components/Header'
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 
-export default function Home() {
+export default function Home(props) {
   return (
     <>
       <Header
@@ -13,6 +13,7 @@
         buttons={[
           {color: "EDC575", buttonText: "000000", link: "#invite", text: "Invite"}
         ]}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={false} id="invite">
diff --git a/pages/index.js b/pages/index.js
index dbd1779..cd06ddb 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -2,14 +2,31 @@
 import Header from '../Components/Header';
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 
-const duplicate = (arr, numberOfRepetitions) => arr.flatMap(i => Array.from({ length: numberOfRepetitions }).fill(i));
 
 export default function Home(props) {
+  let subtext = ""
+  switch (props.season.season) {
+    case "christmas": {
+      subtext = "Merry Christmas!"
+      break;
+    }
+    case "halloween": {
+      subtext = "Happy Halloween!"
+      break;
+    }
+    default: {
+      subtext = "Creating projects that click"
+    }
+  }
+  const aprilFoolsStyle = props.season.season === "aprilFools" ? {
+    transform: props.season.season === "aprilFools" ? "rotate(1deg)" : "none"
+  } : {};
+
   return (
     <>
       <Header
         name="Clicks"
-        subtext="We develop "
+        subtext={subtext}
         customImage="https://assets.clicks.codes/web/logos/clicks.svg"
         embedImage="https://assets.clicks.codes/web/logos/clicks.png"
         gradient={["6576CC", "4B5899"]}
@@ -18,14 +35,10 @@
         index={true}
         fullscreen={true}
         showSubBar={props.showSubBar}
-        effects={{ type: 50, changingSubtext: {
-          common: [
-            "websites", "Discord bots", "utilities", "APIs"
-          ], rare: ["overly complicated header animations"]
-        }}}
+        season={props.season}
       />
       <AutoLayout>
-        <Panel halfSize={false}>
+        <Panel halfSize={false} forceStyle={aprilFoolsStyle}>
           <Title>Projects</Title>
           <Divider />
           <Text>{"Here's things we've released and are in the making"}</Text>
@@ -42,14 +55,14 @@
               showMessage={props.showMessage}
             />
             <Card
-              wave="rsm" title="RSM" subtext="Moderation Redefined"
-              icon="bots/rsm/circle"
+              wave="nucleus" title="Nucleus" subtext="The core of your server"
+              icon="bots/nucleus/circle"
               buttons={[
-                {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands",text:"Invite"},
-                {color: "424242", link: "/rsm", text:"About"}
+                {color: "424242", link: "https://discordapp.com/api/oauth2/authorize?client_id=715989276382462053&permissions=396173372662&scope=bot%20applications.commands",text:"Invite"},
+                {color: "424242", link: "/nucleus", text:"About"}
               ]}
               buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
-              url="/rsm"
+              url="/nucleus"
               showMessage={props.showMessage}
             />
             <Card
@@ -92,7 +105,7 @@
             />
           </CardRow>
         </Panel>
-        <Panel halfSize={true}>
+        <Panel halfSize={true} forceStyle={aprilFoolsStyle}>
           <Title>Code Bases</Title>
           <Divider />
           <Text>We release open source projects in a few different places depending on the language and purpose</Text>
@@ -117,7 +130,7 @@
             />
           </CardRow>
         </Panel>
-        <Panel halfSize={true}>
+        <Panel halfSize={true} forceStyle={aprilFoolsStyle}>
           <Title>Socials</Title>
           <Divider />
           <Text>{"We've got Discord, feel free to ask us anything"}</Text>
diff --git a/pages/nucleus.js b/pages/nucleus.js
index 5155597..c287d0f 100644
--- a/pages/nucleus.js
+++ b/pages/nucleus.js
@@ -4,7 +4,7 @@
 import { List, ListItem, Code } from '../Components/Texttools';
 import { useColorMode } from 'theme-ui';
 
-export default function Home() {
+export default function Home(props) {
   const [theme, setTheme] = useColorMode()
 
   return (
@@ -22,6 +22,7 @@
           {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
           {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
         ]}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={true} id="commands">
diff --git "a/pages/nucleus/transcript/\133code\135/human.js" "b/pages/nucleus/transcript/\133code\135/human.js"
new file mode 100644
index 0000000..6af671e
--- /dev/null
+++ "b/pages/nucleus/transcript/\133code\135/human.js"
@@ -0,0 +1,31 @@
+import Axios from 'axios';
+
+const t = () => { return <></>}
+export default t
+export async function getServerSideProps(ctx) {
+    if(!ctx.params.code) {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/about',
+                permanent: true
+            }
+        }
+    }
+    let code;
+    try {
+        code = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}transcript/${ctx.params.code}?key=${ctx.query.key}&iv=${ctx.query.iv}`))
+    } catch (e) {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/invalid',
+                permanent: true
+            }
+        }
+    }
+    return {
+        redirect: {
+            destination: `${process.env.NUCLEUS_CALLBACK}transcript/${ctx.params.code}?key=${ctx.query.key}&iv=${ctx.query.iv}/human`,
+            permanent: true
+        }
+    }
+}
diff --git "a/pages/nucleus/transcript/\133code\135/index.js" "b/pages/nucleus/transcript/\133code\135/index.js"
new file mode 100644
index 0000000..55e9d51
--- /dev/null
+++ "b/pages/nucleus/transcript/\133code\135/index.js"
@@ -0,0 +1,166 @@
+import Axios from 'axios';
+import React from 'react';
+import Message from '../../../../Components/Transcripts/Message';
+import _ from 'lodash';
+
+const emojiRegex = /(<a?:.+:\D+>)/g;
+const userRegex = /(<@!?\d+>)/g;
+const channelRegex = /(<#\d+>)/g;
+
+async function parseText(text) {
+    const dict = {
+        "emojis": {},
+        "users": {},
+        "channels": {}
+    }
+    const emojis = text.match(emojiRegex);
+    if (emojis) {
+        for (let i = 0; i < emojis.length; i++) {
+            const emoji = emojis[i];
+            const emojiID = emoji.replaceAll(/\D/g, '');
+            const emojiURL = `https://cdn.discord.com/emojis/${emojiID}`;
+            dict["emojis"][emoji] = emojiURL;
+        }
+    }
+    const users = text.match(userRegex);
+    if (users) {
+        for (let i = 0; i < users.length; i++) {
+            const user = users[i];
+            const userID = user.replaceAll(/\D/g, '');
+            const username = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}users/${userID}`)).data;
+            dict["users"][user.replaceAll(/<@|>/g, '')] = username;
+        }
+    }
+    const channels = text.match(channelRegex);
+    if (channels) {
+        for (let i = 0; i < channels.length; i++) {
+            const channel = channels[i];
+            const channelID = channel.replaceAll(/\D/g, '');
+            const channelName = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}channels/${channelID}`)).data;
+            dict["channels"][channel] = channelName;
+        }
+    }
+    // console.log("parseText", dict)
+    return dict
+}
+
+async function parse(json) {
+    let dict = {
+        "emojis": {},
+        "users": {},
+        "channels": {}
+    }
+
+    await _.forEach(json, async (message, index) => {
+        let thisMessage = {}
+        if(message.content) {
+            let parsed = await parseText(message.content)
+            // console.log(parsed)
+            _.assign(thisMessage, parsed)
+        }
+        if(message.embeds) {
+            _.forEach(message.embeds, async (embed, _index) => {
+                // console.log(embed)
+                if(embed.description) {
+                    let parsed = await parseText(embed.description)
+                    _.assign(thisMessage, parsed)
+                }
+                if(embed.title) {
+                    let parsed = await parseText(embed.title)
+                    _.assign(thisMessage, parsed)
+                }
+                if(embed.fields) {
+                    _.forEach(embed.fields, async (field, _index) => {
+                        if(field.name) {
+                            let parsed = await parseText(field.name)
+                            _.assign(thisMessage, parsed)
+                        }
+                        if(field.value) {
+                            let parsed = await parseText(field.value)
+                            _.assign(thisMessage, parsed)
+                        }
+                    })
+                }
+            })
+        }
+        // console.log(thisMessage)
+        _.assign(dict, thisMessage)
+        // console.log(index, dict)
+    })
+
+    // console.log("dict", dict)
+    return dict;
+}
+
+function Index(props) {
+    return <div style={{overflowY: "scroll", overflowX: "hidden"}}>
+        <div style={{
+            width: "100vw",
+            height: "40px",
+            backgroundColor: "#F27878",
+            display: "flex",
+            justifyContent: "left",
+            alignItems: "center",
+            paddingLeft: "25px",
+            color: "white",
+            fontSize: "1.5em",
+        }}>Transcript for: {props.data.for.username}#{props.data.for.discriminator} | In #{<a style={{color: "var(--theme-ui-colors-highlight)", textDecoration: "underline"}} href={`https://discord.com/channels/${props.data.guild}/${props.data.channel}`}>{props.channelName}</a>} | Type: {props.data.type}</div>
+        <div style={{
+            width: "100vw",
+            backgroundColor: "var(--theme-ui-colors-background)", //Can we change this to be not black please. it's too contrast heavy
+            margintop: "-50px",
+            padding: "25px",
+            paddingTop: "10px",
+            transition: "all 0.3s ease-in-out"
+        }}>
+        {
+            props.data.messages.map((message, index) => {
+                return <Message key={index.toString()} message={message} />
+            })
+        }
+        </div>
+    </div>
+}
+
+export default Index;
+export async function getServerSideProps(ctx) {
+    if(!ctx.params.code) {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/about',
+                permanent: true
+            }
+        }
+    }
+    /*return {
+        redirect: {
+            destination: `/nucleus/transcript/${ctx.params.code}/human?key=${ctx.query.key}&iv=${ctx.query.iv}`,
+            permanent: true
+        }
+    }*/
+    let code;
+    console.log("getting props")
+    try {
+        code = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}transcript/${ctx.params.code}?key=${ctx.query.key}&iv=${ctx.query.iv}`));
+    } catch (e) {
+	console.log(e)
+	console.log(`${process.env.NUCLEUS_CALLBACK}transcript/${ctx.params.code}?key=${ctx.query.key}&iv=${ctx.query.iv}`)
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/invalid',
+                permanent: true
+            }
+        }
+    }
+    const linkedData = await parse(code.data.messages)
+
+    const channelName = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}channels/${code.data.channel}`)).data;
+
+    return {
+        props: {
+            data: code.data,
+            linkedData,
+            channelName
+        }
+    }
+}
diff --git "a/pages/nucleus/transcript/\133code\135/raw.js" "b/pages/nucleus/transcript/\133code\135/raw.js"
new file mode 100644
index 0000000..f06c64f
--- /dev/null
+++ "b/pages/nucleus/transcript/\133code\135/raw.js"
@@ -0,0 +1,32 @@
+import Axios from 'axios';
+
+const t = () => { return <></>}
+export default t
+export async function getServerSideProps(ctx) {
+    console.log(ctx.req.url)
+    if(!ctx.params.code) {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/about',
+                permanent: true
+            }
+        }
+    }
+    let code;
+    try {
+        code = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}transcript/${ctx.params.code}`))
+    } catch (e) {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/invalid',
+                permanent: true
+            }
+        }
+    }
+    return {
+        redirect: {
+            destination: `${process.env.NUCLEUS_CALLBACK}transcript/${ctx.params.code}`,
+            permanent: true
+        }
+    }
+}
diff --git a/pages/nucleus/transcript/about.js b/pages/nucleus/transcript/about.js
new file mode 100644
index 0000000..088e2d3
--- /dev/null
+++ b/pages/nucleus/transcript/about.js
@@ -0,0 +1,71 @@
+import React, { Component } from 'react'
+import Header from '../../../Components/Header'
+import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../../../Components/Panels'
+import { Code } from '../../../Components/Texttools'
+import { Card, CardRow } from '../../../Components/Card'
+import HCaptcha from 'react-hcaptcha';
+import { useReward } from 'react-rewards';
+
+function About(props) {
+    const { reward, isAnimating } = useReward('confetti', 'confetti', {
+        elementSize: 12,
+        spread: 85,
+        position: "absolute",
+        colors: ["#F27878", "#E5AB71", "#E5DC71", "#A1CC65", "#68D49E", "#71AFE5", "#6576CC", "#8D58B2", "#BF5E9F"]
+    });
+
+    return (
+        <>
+            <Header
+                name="Nucleus Transcripts"
+                subtext="Review purged messages in a channel"
+                customImage={"https://assets.clicks.codes/web/logos/nucleus.svg"}
+                embedImage={"https://assets.clicks.codes/bots/nucleus/normal.png"}
+                gradient={["F27878", "D96B6B"]}
+                wave="web/waves/header/nucleus"
+                buttons={[
+                    {color: "424242", buttonText: "FFFFFF", link: "#about", text: "About"},
+                    {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
+                    {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
+                ]}
+                season={props.season}
+            />
+            <AutoLayout>
+                <Panel halfSize={false} id="about">
+                    <Title>About Transcripts</Title>
+                    <Divider />
+                    <Text>Transcripts are generated whenever a purge command is run, or a ticket is deleted (and transcripts are enabled).</Text>
+                    <Text>These store the messages, authors, and the content for future reference.</Text>
+                    <Text>When the transcript is created, you will get a link to our website to view it.</Text>
+                    <Text>Images and files are not stored, and are not available in transcripts.</Text>
+                </Panel>
+                <Panel halfSize={true} id="privacy">
+                    <Title>Privacy</Title>
+                    <Divider />
+                    <Text>Transcripts can be viewed by anyone online if they have the URL. These are random to avoid this happening by chance.</Text>
+                    <Text>The code is long enough that it is hard to guess any specific code. The URL is not linked to your server in any way.</Text>
+                    <Text>All transcripts for your server can be deleted from <Code colour="F27878">/privacy</Code>.</Text>
+                </Panel>
+                <Panel halfSize={true} id="invite">
+                    <Title>Invite</Title>
+                    <Divider />
+                    <CardRow>
+                        <Card
+                            wave="nucleus"
+                            icon="bots/nucleus/circle"
+                            buttonText={"FFFFFF"} gradient={["F27878", "D96B6B"]}
+                            title="Nucleus"
+                            subtext="Invite Nucleus to your server"
+                            buttons={[
+                                {color: "424242", link: "https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands", text: "Invite"}
+                            ]}
+                            url="https://discord.com/api/oauth2/authorize?client_id=715989276382462053&permissions=121295465718&scope=bot%20applications.commands"
+                        />
+                    </CardRow>
+                </Panel>
+            </AutoLayout>
+        </>
+    )
+}
+
+export default About;
\ No newline at end of file
diff --git a/pages/nucleus/transcript/invalid.js b/pages/nucleus/transcript/invalid.js
new file mode 100644
index 0000000..8491aeb
--- /dev/null
+++ b/pages/nucleus/transcript/invalid.js
@@ -0,0 +1,26 @@
+import { Component } from 'react'
+import Link from 'next/link'
+import Header from '../../../Components/Header'
+
+class Failed extends Component {
+    constructor(props) {
+        super(props)
+    }
+
+    render() {
+        return (
+            <Header
+                name="Transcript does not exist"
+                subtext={<p>No transcripts matched that code. If you believe this is a mistake, please submit a report in <Link href="https://discord.gg/bPaNnxe" target="_blank" rel="noopener noreferrer">our server</Link></p>}
+                gradient={["F27878", "D96B6B"]}
+                wave="web/waves/header/nucleus"
+                buttons={[]}
+                fullscreen={true}
+                season={this.props.season}
+            />
+        )
+    }
+
+}
+
+export default Failed;
\ No newline at end of file
diff --git a/pages/nucleus/transcript/testing.js b/pages/nucleus/transcript/testing.js
new file mode 100644
index 0000000..87e9a2c
--- /dev/null
+++ b/pages/nucleus/transcript/testing.js
@@ -0,0 +1,58 @@
+import React from 'react';
+
+function Testing(props) {
+    return <>
+        <div style={{
+            width: "100vw",
+            height: "40px",
+            backgroundColor: "#F27878",
+            display: "flex",
+            justifyContent: "left",
+            alignItems: "center",
+            paddingLeft: "25px",
+            color: "white",
+            fontSize: "1.5em",
+        }}>Nucleus Transcripts</div>
+        <div style={{
+            height: "100vw",
+            width: "100vw",
+            backgroundColor: "var(--theme-ui-colors-background)",
+            margintop: "-50px",
+            padding: "25px",
+            paddingTop: "10px",
+            transition: "all 0.3s ease-in-out"
+        }}>
+            {
+                props.humanReadable.split("\n").map((s, i) => {
+                    return <p key={i}>{s}</p>
+                })
+            }
+        </div>
+    </>
+}
+
+export default Testing;
+export async function getServerSideProps(ctx) {
+    if(!ctx.query.code) {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/about',
+                permanent: true
+            }
+        }
+    }
+    if (ctx.query.code === "test") {
+        return {
+            props: {
+                humanReadable: "This is a test string! It should render correctly on the page\nAnd a newline!"
+            }
+        }
+    } else {
+        return {
+            redirect: {
+                destination: '/nucleus/transcript/invalid',
+                permanent: true
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/pages/nucleus/verify/about.js b/pages/nucleus/verify/about.js
index 08e7f00..b827bac 100644
--- a/pages/nucleus/verify/about.js
+++ b/pages/nucleus/verify/about.js
@@ -28,6 +28,7 @@
                     {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
                     {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
                 ]}
+                season={props.season}
             />
             <AutoLayout>
                 <Panel halfSize={false} id="about">
diff --git a/pages/nucleus/verify/alreadyVerified.js b/pages/nucleus/verify/alreadyVerified.js
index c31290a..4a49571 100644
--- a/pages/nucleus/verify/alreadyVerified.js
+++ b/pages/nucleus/verify/alreadyVerified.js
@@ -15,6 +15,7 @@
                 wave="web/waves/header/nucleus"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/nucleus/verify/failure.js b/pages/nucleus/verify/failure.js
index 61b58d0..12fdc26 100644
--- a/pages/nucleus/verify/failure.js
+++ b/pages/nucleus/verify/failure.js
@@ -1,4 +1,5 @@
 import { Component } from 'react'
+import Link from 'next/link'
 import Header from '../../../Components/Header'
 
 class Failed extends Component {
@@ -10,11 +11,14 @@
         return (
             <Header
                 name="Verification failed"
-                subtext={<p>Please try again, and if the error persists please contact us at <a href="mailto:verification@clicks.codes" target="_blank" rel="noopener noreferrer">verification@clicks.codes</a></p>}
+                subtext={
+                    <p>Please try again, and if the error persists please contact us at <Link href="mailto:verification@clicks.codes" target="_blank" rel="noopener noreferrer">verification@clicks.codes</Link></p>
+                }
                 gradient={["F27878", "D96B6B"]}
                 wave="web/waves/header/nucleus"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/nucleus/verify/index.js b/pages/nucleus/verify/index.js
index 38a3aea..24a0a90 100644
--- a/pages/nucleus/verify/index.js
+++ b/pages/nucleus/verify/index.js
@@ -49,6 +49,7 @@
             gradient={["F27878", "D96B6B"]}
             wave="web/waves/header/nucleus"
             buttons={[]}
+            season={props.season}
         />
         <AutoLayout>
             <Panel>
@@ -86,7 +87,7 @@
     }
     let code;
     try {
-        code = await Axios.get(`http://localhost:10000/verify/${ctx.query.code}`);
+        code = await Axios.get(`${process.env.NUCLEUS_CALLBACK}verify/${ctx.query.code}`);
     } catch (e) {
         return {
             redirect: {
@@ -108,4 +109,4 @@
             code: ctx.query.code
         }
     }
-}
\ No newline at end of file
+}
diff --git a/pages/nucleus/verify/success.js b/pages/nucleus/verify/success.js
index e5def5d..cc6e010 100644
--- a/pages/nucleus/verify/success.js
+++ b/pages/nucleus/verify/success.js
@@ -22,6 +22,7 @@
                     }
                 ]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/nucleus/verify/testing.js b/pages/nucleus/verify/testing.js
index 42ac53d..e441110 100644
--- a/pages/nucleus/verify/testing.js
+++ b/pages/nucleus/verify/testing.js
@@ -50,6 +50,7 @@
             gradient={["F27878", "D96B6B"]}
             wave="web/waves/header/nucleus"
             buttons={[]}
+            season={props.season}
         />
         <AutoLayout>
             <Panel>
diff --git a/pages/privacy.js b/pages/privacy.js
index 1652796..4f5f365 100644
--- a/pages/privacy.js
+++ b/pages/privacy.js
@@ -3,7 +3,7 @@
 import { List, ListItem, Code } from '../Components/Texttools';
 
 
-export default function Home() {
+export default function Home(props) {
     return (
         <>
             <Header
@@ -12,6 +12,7 @@
                 gradient={["71AFE5", "6576CC"]}
                 wave="web/waves/header/clicksforms"
                 buttons={[]}
+                season={props.season}
             />
             <AutoLayout>
                 <Panel halfSize={true}>
diff --git a/pages/rsm.js b/pages/rsm.js
index b1e9233..2d0771f 100644
--- a/pages/rsm.js
+++ b/pages/rsm.js
@@ -14,7 +14,7 @@
 // import FeatureStatistics from '../public/Features/RSM/Statistics.svg';
 // import FeatureTags from '../public/Features/RSM/Tags.svg';
 
-export default function Home() {
+export default function Home(props) {
   return (
     <>
       <Header
@@ -28,6 +28,7 @@
           {color: "424242", buttonText: "FFFFFF", link: "#privacy", text: "Privacy"},
           {color: "F27878", buttonText: "FFFFFF", link: "#invite", text: "Invite"}
         ]}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={true} id="commands">
diff --git a/pages/rsmv/failure.js b/pages/rsmv/failure.js
index f3b0feb..5508d8e 100644
--- a/pages/rsmv/failure.js
+++ b/pages/rsmv/failure.js
@@ -15,6 +15,7 @@
                 wave="web/waves/header/rsm"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/rsmv/index.js b/pages/rsmv/index.js
index 231bcc5..5740f6d 100644
--- a/pages/rsmv/index.js
+++ b/pages/rsmv/index.js
@@ -70,6 +70,7 @@
                 gradient={["F27878", "D96B6B"]}
                 wave="web/waves/header/rsm"
                 buttons={[]}
+                season={this.props.season}
             />
             <AutoLayout>
                 <Panel>
diff --git a/pages/rsmv/rsmvtesting.js b/pages/rsmv/rsmvtesting.js
index e37f1f0..6410f25 100644
--- a/pages/rsmv/rsmvtesting.js
+++ b/pages/rsmv/rsmvtesting.js
@@ -66,6 +66,7 @@
                 gradient={["F27878", "D96B6B"]}
                 wave="web/waves/header/rsm"
                 buttons={[]}
+                season={this.props.season}
             />
             <AutoLayout>
                 <Panel>
diff --git a/pages/rsmv/success.js b/pages/rsmv/success.js
index 3cf1e4f..8d0b1ea 100644
--- a/pages/rsmv/success.js
+++ b/pages/rsmv/success.js
@@ -15,6 +15,7 @@
                 wave="web/waves/header/rsm"
                 buttons={[]}
                 fullscreen={true}
+                season={this.props.season}
             />
         )
     }
diff --git a/pages/support.js b/pages/support.js
index 1c35a68..831ce5a 100644
--- a/pages/support.js
+++ b/pages/support.js
@@ -2,7 +2,7 @@
 import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
 import { List, ListItem, Code } from '../Components/Texttools';
 
-export default function Home() {
+export default function Home(props) {
   return (
     <>
       <Header
@@ -11,6 +11,7 @@
         gradient={["71AFE5", "6576CC"]}
         wave="web/waves/header/clicksforms"
         buttons={[]}
+        season={props.season}
       />
       <AutoLayout>
         <Panel halfSize={true}>
diff --git a/pages/supporters.js b/pages/supporters.js
index ac5c1b7..bd5305e 100644
--- a/pages/supporters.js
+++ b/pages/supporters.js
@@ -49,7 +49,7 @@
 
 
 
-export default function Home() {
+export default function Home(props) {
     const groups = [
         { // Devs and testers
             "TheCodedProf": "Programmer",
@@ -87,6 +87,7 @@
                 gradient={["71AFE5", "6576CC"]}
                 wave="web/waves/header/clicksforms"
                 buttons={[]}
+                season={props.season}
             />
             <AutoLayout>
                 <Panel halfSize={false}>
diff --git a/styles/Components/header.module.css b/styles/Components/header.module.css
index 1c2e3f3..17d1ee4 100644
--- a/styles/Components/header.module.css
+++ b/styles/Components/header.module.css
@@ -165,22 +165,3 @@
     margin-bottom: 0px;
     margin-top: 25px;
 }
-
-.typedEffect {
-    animation: blink-caret 1s ease-in-out infinite;
-    border-right: 0.08em solid var(--theme-ui-colors-text);
-    margin-left: 5px;
-    background-color: var(--theme-ui-colors-text);
-    height: 1.5em;
-    width: 2px;
-}
-
-@keyframes blink-caret {
-    from,
-    to {
-        opacity: 0%;
-    }
-    50% {
-        opacity: 100%;
-    }
-}
\ No newline at end of file
diff --git a/styles/Components/navbar.module.css b/styles/Components/navbar.module.css
index 2329643..394cba2 100644
--- a/styles/Components/navbar.module.css
+++ b/styles/Components/navbar.module.css
@@ -4,6 +4,7 @@
     margin: 0;
     padding: 0;
     user-select: none;
+    border-radius: 100vw;
 }
 
 .themeChangeIcon {
diff --git a/styles/Components/transcripts.module.css b/styles/Components/transcripts.module.css
new file mode 100644
index 0000000..b527263
--- /dev/null
+++ b/styles/Components/transcripts.module.css
@@ -0,0 +1,120 @@
+.horizontalFlex {
+    width: 100vw;
+    display: flex;
+    flex-direction: row;
+    justify-content: left;
+    align-items: center;
+    gap: 10px;
+}
+
+.container {
+    width: calc(100vw - 20px);
+    display: flex;
+    flex-direction: row;
+    justify-content: left;
+    align-items: top;
+    gap: 10px;
+    margin-top: 20px;
+    margin-right: 20px;
+    height: auto;
+}
+
+.verticalFlex {
+    width: 100vw;
+    display: flex;
+    flex-direction: column;
+    justify-content: left;
+    align-items: flex-start;
+    gap: 10px;
+}
+
+.avatar {
+    border-radius: 25px;
+}
+
+.botBadge {
+    background-color: #6576CC;
+    color: white;
+    border-radius: 5px;
+    padding: 2px 5px;
+    font-size: 12px;
+}
+
+.messageContent {
+    width: 100%;
+    color: var(--theme-ui-colors-text);
+    margin-block: 0;
+    transition: color 0.3s ease-in-out;
+    font-size: 20px;
+}
+.authorText {
+    width: fit-content;
+    color: var(--theme-ui-colors-text);
+    margin-block: 0;
+    transition: color 0.3s ease-in-out;
+    font-size: 20px;
+}
+
+/* Box for single attachment */
+.attachment {
+
+}
+/* Blue Link for attachmentURL */
+.attachmentLink {
+
+}
+
+/* Embed box */
+.embed {
+    border-left: solid 5px red;
+    border-radius: 5px 0 0 5px;
+    padding-left: 10px;
+}
+
+/* Embed Title*/
+.embedTitle {
+    font-size: 22px;
+    font-weight: bold;
+}
+
+/* Embed Description */
+.embedDescription {
+
+}
+
+/* Embed Thumbnail */
+.embedThumbnail {
+
+}
+
+/* Embed Image */
+.embedImage {
+
+}
+
+/* Embed Footer */
+.embedFooter {
+
+}
+
+/* Embed Author Box (IconURL, Username) */
+.embedAuthor {
+
+}
+
+.embedAuthor a {
+
+}
+
+.embedAuthor p {
+
+}
+
+.embedAuthor Image {
+
+}
+
+/* Embed Field */
+.embedField {
+
+}
diff --git a/styles/nucleus/rolemenu.module.css b/styles/nucleus/rolemenu.module.css
new file mode 100644
index 0000000..174a5ae
--- /dev/null
+++ b/styles/nucleus/rolemenu.module.css
@@ -0,0 +1,32 @@
+.optionBox {
+    display: flex;
+    flex-direction: row;
+    justify-content: left;
+    align-items: center;
+    width: 100%;
+}
+
+/* .optionBox input {
+    position: absolute;
+    opacity: 0;
+    height: 0;
+    width: 0;
+} */
+
+.options {
+    display: flex;
+    flex-direction: column;
+    gap: 10px;
+    justify-content: left;
+    align-items: center;
+    width: fit-content;
+    height: 100%;
+}
+
+/* .option {
+    height: 20px;
+    width: 20px;
+    position: absolute;
+    border: solid 5px red !important;
+    background-color: blue;
+} */
\ No newline at end of file
diff --git a/todo/rolemenu/index.js b/todo/rolemenu/index.js
new file mode 100644
index 0000000..b233a45
--- /dev/null
+++ b/todo/rolemenu/index.js
@@ -0,0 +1,131 @@
+import Axios from 'axios';
+import Router from 'next/router';
+import React from 'react';
+import Header from '../../Components/Header'
+import { useReward } from 'react-rewards';
+
+import { AutoLayout, Panel, Title, Text, Divider } from '../../Components/Panels';
+import { useColorMode } from 'theme-ui';
+import Styles from '../../../styles/nucleus/rolemenu.module.css';
+
+function RoleMenu(props) {
+    const [clicked, setClicked] = React.useState(false);
+    const [formState, setFormState] = React.useState({});
+    const [theme, setTheme] = useColorMode()
+
+    const { reward: reward, isAnimating: isAnimating } = useReward('confetti', 'confetti', {
+        elementSize: 10,
+        elementCount: 150,
+        startVelocity: 35,
+        lifetime: 300,
+        decay: 0.94,
+        spread: 170,
+        position: "absolute",
+        colors: ["#68D49E"]
+    });
+
+    function handleChange(event) {
+        const { name, value } = event.target;
+        setFormState({ ...formState, [name]: value });
+    }
+
+    async function submitForm() {
+        if (!isAnimating) reward();
+        return
+        let code = await Axios.post('/api/nucleus/rolemenu/complete', {
+            code: props.code
+        });
+        setTimeout(() => {
+            if (code.data.success === true ) return Router.push('/nucleus/rolemenu/success','/nucleus/rolemenu')
+            else return Router.push('/nucleus/rolemenu/failure','/nucleus/rolemenu')
+        }, 2500);
+    }
+
+    return <>
+        <Header
+            name={props.guildName}
+            customImage={props.guildIcon}
+            roundImage={true}
+            subtext={`Welcome, ${props.username}`}
+            gradient={["F27878", "D96B6B"]}
+            wave="web/waves/header/nucleus"
+            buttons={[]}
+        />
+        <form onSubmit={submitForm}>
+            <AutoLayout>
+                {props.data.map((item, index) => {
+                    return <Panel key={index} halfSize={true}>
+                        <Title>{item.name}</Title>
+                        <Divider/>
+                        <Text>{item.description}</Text>
+                        <div className={Styles.options}>
+                            {
+                                item.options.map((props, optionIndex) => {return <div key={optionIndex} className={Styles.optionBox}>
+                                    <input
+                                        type={item.max === 1 ? "radio" : "checkbox"}
+                                        style={{borderRadius: item.max === 1 ? "50%" : "5px"}}
+                                        className={Styles.option}
+                                        key={item.name + optionIndex}
+                                        id={item.name + optionIndex.toString()}
+                                        name={item.name}
+                                        value={props.name}
+                                        onChange={handleChange}
+                                    />
+                                    <label htmlFor={item.name + optionIndex.toString()}>{props.name}</label>
+                                </div>})
+                            }
+                        </div>
+                    </Panel>
+                })}
+                <Panel halfSize={false}>
+                    <Title>Save</Title>
+                    <Divider/>
+                    <Text>
+                        After selecting all your roles, click the button below to save your choices.
+                    </Text>
+                    <div id="confetti" />
+                    <div className={Styles.submit}>
+                        <button type="submit" disabled={isAnimating}>
+                            {isAnimating ? "Saving..." : "Save"}
+                        </button>
+                    </div>
+                </Panel>
+            </AutoLayout>
+        </form>
+    </>
+}
+
+export default RoleMenu;
+export async function getServerSideProps(ctx) {
+    if(!ctx.query.code) {
+        return {
+            redirect: {
+                destination: '/nucleus',
+                permanent: true
+            }
+        }
+    }
+    let code;
+    try {
+        code = (await Axios.get(`${process.env.NUCLEUS_CALLBACK}rolemenu/${ctx.query.code}`)).data;
+    } catch (e) {
+        return {
+            redirect: {
+                destination: '/nucleus/rolemenu/failure',
+                permanent: true
+            }
+        }
+    }
+    let headers = ctx.req.headers;
+    return {
+        props: {
+            guild: code.guild,
+            guildName: code.guildName,
+            guildIcon: code.guildIcon,
+            user: code.user,
+            username: code.username,
+            data: code.data,
+            headers: headers
+        }
+    }
+}
diff --git a/yarn.lock b/yarn.lock
index bf66de1..27f33d2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2269,6 +2269,11 @@
     "@theme-ui/css" "0.12.1"
     "@theme-ui/mdx" "0.12.1"
 
+"@tootallnate/once@2":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
+  integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
 "@trysound/sax@0.2.0":
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
@@ -2395,12 +2400,25 @@
     "@typescript-eslint/types" "4.33.0"
     eslint-visitor-keys "^2.0.0"
 
+abab@^2.0.6:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
+  integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
+
+acorn-globals@^7.0.0:
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3"
+  integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==
+  dependencies:
+    acorn "^8.1.0"
+    acorn-walk "^8.0.2"
+
 acorn-jsx@^5.3.1:
   version "5.3.2"
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
   integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
-acorn-walk@^8.0.0:
+acorn-walk@^8.0.0, acorn-walk@^8.0.2:
   version "8.2.0"
   resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
   integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
@@ -2415,6 +2433,18 @@
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
   integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
 
+acorn@^8.1.0, acorn@^8.8.1:
+  version "8.8.2"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
+  integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
+agent-base@6:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+  integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+  dependencies:
+    debug "4"
+
 ajv@^6.10.0, ajv@^6.12.4:
   version "6.12.6"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
@@ -2531,6 +2561,11 @@
   resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
   integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
 
+asynckit@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+  integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
 axe-core@^4.4.3:
   version "4.5.1"
   resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.1.tgz#04d561c11b6d76d096d34e9d14ba2c294fb20cdc"
@@ -2739,6 +2774,13 @@
   resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
   integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
 
+combined-stream@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+  dependencies:
+    delayed-stream "~1.0.0"
+
 commander@^6.2.0:
   version "6.2.1"
   resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
@@ -2749,6 +2791,11 @@
   resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
 
+commander@^9.0.0:
+  version "9.5.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
+  integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
+
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -2909,6 +2956,23 @@
   dependencies:
     css-tree "^1.1.2"
 
+cssom@^0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36"
+  integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==
+
+cssom@~0.3.6:
+  version "0.3.8"
+  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+  integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+  integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+  dependencies:
+    cssom "~0.3.6"
+
 csstype@^3.0.10, csstype@^3.0.2:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
@@ -2919,11 +2983,27 @@
   resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
   integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
 
+data-urls@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143"
+  integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==
+  dependencies:
+    abab "^2.0.6"
+    whatwg-mimetype "^3.0.0"
+    whatwg-url "^11.0.0"
+
 debounce@^1.2.0:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
   integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
 
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4:
+  version "4.3.4"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+  dependencies:
+    ms "2.1.2"
+
 debug@^2.6.9:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -2938,14 +3018,12 @@
   dependencies:
     ms "^2.1.1"
 
-debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4:
-  version "4.3.4"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
-  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
-  dependencies:
-    ms "2.1.2"
+decimal.js@^10.4.2:
+  version "10.4.3"
+  resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
+  integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
 
-deep-is@^0.1.3:
+deep-is@^0.1.3, deep-is@~0.1.3:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
   integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
@@ -2963,6 +3041,11 @@
     has-property-descriptors "^1.0.0"
     object-keys "^1.1.1"
 
+delayed-stream@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+  integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
 denque@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1"
@@ -3016,6 +3099,13 @@
   resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
   integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
 
+domexception@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673"
+  integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
+  dependencies:
+    webidl-conversions "^7.0.0"
+
 domhandler@^4.2.0, domhandler@^4.3.1:
   version "4.3.1"
   resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
@@ -3040,6 +3130,11 @@
     domelementtype "^2.2.0"
     domhandler "^4.2.0"
 
+dotenv@^16.0.3:
+  version "16.0.3"
+  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
+  integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
+
 duplexer@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
@@ -3082,6 +3177,11 @@
   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
 
+entities@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
+  integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
+
 error-ex@^1.3.1:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -3155,6 +3255,18 @@
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
   integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
+escodegen@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
+  integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==
+  dependencies:
+    esprima "^4.0.1"
+    estraverse "^5.2.0"
+    esutils "^2.0.2"
+    optionator "^0.8.1"
+  optionalDependencies:
+    source-map "~0.6.1"
+
 eslint-config-next@11.1.2:
   version "11.1.2"
   resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-11.1.2.tgz#73c918f2fa6120d5f65080bf3fcf6b154905707e"
@@ -3339,7 +3451,7 @@
     acorn-jsx "^5.3.1"
     eslint-visitor-keys "^1.3.0"
 
-esprima@^4.0.0:
+esprima@^4.0.0, esprima@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
   integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
@@ -3394,7 +3506,7 @@
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
   integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
 
-fast-levenshtein@^2.0.6:
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
   integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
@@ -3450,11 +3562,25 @@
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
 
+form-data@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+  integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.8"
+    mime-types "^2.1.12"
+
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
+fs@^0.0.1-security:
+  version "0.0.1-security"
+  resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4"
+  integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==
+
 function-bind@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -3612,6 +3738,42 @@
   dependencies:
     react-is "^16.7.0"
 
+html-encoding-sniffer@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
+  integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
+  dependencies:
+    whatwg-encoding "^2.0.0"
+
+http-proxy-agent@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
+  integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+  dependencies:
+    "@tootallnate/once" "2"
+    agent-base "6"
+    debug "4"
+
+https-proxy-agent@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+  integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+  dependencies:
+    agent-base "6"
+    debug "4"
+
+human-date@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/human-date/-/human-date-1.4.0.tgz#88bb62bd804d00fd12ee2f47dc3c3bbb1e55f99a"
+  integrity sha512-jhEvaL0yj8LZnphQqOylapYTLB91ZIaNuDnrHqDR/3/P1Mhil1kh1qgm75xQ/qi7iZSPKIjqrEx6kw9gTcdeuA==
+
+iconv-lite@0.6.3:
+  version "0.6.3"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3.0.0"
+
 ieee754@^1.1.13:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
@@ -3740,6 +3902,11 @@
   resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
   integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
 
+is-potential-custom-element-name@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
+  integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+
 is-regex@^1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -3804,6 +3971,38 @@
     argparse "^1.0.7"
     esprima "^4.0.0"
 
+jsdom@^21.1.0:
+  version "21.1.0"
+  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-21.1.0.tgz#d56ba4a84ed478260d83bd53dc181775f2d8e6ef"
+  integrity sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==
+  dependencies:
+    abab "^2.0.6"
+    acorn "^8.8.1"
+    acorn-globals "^7.0.0"
+    cssom "^0.5.0"
+    cssstyle "^2.3.0"
+    data-urls "^3.0.2"
+    decimal.js "^10.4.2"
+    domexception "^4.0.0"
+    escodegen "^2.0.0"
+    form-data "^4.0.0"
+    html-encoding-sniffer "^3.0.0"
+    http-proxy-agent "^5.0.0"
+    https-proxy-agent "^5.0.1"
+    is-potential-custom-element-name "^1.0.1"
+    nwsapi "^2.2.2"
+    parse5 "^7.1.1"
+    saxes "^6.0.0"
+    symbol-tree "^3.2.4"
+    tough-cookie "^4.1.2"
+    w3c-xmlserializer "^4.0.0"
+    webidl-conversions "^7.0.0"
+    whatwg-encoding "^2.0.0"
+    whatwg-mimetype "^3.0.0"
+    whatwg-url "^11.0.0"
+    ws "^8.11.0"
+    xml-name-validator "^4.0.0"
+
 jsesc@^2.5.1:
   version "2.5.2"
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@@ -3835,9 +4034,9 @@
   integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
 
 json5@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
-  integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+  integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
   dependencies:
     minimist "^1.2.0"
 
@@ -3882,6 +4081,14 @@
     prelude-ls "^1.2.1"
     type-check "~0.4.0"
 
+levn@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+  integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
+  dependencies:
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+
 lilconfig@^2.0.3:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
@@ -3973,6 +4180,18 @@
     braces "^3.0.2"
     picomatch "^2.3.1"
 
+mime-db@1.52.0:
+  version "1.52.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+  version "2.1.35"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+  dependencies:
+    mime-db "1.52.0"
+
 minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
   version "3.1.2"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -4043,6 +4262,11 @@
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
   integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
 
+net@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/net/-/net-1.0.2.tgz#d1757ec9a7fb2371d83cf4755ce3e27e10829388"
+  integrity sha512-kbhcj2SVVR4caaVnGLJKmlk2+f+oLkjqdKeQlmUtz6nGzOpbcobwVIeSURNgraV/v3tlmGIX82OcPCl0K6RbHQ==
+
 next-redux-wrapper@^7.0.4:
   version "7.0.5"
   resolved "https://registry.yarnpkg.com/next-redux-wrapper/-/next-redux-wrapper-7.0.5.tgz#109cd3fe02183b18fbd094924cfcbd21262039dc"
@@ -4103,6 +4327,11 @@
   dependencies:
     boolbase "^1.0.0"
 
+nwsapi@^2.2.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0"
+  integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==
+
 object-assign@^4.1.1:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -4194,6 +4423,18 @@
     last-call-webpack-plugin "^3.0.0"
     postcss "^8.2.1"
 
+optionator@^0.8.1:
+  version "0.8.3"
+  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+  integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+  dependencies:
+    deep-is "~0.1.3"
+    fast-levenshtein "~2.0.6"
+    levn "~0.3.0"
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+    word-wrap "~1.2.3"
+
 optionator@^0.9.1:
   version "0.9.1"
   resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
@@ -4223,6 +4464,13 @@
     json-parse-even-better-errors "^2.3.0"
     lines-and-columns "^1.1.6"
 
+parse5@^7.1.1:
+  version "7.1.2"
+  resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
+  integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+  dependencies:
+    entities "^4.4.0"
+
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -4486,6 +4734,11 @@
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
   integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
 
+prelude-ls@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+  integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
+
 progress@^2.0.0:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -4500,6 +4753,11 @@
     object-assign "^4.1.1"
     react-is "^16.13.1"
 
+psl@^1.1.33:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
+  integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
 punycode@^2.1.0, punycode@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
@@ -4510,6 +4768,11 @@
   resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
   integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
 
+querystringify@^2.1.1:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+  integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
 queue-microtask@^1.2.2:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -4528,6 +4791,11 @@
   resolved "https://registry.yarnpkg.com/react-fade-in/-/react-fade-in-2.0.1.tgz#b4bcd7dac63d6857ebcd68facbff2f5f9616278f"
   integrity sha512-oqS/WT4znaXEHmL+yo0IDUDY7uC9K4RP35j1SdRUEBspR09B2iIC0i8oJ28tPOr6Ez/L2aktF9p89j+DbsTVNw==
 
+react-fast-compare@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
+  integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+
 react-fast-marquee@^1.3.1:
   version "1.3.5"
   resolved "https://registry.yarnpkg.com/react-fast-marquee/-/react-fast-marquee-1.3.5.tgz#e53995027102fbec92da90606d7ca89703db9903"
@@ -4538,10 +4806,10 @@
   resolved "https://registry.yarnpkg.com/react-hcaptcha/-/react-hcaptcha-0.1.1.tgz#da21311166f0153054624caf5784cfd977ef31f5"
   integrity sha512-p0s7uDOZAh28dbcmP2bXsox2NmIwQ6OtDTgjCYwfe49kHeCU67Omma1DhzYiGWQJRC6eTUZEikjsm+WT7bmy2g==
 
-react-in-viewport@^1.0.0-alpha.20:
-  version "1.0.0-alpha.28"
-  resolved "https://registry.yarnpkg.com/react-in-viewport/-/react-in-viewport-1.0.0-alpha.28.tgz#3957cb7931ec26582497acd14f7c3941f020fe75"
-  integrity sha512-SjBVCPUIRfJb516BUev1u/dejBfI5jIcskDz4Irq2RezNG7D199eER8reRzZX+w/FLxz21rpdqRbJbagv5n37Q==
+react-in-viewport@^1.0.0-alpha.29:
+  version "1.0.0-alpha.29"
+  resolved "https://registry.yarnpkg.com/react-in-viewport/-/react-in-viewport-1.0.0-alpha.29.tgz#7550692dddbc2f129774d1cb3db40be7b27b9438"
+  integrity sha512-48woFq8EUWl3WWAPeyPu5T5KR26G3q8Gs64YXMRQq7aIP5YBzHIN2GvoFwdXDhT19pwcOPmlkSAYWMt0+d3ydw==
   dependencies:
     hoist-non-react-statics "^3.0.0"
 
@@ -4581,6 +4849,13 @@
   resolved "https://registry.yarnpkg.com/react-rewards/-/react-rewards-2.0.4.tgz#617f6c1bb591f74bb0e0455cc6ff355ee6d36665"
   integrity sha512-Lw7gIhD8yPDzC6boaVmcXwuTHRLSLAdqB3kZc+29YWvdHWsuc3fdAZlxI8Cm8fvD8fhP+3JkZBtzX224czw15w==
 
+react-snowfall@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/react-snowfall/-/react-snowfall-1.2.1.tgz#68cab6a1d05aa7c3211bce96a3a97977ca7dc57f"
+  integrity sha512-d2UR3nDq3F0DJGaTfJ0QNbBo76UZHtT9wHFj+ePxAl4FgSxWBhxB/Bjn06f5iDBwhgwiZ7CZmv3lwfNvjo6a+w==
+  dependencies:
+    react-fast-compare "^3.2.0"
+
 react-tiny-popover@^7.0.1:
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/react-tiny-popover/-/react-tiny-popover-7.2.0.tgz#e6277620efea6acea9c47efbfe5dcb473a552e99"
@@ -4672,6 +4947,11 @@
   resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
   integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
 
+requires-port@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+  integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
 resolve-from@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@@ -4723,6 +5003,11 @@
     get-intrinsic "^1.1.3"
     is-regex "^1.1.4"
 
+"safer-buffer@>= 2.1.2 < 3.0.0":
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
 saslprep@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
@@ -4735,6 +5020,13 @@
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
 
+saxes@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5"
+  integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
+  dependencies:
+    xmlchars "^2.2.0"
+
 scheduler@^0.23.0:
   version "0.23.0"
   resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
@@ -4766,6 +5058,13 @@
   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
   integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
+showdown@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/showdown/-/showdown-2.1.0.tgz#1251f5ed8f773f0c0c7bfc8e6fd23581f9e545c5"
+  integrity sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==
+  dependencies:
+    commander "^9.0.0"
+
 side-channel@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
@@ -5004,6 +5303,11 @@
     picocolors "^1.0.0"
     stable "^0.1.8"
 
+symbol-tree@^3.2.4:
+  version "3.2.4"
+  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+  integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
 table@^6.0.9:
   version "6.8.1"
   resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
@@ -5032,6 +5336,11 @@
     "@theme-ui/mdx" "0.12.1"
     "@theme-ui/theme-provider" "0.12.1"
 
+tls@^0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/tls/-/tls-0.0.1.tgz#0ab2bf5968d71df2f8c0e1515d24a2240b98aac8"
+  integrity sha512-GzHpG+hwupY8VMR6rYsnAhTHqT/97zT45PG8WD5eTT1lq+dFE0nN+1PYpsoBcHJgSmTz5ceK2Cv88IkPmIPOtQ==
+
 to-fast-properties@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -5049,6 +5358,16 @@
   resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
   integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
 
+tough-cookie@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874"
+  integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==
+  dependencies:
+    psl "^1.1.33"
+    punycode "^2.1.1"
+    universalify "^0.2.0"
+    url-parse "^1.5.3"
+
 tr46@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9"
@@ -5076,6 +5395,338 @@
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
   integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
 
+tsparticles-engine@^2.5.2:
+  version "2.5.2"
+  resolved "https://registry.yarnpkg.com/tsparticles-engine/-/tsparticles-engine-2.5.2.tgz#1772e857c452af806602ab0f33c90338d109f8b8"
+  integrity sha512-P2m1E/EIlvEnH9l7OEIpeKXxSn1ThNhWSp6zeRYvH/DntJpI5Oqa/AMrjum15rUzBkMDgRo7XFO4LqRWs8iB/Q==
+
+tsparticles-interaction-external-attract@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-attract/-/tsparticles-interaction-external-attract-2.5.3.tgz#18554439696ee04bb0c40afe893afcaee791ec67"
+  integrity sha512-W9w8ztCLjFK8ADROTpCBepyotTfwZdRqU6FMe0W0KU3Lj4GpR53dN7tk/YUuLtZut1DRFNH0SUh6IIuW4Oq2oQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-bounce@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-bounce/-/tsparticles-interaction-external-bounce-2.5.3.tgz#5acc056d69711f05203056112d00b4bb568f0cd5"
+  integrity sha512-z/3e8KSTm5n6kIU9KRpSr+XLz8ARDV4XuFqtDcRZBp0CXWcb2GVuuUQvHXhir1KPM3VzlHjHK8wxzqaE6TRfaw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-bubble@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-bubble/-/tsparticles-interaction-external-bubble-2.5.3.tgz#16e081b18be1cfa2560970292f7ee01ec82cdddf"
+  integrity sha512-cAXvn5ScwEku1e01CzWFMMGogvDkY/O/FnMr3kFvxztY3BeeSuj3RIwd+INp5U0L0D88hue0kL0BEIfPQLbfCA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-connect@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-connect/-/tsparticles-interaction-external-connect-2.5.3.tgz#c2cea19c60abd7658937266e3b530a73227a7f04"
+  integrity sha512-KOcNNxb4MxmDeTfnNawWtn72YaILjTvpN5zSNXRDDiYLJ9dFAuoU8jfXxTyb5EGtF6PNkU9er0KX2aA3hQNM1w==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-grab@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-grab/-/tsparticles-interaction-external-grab-2.5.3.tgz#8f6c7628c7cd59837bfbd6599151dbbd8b62e121"
+  integrity sha512-bVTdB8lojJsd+9Pm2kGuQQa9VrIq+hITn2lBQ2YVzlF+vJ4a02Nvw07PHKlnmu+EJDmMwlGmu5z1oAFaWaRGMA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-pause@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-pause/-/tsparticles-interaction-external-pause-2.5.3.tgz#bde967da09fa0a6eafaf973ab09a3678b2b40174"
+  integrity sha512-LPNcYCmo9/PoHdyTb+8nmZxvbtknYdqnjs70fYIngL4pNvdq8KwO38Z1anh7rBIVvHOlpm2w7NnwO3jeOnYOVQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-push@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-push/-/tsparticles-interaction-external-push-2.5.3.tgz#eaababd0f71f20e56f39520a783f280a85b98d80"
+  integrity sha512-5vfDVR9ciAGORVszq8ciqE6HYmpciDS2zom2++apHLvxM1AAQJKh/zRy3W3hl2qQ5aEvb67t/iaRiglTtQD2qA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-remove@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-remove/-/tsparticles-interaction-external-remove-2.5.3.tgz#2fd951732aa6a66f2fa2de801fa65bb557baed21"
+  integrity sha512-+goJgwiTHR6OFmuHZjqI7wO+VFeH8GObJEZzvRLzAZ1jRDZquc/Lm7bMLnQjKOS+pA44tLrZB4ErFT1/+VH1dg==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-repulse@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-repulse/-/tsparticles-interaction-external-repulse-2.5.3.tgz#3db55dd2170c92c100407d1e8b101640454d4214"
+  integrity sha512-6o/Xk8oTB/oGAlp291f8HllRvb5P7Qs6Z35imJ+hmLBuxXpu++TRbBJl9AyTuzhkaiX46cy765q79K4Nf71tTQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-slow@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-slow/-/tsparticles-interaction-external-slow-2.5.3.tgz#47216b262686aa9cadedbf4d1fb8a3e8075199ca"
+  integrity sha512-nWDtU2q3gLccu9CafmONAVJFA9gMvAJ26Uf7+jiqWPAG0R3p/oL8INZDyIwKtxd+OFkE6QwBWe1BJovOUjJfZw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-trail@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-trail/-/tsparticles-interaction-external-trail-2.5.3.tgz#10410f65c929f1a3561baab46cf97bddb909662a"
+  integrity sha512-Z0PuHPjgNHTUOHGSyM31dls03Brq1//6qrSfMu4zmVcfyb9wVZN2UeTd0OjqNLiz7gsBVdFWinRVe20EcOPYIQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-particles-attract@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-particles-attract/-/tsparticles-interaction-particles-attract-2.5.3.tgz#d764c564a825cac61685bc78ea30cc872728cdc5"
+  integrity sha512-vACi7Zdx3LtqFNbapCxylNuj/T52lhc8xN2vTq2oGMEm0f8JjBqrsfXYzvN7cpVVg4hQDiBWwWgAftQEwAHkJQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-particles-collisions@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-particles-collisions/-/tsparticles-interaction-particles-collisions-2.5.3.tgz#641ec461256be2600172b2f6a5266537c94319b4"
+  integrity sha512-KhlWgrMr8GD0rkj75yhhEZkvr56DJxIlk57YZfBHrYvpLVUyYDXO7iv5mVAPG7qtfxfMwggEXZSpCxbH5bfhbA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-particles-links@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-interaction-particles-links/-/tsparticles-interaction-particles-links-2.5.3.tgz#03f80105ec1e4f49fa7f877f89f79c5d45d80c2f"
+  integrity sha512-aT43l+90HV81IKuNPgVKUU/1aMwC6aVYQeqRwyUi1WMoW2n0JUuM/k2ifqEUsfNuoXOfedU9HRXk4+iXnKd0SQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-move-base@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-move-base/-/tsparticles-move-base-2.5.3.tgz#e0a735972a078348a4903c2740f5a09a8be9b91d"
+  integrity sha512-YOpTua9TfBoU6dmK6VdvVgXIpb2iU8PuA3lL+p/Qe6VLqGx4XgSt27pD63Qa5p7lFZTCxa4cnE+DcHFVSRWG1Q==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-move-parallax@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-move-parallax/-/tsparticles-move-parallax-2.5.3.tgz#c37143119779824738c45d09866f638bb08d3fe1"
+  integrity sha512-l9vgLZrdR9WIaiJ8lH7Nq2h60zg4/w+X/pvp76CWce3S7ochW3s5r/J9dnNJOSyHUEvs42s76yOdZA1apkFHvw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-particles.js@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-particles.js/-/tsparticles-particles.js-2.5.3.tgz#df7c777721a7da2841a578f88cabc47c7467b3cd"
+  integrity sha512-nksab+qsfpz+gA/qXqpiQJYaMznPh52FY77kdcttVUKj2b5vQLjMq2avewREKnsWJYqDl5LohekbEMXDznS2wQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-plugin-absorbers@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-plugin-absorbers/-/tsparticles-plugin-absorbers-2.5.3.tgz#7d1164f37f09be4e5fffbb2b4448c096991f182b"
+  integrity sha512-sN0Utyd62vMXr46Pko/0ncRbhTLUfkFNpY4x8Z7eCnkX4WnWkVMrcwT3ib7wn56/rtxn8rzWYCIquaioU8oOEQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-plugin-easing-quad@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-plugin-easing-quad/-/tsparticles-plugin-easing-quad-2.5.3.tgz#1244cea271c3b28fb56c0d76c4a8ac0cdce63439"
+  integrity sha512-rGhPbL4mJrQkziYu5wpcKtdDqj3srfvcWqfm6D3NBjdveWm5Q6o/fA8hlkNXuBPCIIpQG4cfwQYx8nc5BEtwgA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-plugin-emitters@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-plugin-emitters/-/tsparticles-plugin-emitters-2.5.3.tgz#a05815f74aa56111764d4df5bc30b82d845732ea"
+  integrity sha512-yF1qiGJu99EIG40nTLVGwV6JEgpB9NGCynd6chvqby7A01AWoqpaUaQ7AdyblcjpPq2WYkyMhJWdeNEk6YblFQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-circle@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-circle/-/tsparticles-shape-circle-2.5.3.tgz#1df7c5f43b26566734a2d7de6e0065a3c93b2fa9"
+  integrity sha512-D8zbbC/eaqaOjd3MjhmbkmMQ+uH97RKNJL3YyZ743s1YowCGPK4c6N5NUdVNqljWHn15ALpq0NV/GzY5oGVTNw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-image@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-image/-/tsparticles-shape-image-2.5.3.tgz#faf004a839cfb9fd7f467f00e5cb856029b5b4c1"
+  integrity sha512-hdSxxkTXlEC2vn1Hi//GDZNqIGCVyuRfoTmE8ex3hj9NA0YhZoBcmr+4kmFDfJRBvtvumIQk4V1JVruHgoVnuw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-line@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-line/-/tsparticles-shape-line-2.5.3.tgz#fbf1fe2361ee605fd06450a7522f1d31ab97db0d"
+  integrity sha512-ee+mA40mTfvbpetU0ohmsiZ1ClY7OCFwcAEfNlfTJc7BGUVQuvEN47RHR9UtL4k3REu9JNKr6J2EIuUOgRwwLw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-polygon@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-polygon/-/tsparticles-shape-polygon-2.5.3.tgz#08b3d280946db84839a9005277cacf38f807ada3"
+  integrity sha512-1w+6nke5LvKd/jEwCgj8QKDIi5qFLjm54Dg1fH4S1jhEtNAM25o28Law0JGfZeernmBWqaxBj5pV9BJGeqqfcw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-square@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-square/-/tsparticles-shape-square-2.5.3.tgz#43888f4df268a959b0a2185b278d08a4ec4f9430"
+  integrity sha512-LXS6UJJx0gCB7kS8kJb4N01owMnIwYkUaN5eVcN5h0b8Hc2cX+E962yImR2ZN+Hcq4P9lb7qXGj7SsAAa054WQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-star@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-star/-/tsparticles-shape-star-2.5.3.tgz#d499ff380c37b5fce776347f3e1c5849f3430ef2"
+  integrity sha512-/xvEP8XQ1TWcKBGMA0vTyu7EW/dcOz3jaOzgtAN3MvKgu9AQDiT02HUNW92QIUmqLStlCPAttf37eUss+JGTVw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-shape-text@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-shape-text/-/tsparticles-shape-text-2.5.3.tgz#5dbc92a3ce7729bc07dea30c499e9d6e0d8b0d4a"
+  integrity sha512-d6/xZVhBTAVtnMOH8K9nCamgfiO10M2q67rAUDTUVTscYES996jQYsTeDfg43IIO7eruXBH80LZVLt1MBZJ3DA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-slim@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-slim/-/tsparticles-slim-2.5.3.tgz#82634757ae64826248af929108fcddc9c86fba13"
+  integrity sha512-t44w8lrajWIOp2P14G9Hfp32v+EzpjjB4402jsbVHRyaQdm3vlgrtqA1H/2qQGdJHkl24lUZXNlLqX4fSoBZbg==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+    tsparticles-interaction-external-attract "^2.5.3"
+    tsparticles-interaction-external-bounce "^2.5.3"
+    tsparticles-interaction-external-bubble "^2.5.3"
+    tsparticles-interaction-external-connect "^2.5.3"
+    tsparticles-interaction-external-grab "^2.5.3"
+    tsparticles-interaction-external-pause "^2.5.3"
+    tsparticles-interaction-external-push "^2.5.3"
+    tsparticles-interaction-external-remove "^2.5.3"
+    tsparticles-interaction-external-repulse "^2.5.3"
+    tsparticles-interaction-external-slow "^2.5.3"
+    tsparticles-interaction-particles-attract "^2.5.3"
+    tsparticles-interaction-particles-collisions "^2.5.3"
+    tsparticles-interaction-particles-links "^2.5.3"
+    tsparticles-move-base "^2.5.3"
+    tsparticles-move-parallax "^2.5.3"
+    tsparticles-particles.js "^2.5.3"
+    tsparticles-plugin-easing-quad "^2.5.3"
+    tsparticles-shape-circle "^2.5.3"
+    tsparticles-shape-image "^2.5.3"
+    tsparticles-shape-line "^2.5.3"
+    tsparticles-shape-polygon "^2.5.3"
+    tsparticles-shape-square "^2.5.3"
+    tsparticles-shape-star "^2.5.3"
+    tsparticles-shape-text "^2.5.3"
+    tsparticles-updater-angle "^2.5.3"
+    tsparticles-updater-color "^2.5.3"
+    tsparticles-updater-life "^2.5.3"
+    tsparticles-updater-opacity "^2.5.3"
+    tsparticles-updater-out-modes "^2.5.3"
+    tsparticles-updater-size "^2.5.3"
+    tsparticles-updater-stroke-color "^2.5.3"
+
+tsparticles-updater-angle@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-angle/-/tsparticles-updater-angle-2.5.3.tgz#91a6ce3fa715d2ad44034f4debf82e1df4715c9f"
+  integrity sha512-2oQYSV5PC0FWnwRswcUZjXAeuHa8QQw0dK3NnyxG52PuyJorxGz38t8/INrPMxaNDA8LvSHO+CzYFi9CzQvXbg==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-color@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-color/-/tsparticles-updater-color-2.5.3.tgz#93da0ab8d81643b6646c95ec1b0a721c55fe4582"
+  integrity sha512-eNmyfkzk7AfghCLwCewt+480LAfK5uX2D5jnQC/Vo5VNxco1P0clGTx61g9pc3vVzUV1e5NEj6Gw1tCSb8f+nw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-destroy@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-destroy/-/tsparticles-updater-destroy-2.5.3.tgz#f41e0209b8b1ddf71741623b6ce2ef1f135ff38a"
+  integrity sha512-2G6haBy5PqpNmnOLVeUzmm82zjfx8YmSwu9qZ5nUEPLNDQCDkAN4u6mffrkZRajY0u/KmwTTaajIVK0ExIR9aw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-life@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-life/-/tsparticles-updater-life-2.5.3.tgz#68ae7b0d56825466aaf173f863bce990c4da702c"
+  integrity sha512-smK9iuNRPmK9rr74X9xzx9LPpVaSbRY+uri7/lI9NLvoi5b1PtYImYSIQGiXrPfFZ2/KL+MApddVnwqI/8MHqw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-opacity@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.5.3.tgz#4f54110b1c12520e7655c01a62834fa61bde1f0b"
+  integrity sha512-1tLJYDq1uQM7sNn8QPO8s2yPTRAJONCxyETWl9SAc6ghTX0qrebcla3pGRBWMT0g0cIJb4qIsO9Nyaq9RYf0iQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-out-modes@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.5.3.tgz#3fb366bec4aebb08755d673d72d7b1d30f434cd3"
+  integrity sha512-KyhA2YNA3j7TFv2lOwZN9JXuR5z1/N7fUmaFTVJGooI6Bf7WvTFaDFp0gvufrBSd4CqDwsQITqDOwV2J1sGDEQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-roll@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-roll/-/tsparticles-updater-roll-2.5.3.tgz#ff21b29fbfc77d3fede95f7474256bf931109ed1"
+  integrity sha512-jkiGkFW7s7TJBqfsiC4ZU0/gR/YCAeOkHAIIuHcVy4soM2rf0P2NKKzZxYMxSIyGQrCG0Hxw0GEGlLV5UiqK2w==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-size@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-size/-/tsparticles-updater-size-2.5.3.tgz#9c7ba5beb52462f993b559b6884e8922b5c4726a"
+  integrity sha512-kU1qyP8NKQd5XhAc2jp/VLn2AxakM+HFKozlzHIp8DPy+INW5lpgswo2Cc5e1ZXQCdOMQlQFn6cNCbct24kKcQ==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-stroke-color@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.5.3.tgz#888088fc9a56788309d3ab4bf74730066611fcd2"
+  integrity sha512-XONraSFtepvtEqJXQWQSV+KOEWill9HtwVju8CsFgS/NtJYlYKfpSEbv41r7pWRhZRaFZN/BbOnMfwHCdLuBHw==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-tilt@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-tilt/-/tsparticles-updater-tilt-2.5.3.tgz#cb52b4f8898aae2ddcb0cc333b5b9390f9ab0d73"
+  integrity sha512-Njt3aR+WtYiuvaLWnJOsL6NGDfVAfMrVzzOGrrf7X4TZKpk4HMMYcxOQFbvBQnoQZhenq3/TJh09Xx44AX7Rag==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-twinkle@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-twinkle/-/tsparticles-updater-twinkle-2.5.3.tgz#ae8e30b19d5cc0830b60ce5a8298a395a3fa067f"
+  integrity sha512-YvfRIf00stfTqttQL5IZ5yHaVufR7XnXxPk+GZ9bLzw5SGoUD+EyLlKVoP6L9gbY6O3I6c64ZKrKmBWMoYWxDg==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles-updater-wobble@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles-updater-wobble/-/tsparticles-updater-wobble-2.5.3.tgz#7d8801c238f8693f5ea67c09768e4649f2dadf3b"
+  integrity sha512-uB4VdZU1Ha7T8ZtOe0SAdnrVVkoCCDeb/BIUTGp7nF1/fVlv57v7iI54GmbYE9Aabljc2KOvEaaiYPO+iBJqgA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+
+tsparticles@^2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/tsparticles/-/tsparticles-2.5.3.tgz#670ad90fc3f92c7c2c44dc5fc78ae62483688755"
+  integrity sha512-qp3WdOKLQsZUgR11biq5mK5njmD6bhDcK2XpsLenj0oNvz6A/lHn8fv9KgWmLka6sBBHwTpAPpnFGBII5GMaqA==
+  dependencies:
+    tsparticles-engine "^2.5.2"
+    tsparticles-interaction-external-trail "^2.5.3"
+    tsparticles-plugin-absorbers "^2.5.3"
+    tsparticles-plugin-emitters "^2.5.3"
+    tsparticles-slim "^2.5.3"
+    tsparticles-updater-destroy "^2.5.3"
+    tsparticles-updater-roll "^2.5.3"
+    tsparticles-updater-tilt "^2.5.3"
+    tsparticles-updater-twinkle "^2.5.3"
+    tsparticles-updater-wobble "^2.5.3"
+
 tsutils@^3.21.0:
   version "3.21.0"
   resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -5090,6 +5741,13 @@
   dependencies:
     prelude-ls "^1.2.1"
 
+type-check@~0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+  integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
+  dependencies:
+    prelude-ls "~1.1.2"
+
 type-fest@^0.20.2:
   version "0.20.2"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
@@ -5128,6 +5786,11 @@
   resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
   integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
 
+universalify@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
+  integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
 unquote@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
@@ -5148,6 +5811,14 @@
   dependencies:
     punycode "^2.1.0"
 
+url-parse@^1.5.3:
+  version "1.5.10"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
+  integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+  dependencies:
+    querystringify "^2.1.1"
+    requires-port "^1.0.0"
+
 use-sync-external-store@1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
@@ -5178,6 +5849,13 @@
   resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
   integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
 
+w3c-xmlserializer@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"
+  integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
+  dependencies:
+    xml-name-validator "^4.0.0"
+
 webidl-conversions@^7.0.0:
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
@@ -5206,6 +5884,18 @@
     source-list-map "^2.0.0"
     source-map "~0.6.1"
 
+whatwg-encoding@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
+  integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
+  dependencies:
+    iconv-lite "0.6.3"
+
+whatwg-mimetype@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
+  integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
+
 whatwg-url@^11.0.0:
   version "11.0.0"
   resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018"
@@ -5232,7 +5922,7 @@
   dependencies:
     isexe "^2.0.0"
 
-word-wrap@^1.2.3:
+word-wrap@^1.2.3, word-wrap@~1.2.3:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
@@ -5247,6 +5937,21 @@
   resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
   integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
 
+ws@^8.11.0:
+  version "8.12.1"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f"
+  integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==
+
+xml-name-validator@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
+  integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+
+xmlchars@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+  integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
 yallist@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
