A client/.gitignore => client/.gitignore +24 -0
@@ 0,0 1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
A client/hearty.png => client/hearty.png +0 -0
A client/index.html => client/index.html +11 -0
@@ 0,0 1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>StarKingdoms</title>
+ </head>
+ <body>
+ <script type="module" src="/src/index.ts"></script>
+ </body>
+</html>
A client/package.json => client/package.json +19 -0
@@ 0,0 1,19 @@
+{
+ "name": "starkingdoms-client",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "typescript": "^4.9.3",
+ "vite": "^4.2.0"
+ },
+ "dependencies": {
+ "@msgpack/msgpack": "^3.0.0-beta2",
+ "pixi.js": "^7.2.4"
+ }
+}
A client/public/vite.svg => client/public/vite.svg +1 -0
@@ 0,0 1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg><
\ No newline at end of file
A client/src/gateway.ts => client/src/gateway.ts +35 -0
@@ 0,0 1,35 @@
+import {Logger} from "./logger";
+import { encode } from "@msgpack/msgpack";
+import {MessageC2S} from "./protocol/MessageC2S";
+
+const logger = new Logger("Gateway");
+
+export async function gateway_connect(gateway_url: string) {
+ logger.info("FAST CONNECT - Connecting to gateway socket at " + gateway_url);
+
+ let ws = await _websocket_connect(gateway_url);
+
+ logger.debug("[fastconnect] connected to gateway, performing handshake with server");
+
+
+}
+
+let socket: WebSocket | undefined = undefined;
+
+function _websocket_connect(url: string): Promise<WebSocket> {
+ if (socket && socket.readyState < 2) {
+ // reuse socket connection
+ return Promise.resolve(socket);
+ }
+
+ return new Promise((resolve, reject) => {
+ socket = new WebSocket(url);
+ socket.onopen = () => {
+ // @ts-ignore if here, guaranteed that `socket` != undefined
+ resolve(socket);
+ }
+ socket.onerror = (err) => {
+ reject(err);
+ }
+ });
+}<
\ No newline at end of file
A client/src/index.ts => client/src/index.ts +33 -0
@@ 0,0 1,33 @@
+//import * as PIXI from "pixi.js";
+
+import {Logger, logSetup} from "./logger";
+import {gateway_connect} from "./gateway";
+
+logSetup();
+const logger = new Logger("client");
+
+async function client_main() {
+ logger.info("StarKingdoms client - starting");
+
+ await gateway_connect("ws://localhost:3000/ws");
+}
+
+client_main().then(() => {});
+
+/*
+
+let app = new PIXI.Application({width: window.innerWidth, height: window.innerHeight, resizeTo: window });
+
+// @ts-ignore
+document.body.appendChild(app.view);
+
+let sprite = PIXI.Sprite.from("./hearty.png");
+app.stage.addChild(sprite);
+
+let elapsed = 0.0;
+app.ticker.add((delta) => {
+ elapsed += delta;
+ sprite.x = 100.0 + Math.cos(elapsed/50.0) * 100.0;
+});
+
+ */<
\ No newline at end of file
A client/src/logger.ts => client/src/logger.ts +118 -0
@@ 0,0 1,118 @@
+// LOG LEVELS:
+// 0: Fatal
+// 1: Error
+// 2: Warn
+// 3: Info
+// 4: Debug
+// Logs are written in-memory and logged to console if logLevel > showLogLevel
+let loglevel = 0;
+
+export const LEVEL_FATAL = 0;
+export const LEVEL_ERROR = 1;
+export const LEVEL_WARN = 2;
+export const LEVEL_INFO = 3;
+export const LEVEL_DEBUG = 4;
+
+interface LogLine {
+ level: number,
+ module: string,
+ message: string,
+ timestamp: number,
+ deltaStart: number,
+ deltaLast: number
+}
+
+const debugLog: Array<LogLine> = [];
+let timestampStart: number;
+let deltaTimestamp: number;
+let logger: Logger;
+let loggerSetup = false;
+
+export function logSetup() {
+ if (loggerSetup) return;
+ loggerSetup = true;
+ timestampStart = Date.now();
+ deltaTimestamp = Date.now();
+ logger = new Logger("Logger.ts");
+ consoleLogLevel(LEVEL_INFO);
+ logger.info("Logger setup complete");
+}
+
+function log(level: number, module: string, message: string) {
+ const log = {
+ level: level,
+ module: module,
+ message: message,
+ timestamp: Date.now(),
+ deltaStart: Date.now() - timestampStart,
+ deltaLast: Date.now() - deltaTimestamp
+ };
+ deltaTimestamp = Date.now();
+
+ debugLog.push(log);
+
+ consoleLogHandler(log);
+}
+
+function consoleLogHandler(log: LogLine) {
+ if (import.meta.env.SSR) return; // no logging in ssr
+ if (log.level <= loglevel) {
+ let textstyle = "";
+ switch (log.level) {
+ case 0:
+ textstyle = "color:red;font-weight:bold;";
+ break;
+ case 1:
+ textstyle = "color:red;";
+ break;
+ case 2:
+ textstyle = "color:yellow;";
+ break;
+ case 3:
+ textstyle = "";
+ break;
+ case 4:
+ textstyle = "color:gray;";
+ break;
+ }
+ console.log(`%c${new Date(log.timestamp).toISOString()} ${(log.deltaStart / 1000).toFixed(3)}Σ ${(log.deltaLast / 1000).toFixed(3)}Δ\n%c[${log.module}]%c ${log.message}`, "color:gray", "color:#8c188c", textstyle);
+ }
+}
+
+export function consoleLogLevel(level: number) {
+ loglevel = level;
+}
+
+export function consoleLogDump() {
+ for (let i = 0; i < debugLog.length; i++) {
+ consoleLogHandler(debugLog[i]);
+ }
+}
+
+export class Logger {
+ private readonly name: string;
+
+ constructor(name: string) {
+ this.name = name;
+ }
+
+ fatal(message: any) {
+ log(LEVEL_FATAL, this.name, message)
+ }
+
+ error(message: any) {
+ log(LEVEL_ERROR, this.name, message)
+ }
+
+ warn(message: any) {
+ log(LEVEL_WARN, this.name, message)
+ }
+
+ info(message: any) {
+ log(LEVEL_INFO, this.name, message)
+ }
+
+ debug(message: any) {
+ log(LEVEL_DEBUG, this.name, message)
+ }
+}<
\ No newline at end of file
A client/src/protocol/GoodbyeReason.ts => client/src/protocol/GoodbyeReason.ts +42 -0
@@ 0,0 1,42 @@
+export enum GoodbyeReason {
+ UnexpectedPacket,
+ UnexpectedNextState,
+ UsernameTaken,
+ PingPongTimeout,
+ Done
+}
+
+export class GoodbyeReason_UnsupportedProtocol {
+ supported: number;
+ got: number;
+
+ constructor(supported: number, got: number) {
+ this.supported = supported;
+ this.got = got;
+ }
+
+ to_object(): object {
+ return { UnsupportedProtocol: {supported: this.supported, got: this.got} }
+ }
+}
+
+// @ts-ignore
+export function enum_GoodbyeReason_serialize(r: GoodbyeReason): string {
+ if (r == GoodbyeReason.UnexpectedPacket) {
+ return "UnexpectedPacket";
+ } else if (r == GoodbyeReason.UnexpectedNextState) {
+ return "UnexpectedNextState";
+ } else if (r == GoodbyeReason.UsernameTaken) {
+ return "UsernameTaken";
+ } else if (r == GoodbyeReason.PingPongTimeout) {
+ return "PingPongTimeout";
+ } else if (r == GoodbyeReason.Done) {
+ return "Done";
+ }
+}
+
+export function enum_GoodbyeReason_deserialize(r: string): GoodbyeReason {
+ if (r == "UnexpectedPacket") {
+
+ }
+}<
\ No newline at end of file
A client/src/protocol/MessageC2S.ts => client/src/protocol/MessageC2S.ts +58 -0
@@ 0,0 1,58 @@
+import {State} from "./State";
+import {enum_GoodbyeReason_serialize, GoodbyeReason, GoodbyeReason_UnsupportedProtocol} from "./GoodbyeReason";
+
+export class MessageC2S_Hello {
+ version: number;
+ requested_username: string;
+ next_state: State;
+
+ constructor(version: number, requested_username: string, next_state: State) {
+ this.version = version;
+ this.requested_username = requested_username;
+ this.next_state = next_state;
+ }
+
+ to_object(): object {
+ return { Hello: { version: this.version, requested_username: this.requested_username, next_state: this.next_state }}
+ }
+}
+
+export class MessageC2S_Goodbye {
+ reason: GoodbyeReason | GoodbyeReason_UnsupportedProtocol;
+
+ constructor(reason: GoodbyeReason | GoodbyeReason_UnsupportedProtocol) {
+ this.reason = reason;
+ }
+
+ to_object(): object {
+ let reason;
+
+ if (this.reason instanceof GoodbyeReason_UnsupportedProtocol) {
+ reason = this.reason.to_object();
+ } else {
+ reason = enum_GoodbyeReason_serialize(this.reason);
+ }
+
+ return { Goodbye: { reason: reason } }
+ }
+}
+
+export class MessageC2S_Chat {
+ message: string;
+
+ constructor(message: string) {
+ this.message = message;
+ }
+
+ to_object(): object {
+ return { Chat: { message: this.message }}
+ }
+}
+
+export class MessageC2S_Ping {
+ constructor() {}
+
+ to_object(): object {
+ return { Ping: {} }
+ }
+}<
\ No newline at end of file
A client/src/protocol/MessageS2C.ts => client/src/protocol/MessageS2C.ts +11 -0
@@ 0,0 1,11 @@
+import {State} from "./State";
+
+export class MessageS2C_Hello {
+ version: number;
+ given_username: string;
+ next_state: State;
+
+ constructor(version: number, given_username: string, next_state: State) {
+ this.version
+ }
+}<
\ No newline at end of file
A client/src/protocol/State.ts => client/src/protocol/State.ts +4 -0
@@ 0,0 1,4 @@
+export enum State {
+ Handshake,
+ Play
+}<
\ No newline at end of file
A client/src/vite-env.d.ts => client/src/vite-env.d.ts +1 -0
@@ 0,0 1,1 @@
+/// <reference types="vite/client" />
A client/tsconfig.json => client/tsconfig.json +19 -0
@@ 0,0 1,19 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ESNext", "DOM"],
+ "moduleResolution": "Node",
+ "strict": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "noEmit": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "skipLibCheck": true
+ },
+ "include": ["src"]
+}
A client/yarn.lock => client/yarn.lock +541 -0
@@ 0,0 1,541 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@esbuild/android-arm64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz#7b18cab5f4d93e878306196eed26b6d960c12576"
+ integrity sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==
+
+"@esbuild/android-arm@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.16.tgz#5c47f6a7c2cada6ed4b4d4e72d8c66e76d812812"
+ integrity sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==
+
+"@esbuild/android-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.16.tgz#8686a6e98359071ffd5312046551943e7244c51a"
+ integrity sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==
+
+"@esbuild/darwin-arm64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz#aa79fbf447630ca0696a596beba962a775bbf394"
+ integrity sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==
+
+"@esbuild/darwin-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz#d5d68ee510507104da7e7503224c647c957e163e"
+ integrity sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==
+
+"@esbuild/freebsd-arm64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz#b00b4cc8c2e424907cfe3a607384ab24794edd52"
+ integrity sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==
+
+"@esbuild/freebsd-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz#84af4430a07730b50bbc945a90cf7036c1853b76"
+ integrity sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==
+
+"@esbuild/linux-arm64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz#35571d15de6272c862d9ce6341372fb3cef0f266"
+ integrity sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==
+
+"@esbuild/linux-arm@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz#b65c7cd5b0eadd08f91aab66b9dda81b6a4b2a70"
+ integrity sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==
+
+"@esbuild/linux-ia32@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz#673a68cb251ce44a00a6422ada29064c5a1cd2c0"
+ integrity sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==
+
+"@esbuild/linux-loong64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz#477e2da34ab46ffdbf4740fa6441e80045249385"
+ integrity sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==
+
+"@esbuild/linux-mips64el@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz#e1e9687bbdaa831d7c34edc9278200982c1a4bf4"
+ integrity sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==
+
+"@esbuild/linux-ppc64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz#2f19075d63622987e86e83a4b7866cd57b796c60"
+ integrity sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==
+
+"@esbuild/linux-riscv64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz#bbf40a38f03ba2434fe69b5ceeec5d13c742b329"
+ integrity sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==
+
+"@esbuild/linux-s390x@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz#d2b8c0779ccd2b7917cdf0fab8831a468e0f9c01"
+ integrity sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==
+
+"@esbuild/linux-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz#da48b39cfdc1b12a74976625f583f031eac43590"
+ integrity sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==
+
+"@esbuild/netbsd-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz#ddef985aed37cc81908d2573b66c0299dbc49037"
+ integrity sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==
+
+"@esbuild/openbsd-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz#85035bf89efd66e9068bc72aa6bb85a2c317d090"
+ integrity sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==
+
+"@esbuild/sunos-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz#16338ecab854cb2d831cc9ee9cc21ef69566e1f3"
+ integrity sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==
+
+"@esbuild/win32-arm64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz#423f46bb744aff897a5f74435469e1ef4952e343"
+ integrity sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==
+
+"@esbuild/win32-ia32@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz#1978be5b192c7063bd2c8d5960eb213e1964740e"
+ integrity sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==
+
+"@esbuild/win32-x64@0.17.16":
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz#260f19b0a3300d22c3a3f52722c671dc561edaa3"
+ integrity sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==
+
+"@msgpack/msgpack@^3.0.0-beta2":
+ version "3.0.0-beta2"
+ resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz#5bccee30f84df220b33905e3d8249ba96deca0b7"
+ integrity sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==
+
+"@pixi/accessibility@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/accessibility/-/accessibility-7.2.4.tgz#3198d0059c230c668b1179457346a3b5dcba6e64"
+ integrity sha512-EVjuqUqv9FeYFXCv0S0qj1hgCtbAMNBPCbOGEtiMogpM++/IySxBZvcOYg3rRgo9inwt2s4Bi7kUiqMPD8hItw==
+
+"@pixi/app@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/app/-/app-7.2.4.tgz#ae16fdc9fce04224fb36311168d902a2e7d0e65a"
+ integrity sha512-eJ2jpu5P28ip07nLItw6sETXn45P4KR/leMJ6zPHRlhT1m8t5zTsWr3jK4Uj8LF2E+6KlPNzLQh5Alf/unn/aQ==
+
+"@pixi/assets@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/assets/-/assets-7.2.4.tgz#944f4a15acc888071c0811d3d68524afb0ed069c"
+ integrity sha512-7199re3wvMAlVqXLaCyAr8IkJSXqkeVAxcYyB2rBu4Id5m2hhlGX1dQsdMBiCXLwu6/LLVqDvJggSNVQBzL6ZQ==
+ dependencies:
+ "@types/css-font-loading-module" "^0.0.7"
+
+"@pixi/color@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/color/-/color-7.2.4.tgz#6d6d5dbc01ae2a4f1c8eb48e98fff89ac0c3e40d"
+ integrity sha512-B/+9JRcXe2uE8wQfsueFRPZVayF2VEMRB7XGeRAsWCryOX19nmWhv0Nt3nOU2rvzI0niz9XgugJXsB6vVmDFSg==
+ dependencies:
+ colord "^2.9.3"
+
+"@pixi/compressed-textures@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/compressed-textures/-/compressed-textures-7.2.4.tgz#bbf84689a9f4f41d5a8e9476ea6520a4c19412ac"
+ integrity sha512-atnWyw/ot/Wg69qhgskKiuTYCZx15IxV35sa0KyXMthyjyvDLCIvOn0nczM6wCBy9H96SjJbfgynVWhVrip6qw==
+
+"@pixi/constants@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/constants/-/constants-7.2.4.tgz#45c23b247309e78d4105f04063ad8b453dae8b2f"
+ integrity sha512-hKuHBWR6N4Q0Sf5MGF3/9l+POg/G5rqhueHfzofiuelnKg7aBs3BVjjZ+6hZbd6M++vOUmxYelEX/NEFBxrheA==
+
+"@pixi/core@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/core/-/core-7.2.4.tgz#9f93a0744c795b17045127c2630f976580f03008"
+ integrity sha512-0XtvrfxHlS2T+beBBSpo7GI8+QLyyTqMVQpNmPqB4woYxzrOEJ9JaUFBaBfCvycLeUkfVih1u6HAbtF+2d1EjQ==
+ dependencies:
+ "@pixi/color" "7.2.4"
+ "@pixi/constants" "7.2.4"
+ "@pixi/extensions" "7.2.4"
+ "@pixi/math" "7.2.4"
+ "@pixi/runner" "7.2.4"
+ "@pixi/settings" "7.2.4"
+ "@pixi/ticker" "7.2.4"
+ "@pixi/utils" "7.2.4"
+ "@types/offscreencanvas" "^2019.6.4"
+
+"@pixi/display@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/display/-/display-7.2.4.tgz#cbf46ba0c0c0d30064b9ce67190a0a6a3624c62f"
+ integrity sha512-w5tqb8cWEO5qIDaO9GEqRvxYhL0iMk0Wsngw23bbLm1gLEQmrFkB2tpJlRAqd7H82C3DrDDeWvkrrxW6+m4apg==
+
+"@pixi/events@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/events/-/events-7.2.4.tgz#06434c9e84838b87d7626151ec556a66796ac206"
+ integrity sha512-/JtmoB98fzIU8giN9xvlRvmvOi6u4MaD2DnKNOMHkQ1MBraj3pmrXM9fZ0JbNzi+324GraAAY76QidgHjIYoYQ==
+
+"@pixi/extensions@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/extensions/-/extensions-7.2.4.tgz#ab2940abce3935706e956d1bcf2dbf44aca440db"
+ integrity sha512-Mnqv9scbL1ARD3QFKfOWs2aSVJJfP1dL8g5UiqGImYO3rZbz/9QCzXOeMVIZ5n3iaRyKMNhFFr84/zUja2H7Dw==
+
+"@pixi/extract@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/extract/-/extract-7.2.4.tgz#2db62611a3135ee8232affdb7b26cab37cb2a0a3"
+ integrity sha512-wlXZg+J2L/1jQhRi5nZQP/cXshovhjksjss91eAKMvY5aGxNAQovCP4xotJ/XJjfTvPMpeRzHPFYzm3PrOPQ7g==
+
+"@pixi/filter-alpha@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-alpha/-/filter-alpha-7.2.4.tgz#f33621fa4bdc95de09457780aa33eb253fe6447f"
+ integrity sha512-UTUMSGyktUr+I9vmigqJo9iUhb0nwGyqTTME2xBWZvVGCnl5z+/wHxvIBBCe5pNZ66IM15pGXQ4cDcfqCuP2kA==
+
+"@pixi/filter-blur@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-blur/-/filter-blur-7.2.4.tgz#834447f9d6edec7d27414c9961b9e6009acd678a"
+ integrity sha512-aLyXIoxy14bTansCPtbY8x7Sdn2OrrqkF/pcKiRXHJGGhi7wPacvB/NcmYJdnI/n2ExQ6V5Njuj/nfrsejVwcA==
+
+"@pixi/filter-color-matrix@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-color-matrix/-/filter-color-matrix-7.2.4.tgz#4c9e6e174b27635ce5e92f34d372366b901e250f"
+ integrity sha512-DFtayybYXoUh73eHUFRK5REbi1t3FZuVUnaQTj+euHKF9L7EaYc3Q9wctpx1WPRcwkqEX50M4SNFhxpA7Pxtaw==
+
+"@pixi/filter-displacement@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-displacement/-/filter-displacement-7.2.4.tgz#39da0592966079d7e194be46494b8055b5eebda2"
+ integrity sha512-Simq3IBJKt7+Gvk4kK7OFkfoeYUMhNhIyATCdeT+Jkdkq5WV7pYnH5hqO0YW7eAHrgjV13yn6t4H/GC4+6LhEA==
+
+"@pixi/filter-fxaa@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-fxaa/-/filter-fxaa-7.2.4.tgz#78fac5466ca1a249f343be1af90c79bae399bf92"
+ integrity sha512-qzKjdL+Ih18uGTJLg8tT/H+YCsTeGkw2uF7lyKnw/lxGLJQhLWIhM95M9qSNgxbXyW1vp7SbG81a9aAEz2HAhA==
+
+"@pixi/filter-noise@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-noise/-/filter-noise-7.2.4.tgz#0586a00381ec0e63f6c00d49cd58b781eaf07f37"
+ integrity sha512-QAU9Ybj2ZQrWM9ZEjTTC0iLnQcuyNoZNRinxSbg1G0yacpmsSb9wvV5ltIZ66+hfY+90+u2Nudt/v9g6pvOdGg==
+
+"@pixi/graphics@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/graphics/-/graphics-7.2.4.tgz#8500b604c36184736926393cb0ca9b9de9afef86"
+ integrity sha512-3A2EumTjWJgXlDLOyuBrl9b6v1Za/E+/IjOGUIX843HH4NYaf1a2sfDfljx6r3oiDvy+VhuBFmgynRcV5IyA0Q==
+
+"@pixi/math@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/math/-/math-7.2.4.tgz#219b64ca44348a1ee900ee074c51ee7e41615059"
+ integrity sha512-LJB+mozyEPllxa0EssFZrKNfVwysfaBun4b2dJKQQInp0DafgbA0j7A+WVg0oe51KhFULTJMpDqbLn/ITFc41A==
+
+"@pixi/mesh-extras@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/mesh-extras/-/mesh-extras-7.2.4.tgz#e3c6721c1a8ff5852e76402276b2f495b7db702d"
+ integrity sha512-Lxqq/1E2EmDgjZX8KzjhBy3VvITIQ00arr2ikyHYF1d0XtQTKEYpr8VKzhchqZ5/9DuyTDbDMYGhcxoNXQmZrQ==
+
+"@pixi/mesh@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/mesh/-/mesh-7.2.4.tgz#c78cc24f831a9e08d4ac0a1706e82f3498ba6907"
+ integrity sha512-wiALIqcRKib2BqeH9kOA5fOKWN352nqAspgbDa8gA7OyWzmNwqIedIlElixd0oLFOrIN5jOZAdzeKnoYQlt9Aw==
+
+"@pixi/mixin-cache-as-bitmap@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.2.4.tgz#4fb69efc40b30b0a8c2c1ad1eee6ca3227eccaed"
+ integrity sha512-95L/9nzfLHw6GoeqqRl/RjSloKvRt0xrc2inCmjMZvMsFUEtHN2F8IWd1k5vcv0S+83NCreFkJg6nJm1m5AZqg==
+
+"@pixi/mixin-get-child-by-name@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.2.4.tgz#863b14c774d3af7e2a38a68904c06bc51a2b51dd"
+ integrity sha512-9g17KgSBEEhkinnKk4dqmxagzHOCPSTvGB6lOopBq4yyXmr/2WVv+QGjuzE0O+p80szQeBJjPBQxzrfBILaSRw==
+
+"@pixi/mixin-get-global-position@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.2.4.tgz#8c0b96a0bcd381db9486954aeeb6d06c5ea2e2c0"
+ integrity sha512-UrAUF2BXCeWtFgR2m+er41Ky7zShT7r228cZkB6ZfYwMeThhwqG5mH68UeCyP6p68JMpT1gjI2DPfeSRY3ecnA==
+
+"@pixi/particle-container@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/particle-container/-/particle-container-7.2.4.tgz#8f277f65e73b061d0859c7e526f5161f9b090242"
+ integrity sha512-tpSzilZGFtAoi8XhzL0TecLPNRQAbY8nWV9XNGXJDw+nxXp18GCe8L6eEmnHLlAug67BRHl65DtrdvTknPX+4g==
+
+"@pixi/prepare@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/prepare/-/prepare-7.2.4.tgz#fd470bbc7dd90c4a8111989c405ffb5521850ff9"
+ integrity sha512-Yff5Sh4kTLdKc5VkkM44LW9gpj7Izw8ns3P1TzWxqeGjzPZ3folr/tQujGL+Qw+8A9VESp+hX9MSIHyw+jpyrg==
+
+"@pixi/runner@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/runner/-/runner-7.2.4.tgz#7356e768a43809ed6f8b3254e9bdd8c1a47af0e7"
+ integrity sha512-YtyqPk1LA+0guEFKSFx6t/YSvbEQwajFwi4Ft8iDhioa6VK2MmTir1GjWwy7JQYLcDmYSAcQjnmFtVTZohyYSw==
+
+"@pixi/settings@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/settings/-/settings-7.2.4.tgz#bfd3107ad425f99316018ee441accdf7d55627e6"
+ integrity sha512-ZPKRar9EwibijGmH8EViu4Greq1I/O7V/xQx2rNqN23XA7g09Qo6yfaeQpufu5xl8+/lZrjuHtQSnuY7OgG1CA==
+ dependencies:
+ "@pixi/constants" "7.2.4"
+ "@types/css-font-loading-module" "^0.0.7"
+ ismobilejs "^1.1.0"
+
+"@pixi/sprite-animated@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/sprite-animated/-/sprite-animated-7.2.4.tgz#46b95e52781dd7cf84ee315521c209e48c40656d"
+ integrity sha512-9eRriPSC0QVS7U9zQlrG3uEI5+h3fi+mqofXy+yjk1sGCmXSIJME5p2wg2mzxoJk3qkSMagQA9QHtL26Fti8Iw==
+
+"@pixi/sprite-tiling@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/sprite-tiling/-/sprite-tiling-7.2.4.tgz#7bcbd6e0096512fe18934a7b3250c57be19b63e4"
+ integrity sha512-nGfxQoACRx49dUN0oW1vFm3141M+7gkAbzoNJym2Pljd2dpLME9fb5E6Lyahu0yWMaPRhhGorn6z9VIGmTF3Jw==
+
+"@pixi/sprite@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/sprite/-/sprite-7.2.4.tgz#be7cd2d58d263131019545a83bb4df7340452ba1"
+ integrity sha512-DhR1B+/d0eXpxHIesJMXcVPrKFwQ+zRA1LvEIFfzewqfaRN3X6PMIuoKX8SIb6tl+Hq8Ba9Pe28zI7d2rmRzrA==
+
+"@pixi/spritesheet@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/spritesheet/-/spritesheet-7.2.4.tgz#9214d0c75aa95639c1f528091ac4a4850f5b5b8e"
+ integrity sha512-LNmlavyiMQeCF0U4S+yhzxUYmPmat6EpLjLnkGukQTZV5CZkxDCVgXM9uKoRF2DvNydj4yuwZ6+JjK8QssHI8Q==
+
+"@pixi/text-bitmap@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/text-bitmap/-/text-bitmap-7.2.4.tgz#444010da3898c35e2cdb01493bdc21706c9356a1"
+ integrity sha512-3u2CP4VN+muCaq/jtj7gn0hb3DET/X2S04zTBcgc2WVGufJc62yz+UDzS9jC+ellotVdt9c8U74++vpz3zJGfw==
+
+"@pixi/text-html@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/text-html/-/text-html-7.2.4.tgz#4702cdb97c6a10ca883d004808d45b1517c7129b"
+ integrity sha512-0NfLAE/w51ZtatxVqLvDS62iO0VLKsSdctqTAVv4Zlgdk9TKJmX1WUucHJboTvbm2SbDjNDGfZ6qXM5nAslIDQ==
+
+"@pixi/text@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/text/-/text-7.2.4.tgz#b31e7619ba80acee69cd9fb33948d34f1839bc61"
+ integrity sha512-DGu7ktpe+zHhqR2sG9NsJt4mgvSObv5EqXTtUxD4Z0li1gmqF7uktpLyn5I6vSg1TTEL4TECClRDClVDGiykWw==
+
+"@pixi/ticker@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/ticker/-/ticker-7.2.4.tgz#5acb761d3b53a1bbb2e34db59eb2a1b0442a8ed8"
+ integrity sha512-hQQHIHvGeFsP4GNezZqjzuhUgNQEVgCH9+qU05UX1Mc5UHC9l6OJnY4VTVhhcHxZjA6RnyaY+1zBxCnoXuazpg==
+ dependencies:
+ "@pixi/extensions" "7.2.4"
+ "@pixi/settings" "7.2.4"
+ "@pixi/utils" "7.2.4"
+
+"@pixi/utils@7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@pixi/utils/-/utils-7.2.4.tgz#9f74e859481e3efbb6e54e524427b39a6d99829c"
+ integrity sha512-VUGQHBOINIS4ePzoqafwxaGPVRTa3oM/mEutIIHbNGI3b+QvSO+1Dnk40M0zcH6Bo+MxQZbOZK5X/wO9oU5+LQ==
+ dependencies:
+ "@pixi/color" "7.2.4"
+ "@pixi/constants" "7.2.4"
+ "@pixi/settings" "7.2.4"
+ "@types/earcut" "^2.1.0"
+ earcut "^2.2.4"
+ eventemitter3 "^4.0.0"
+ url "^0.11.0"
+
+"@types/css-font-loading-module@^0.0.7":
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz#2f98ede46acc0975de85c0b7b0ebe06041d24601"
+ integrity sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==
+
+"@types/earcut@^2.1.0":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@types/earcut/-/earcut-2.1.1.tgz#573a0af609f17005c751f6f4ffec49cfe358ea51"
+ integrity sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==
+
+"@types/offscreencanvas@^2019.6.4":
+ version "2019.7.0"
+ resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz#e4a932069db47bb3eabeb0b305502d01586fa90d"
+ integrity sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==
+
+colord@^2.9.3:
+ version "2.9.3"
+ resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
+ integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
+
+earcut@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a"
+ integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==
+
+esbuild@^0.17.5:
+ version "0.17.16"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.16.tgz#5efec24a8ff29e0c157359f27e1b5532a728b720"
+ integrity sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.17.16"
+ "@esbuild/android-arm64" "0.17.16"
+ "@esbuild/android-x64" "0.17.16"
+ "@esbuild/darwin-arm64" "0.17.16"
+ "@esbuild/darwin-x64" "0.17.16"
+ "@esbuild/freebsd-arm64" "0.17.16"
+ "@esbuild/freebsd-x64" "0.17.16"
+ "@esbuild/linux-arm" "0.17.16"
+ "@esbuild/linux-arm64" "0.17.16"
+ "@esbuild/linux-ia32" "0.17.16"
+ "@esbuild/linux-loong64" "0.17.16"
+ "@esbuild/linux-mips64el" "0.17.16"
+ "@esbuild/linux-ppc64" "0.17.16"
+ "@esbuild/linux-riscv64" "0.17.16"
+ "@esbuild/linux-s390x" "0.17.16"
+ "@esbuild/linux-x64" "0.17.16"
+ "@esbuild/netbsd-x64" "0.17.16"
+ "@esbuild/openbsd-x64" "0.17.16"
+ "@esbuild/sunos-x64" "0.17.16"
+ "@esbuild/win32-arm64" "0.17.16"
+ "@esbuild/win32-ia32" "0.17.16"
+ "@esbuild/win32-x64" "0.17.16"
+
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+is-core-module@^2.11.0:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4"
+ integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==
+ dependencies:
+ has "^1.0.3"
+
+ismobilejs@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e"
+ integrity sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==
+
+nanoid@^3.3.4:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+pixi.js@^7.2.4:
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/pixi.js/-/pixi.js-7.2.4.tgz#4cd6776bf7f74a6c5e121dd1b59329e66be2ce49"
+ integrity sha512-nBH60meoLnHxoMFz17HoMxXS4uJpG5jwIdL+Gx2S11TzWgP3iKF+/WLOTrkSdyuQoQSdIBxVqpnYii0Wiox15A==
+ dependencies:
+ "@pixi/accessibility" "7.2.4"
+ "@pixi/app" "7.2.4"
+ "@pixi/assets" "7.2.4"
+ "@pixi/compressed-textures" "7.2.4"
+ "@pixi/core" "7.2.4"
+ "@pixi/display" "7.2.4"
+ "@pixi/events" "7.2.4"
+ "@pixi/extensions" "7.2.4"
+ "@pixi/extract" "7.2.4"
+ "@pixi/filter-alpha" "7.2.4"
+ "@pixi/filter-blur" "7.2.4"
+ "@pixi/filter-color-matrix" "7.2.4"
+ "@pixi/filter-displacement" "7.2.4"
+ "@pixi/filter-fxaa" "7.2.4"
+ "@pixi/filter-noise" "7.2.4"
+ "@pixi/graphics" "7.2.4"
+ "@pixi/mesh" "7.2.4"
+ "@pixi/mesh-extras" "7.2.4"
+ "@pixi/mixin-cache-as-bitmap" "7.2.4"
+ "@pixi/mixin-get-child-by-name" "7.2.4"
+ "@pixi/mixin-get-global-position" "7.2.4"
+ "@pixi/particle-container" "7.2.4"
+ "@pixi/prepare" "7.2.4"
+ "@pixi/sprite" "7.2.4"
+ "@pixi/sprite-animated" "7.2.4"
+ "@pixi/sprite-tiling" "7.2.4"
+ "@pixi/spritesheet" "7.2.4"
+ "@pixi/text" "7.2.4"
+ "@pixi/text-bitmap" "7.2.4"
+ "@pixi/text-html" "7.2.4"
+
+postcss@^8.4.21:
+ version "8.4.21"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
+ integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==
+
+resolve@^1.22.1:
+ version "1.22.2"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
+ integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
+ dependencies:
+ is-core-module "^2.11.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+rollup@^3.18.0:
+ version "3.20.2"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.20.2.tgz#f798c600317f216de2e4ad9f4d9ab30a89b690ff"
+ integrity sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+typescript@^4.9.3:
+ version "4.9.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
+ integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+vite@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-4.2.1.tgz#6c2eb337b0dfd80a9ded5922163b94949d7fc254"
+ integrity sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==
+ dependencies:
+ esbuild "^0.17.5"
+ postcss "^8.4.21"
+ resolve "^1.22.1"
+ rollup "^3.18.0"
+ optionalDependencies:
+ fsevents "~2.3.2"