commit 63f6a55de1cc970d5947f88f7a1f72a22b902caf Author: Kalle Struik Date: Sun Apr 9 00:12:04 2023 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4048e1d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.gradle/ +.idea/ +build/ + diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..67257b1 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,33 @@ +plugins { + kotlin("js") version "1.6.10" + kotlin("plugin.serialization") version "1.6.10" +} + +group = "nl.kallestruik" +version = "1.0" + +repositories { + mavenCentral() +} + +dependencies { + testImplementation(kotlin("test")) + implementation("org.jetbrains.kotlin-wrappers:kotlin-react:17.0.2-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-react-dom:17.0.2-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-styled:5.3.1-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-react-router-dom:5.2.0-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-redux:4.1.0-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-react-redux:7.2.4-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") +} + +kotlin { + js(IR) { + binaries.executable() + browser { + commonWebpackConfig { + cssSupport.enabled = true + } + } + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..8af57df --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +kotlin.code.style=official +kotlin.js.generate.executable.default=false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..7454180 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e750102 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock new file mode 100644 index 0000000..1b80b3c --- /dev/null +++ b/kotlin-js-store/yarn.lock @@ -0,0 +1,3520 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/generator@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.9.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.4.5": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.16.7", "@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== + +"@emotion/is-prop-valid@^0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/component-emitter@^1.2.10": + version "1.2.11" + resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506" + integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ== + +"@types/cookie@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.8": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + +"@types/eslint-scope@^3.7.0": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/hoist-non-react-statics@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/node@*", "@types/node@>=10.0.0": + version "17.0.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" + integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/react-redux@^7.1.20": + version "7.1.22" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.22.tgz#0eab76a37ef477cc4b53665aeaf29cb60631b72a" + integrity sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react@*": + version "17.0.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" + integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/retry@^0.12.0": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" + integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== + +"@webpack-cli/info@^1.4.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" + integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" + integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn@^8.4.1: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.8.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54" + integrity sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" + integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.19.1, body-parser@^1.19.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== + dependencies: + bytes "3.1.1" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.6" + raw-body "2.4.2" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserslist@^4.14.5: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caniuse-lite@^1.0.30001286: + version "1.0.30001312" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.5.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-in-js-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== + dependencies: + hyphenate-style-name "^1.0.2" + isobject "^3.0.1" + +css-in-js-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" + integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== + dependencies: + hyphenate-style-name "^1.0.3" + +css-loader@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.3.0.tgz#334d3500ff0a0c14cfbd4b0670088dbb5b5c1530" + integrity sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg== + dependencies: + icss-utils "^5.1.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + semver "^7.3.5" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" + integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +date-format@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873" + integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +debug@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@~4.3.1: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +default-gateway@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.4.17: + version "1.4.68" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz#d79447b6bd1bec9183f166bb33d4bef0d5e4e568" + integrity sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +engine.io-parser@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.3.tgz#83d3a17acfd4226f19e721bb22a1ee8f7662d2f6" + integrity sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA== + dependencies: + base64-arraybuffer "0.1.4" + +engine.io@~4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-4.1.2.tgz#f96ceb56d4b39cc7ca5bd29a20e9c99c1ad1a765" + integrity sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ== + dependencies: + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~4.0.0" + ws "~7.4.2" + +enhanced-resolve@^5.8.3: + version "5.9.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" + integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.6" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2, finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.4: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + +follow-redirects@^1.0.0: + version "1.14.8" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" + integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== + +format-util@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" + integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +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== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.7: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +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" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + +http-proxy-middleware@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + 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" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inline-style-prefixer@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" + integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== + dependencies: + css-in-js-utils "^2.0.0" + +internal-ip@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" + integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== + dependencies: + default-gateway "^6.0.0" + ipaddr.js "^1.9.1" + is-ip "^3.1.0" + p-event "^4.2.0" + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ip@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isbinaryfile@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +karma-chrome-launcher@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" + integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== + dependencies: + which "^1.2.1" + +karma-mocha@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" + integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== + dependencies: + minimist "^1.2.3" + +karma-sourcemap-loader@0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz#d4bae72fb7a8397328a62b75013d2df937bdcf9c" + integrity sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g== + dependencies: + graceful-fs "^4.1.2" + +karma-webpack@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" + integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + webpack-merge "^4.1.5" + +karma@6.3.4: + version "6.3.4" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.4.tgz#359899d3aab3d6b918ea0f57046fd2a6b68565e6" + integrity sha512-hbhRogUYIulfkBTZT7xoPrCYhRBnBoqbbL4fszWD0ReFGUxU+LYBr3dwKdAluaDQ/ynT9/7C+Lf7pPNW4gSx4Q== + dependencies: + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.5.1" + colors "^1.4.0" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.3.0" + mime "^2.5.2" + minimatch "^3.0.4" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^3.1.0" + source-map "^0.6.1" + tmp "^0.2.1" + ua-parser-js "^0.7.28" + yargs "^16.1.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log4js@^6.3.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.1.tgz#9d3a8bf2c31c1e213fe3fc398a6053f7a2bc53e8" + integrity sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg== + dependencies: + date-format "^4.0.3" + debug "^4.3.3" + flatted "^3.2.4" + rfdc "^1.3.0" + streamroller "^3.0.2" + +loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + dependencies: + fs-monkey "1.0.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.1.tgz#879ad447200773912898b46cd516a7abbb5e50b0" + integrity sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.3, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mocha@9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.2.tgz#93f53175b0f0dc4014bd2d612218fccfcf3534d3" + integrity sha512-ta3LtJ+63RIBP03VBjMGtSqbe6cWXRejF9SyM9Zyli1CKZJZ+vfCTj3oW24V7wAphMJdpOFLoMI3hjJ1LWbs0w== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.2" + debug "4.3.2" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.25" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.1.5" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nanoid@3.1.25: + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== + +nanoid@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" + integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-releases@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-assign@^4, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +p-event@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + dependencies: + "@types/retry" "^0.12.0" + retry "^0.13.1" + +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +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== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +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== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.2.15: + version "8.4.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" + integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== + dependencies: + nanoid "^3.2.0" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-redux@^7.2.4: + version "7.2.6" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" + integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" + +react-router-dom@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" + integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" + integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.0.1: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + +redux@^4.0.0, redux@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" + integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== + dependencies: + "@babel/runtime" "^7.9.2" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + 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 sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve@^1.9.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "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== + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.11: + version "1.10.14" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" + integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== + dependencies: + node-forge "^0.10.0" + +semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@6.0.0, serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +socket.io-adapter@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz#edc5dc36602f2985918d631c1399215e97a1b527" + integrity sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg== + +socket.io-parser@~4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" + integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== + dependencies: + "@types/component-emitter" "^1.2.10" + component-emitter "~1.3.0" + debug "~4.3.1" + +socket.io@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-3.1.2.tgz#06e27caa1c4fc9617547acfbb5da9bc1747da39a" + integrity sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw== + dependencies: + "@types/cookie" "^0.4.0" + "@types/cors" "^2.8.8" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.1" + engine.io "~4.1.0" + socket.io-adapter "~2.1.0" + socket.io-parser "~4.0.3" + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +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== + +source-map-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" + integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.2" + source-map-js "^0.6.2" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +streamroller@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.2.tgz#30418d0eee3d6c93ec897f892ed098e3a81e68b7" + integrity sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA== + dependencies: + date-format "^4.0.3" + debug "^4.1.1" + fs-extra "^10.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.0.tgz#d66ea95fc50b22f8b79b69a9e414760fcf58d8d8" + integrity sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ== + +styled-components@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" + integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +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== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.3: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + dependencies: + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.7.2: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tiny-invariant@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +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" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +ua-parser-js@^0.7.28: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +watchpack@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-cli@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.0.tgz#dc43e6e0f80dd52e89cbf73d5294bcd7ad6eb343" + integrity sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.1.0" + "@webpack-cli/info" "^1.4.0" + "@webpack-cli/serve" "^1.6.0" + colorette "^2.0.14" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^5.2.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== + dependencies: + colorette "^2.0.10" + memfs "^3.4.1" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.1.tgz#759d3337f0fbea297fbd1e433ab04ccfc000076b" + integrity sha512-qNXQCVYo1kYhH9pgLtm8LRNkXX3XzTfHSj/zqzaqYzGPca+Qjr+81wj1jgPMCHhIhso9WEQ+kX9z23iG9PzQ7w== + dependencies: + ansi-html-community "^0.0.8" + bonjour "^3.5.0" + chokidar "^3.5.1" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + del "^6.0.0" + express "^4.17.1" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.0" + internal-ip "^6.2.0" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + portfinder "^1.0.28" + schema-utils "^3.1.0" + selfsigned "^1.10.11" + serve-index "^1.9.1" + sockjs "^0.3.21" + spdy "^4.0.2" + strip-ansi "^7.0.0" + url "^0.11.0" + webpack-dev-middleware "^5.2.1" + ws "^8.1.0" + +webpack-merge@^4.1.5: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.2.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@5.57.1: + version "5.57.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.57.1.tgz#ead5ace2c17ecef2ae8126f143bfeaa7f55eab44" + integrity sha512-kHszukYjTPVfCOEyrUthA3jqJwduY/P3eO8I0gMNOZGIQWKAwZftxmp5hq6paophvwo9NoUrcZOecs9ulOyyTg== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.2.0" + webpack-sources "^3.2.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +workerpool@6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" + integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^8.1.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@~7.4.2: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..6905d2d --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,3 @@ + +rootProject.name = "DConfig-Web" + diff --git a/src/main/kotlin/Client.kt b/src/main/kotlin/Client.kt new file mode 100644 index 0000000..2f5fd66 --- /dev/null +++ b/src/main/kotlin/Client.kt @@ -0,0 +1,26 @@ +import components.jsonSchemaRoot +import react.dom.render +import kotlinx.browser.document +import kotlinx.browser.window + +fun main() { + //TODO: + // - Parse and render description + // - Check constraints? + // - Defaults? + // - Make things look nice + + + window.onload = { + render(document.getElementById("root")) { + jsonSchemaRoot("/arena.schema.json") +// child(SchemaPart::class) { +// attrs { +// source = "/arena.schema.json" +// name = "ROOT" +// required = true +// } +// } + } + } +} diff --git a/src/main/kotlin/NameChangeEvent.kt b/src/main/kotlin/NameChangeEvent.kt new file mode 100644 index 0000000..f9e4806 --- /dev/null +++ b/src/main/kotlin/NameChangeEvent.kt @@ -0,0 +1,6 @@ +import kotlinx.serialization.json.JsonElement + +data class NameChangeEvent( + val id: String, + val name: String, +) \ No newline at end of file diff --git a/src/main/kotlin/SchemaPart.kt b/src/main/kotlin/SchemaPart.kt new file mode 100644 index 0000000..a05d084 --- /dev/null +++ b/src/main/kotlin/SchemaPart.kt @@ -0,0 +1,219 @@ +import kotlinx.html.InputType +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import org.w3c.dom.HTMLInputElement +import org.w3c.xhr.XMLHttpRequest +import react.* +import react.dom.option +import schema.JsonSchema +import schema.JsonType +import styled.* + +external interface SchemaPartProps : Props { + var source: String? + var name: String + var schema: JsonSchema? + var required: Boolean +} + +data class SchemaPartState( + var source: String?, + var name: String, + var schema: JsonSchema?, + var required: Boolean, + var arrayItems: MutableList = mutableListOf(), + var mapItems: MutableMap = mutableMapOf(), + var nextMapItem: String= "", +): State + +class SchemaPart(props: SchemaPartProps) : RComponent(props) { + + init { + this.state = SchemaPartState( + source = props.source, + name = props.name, + schema = props.schema, + required = props.required, + ) + + val json = Json { + ignoreUnknownKeys = true + prettyPrint = true + } + + val xmlHttp = XMLHttpRequest() + if (state.source != null) { + xmlHttp.open("GET", "${props.source}") + xmlHttp.onload = { + val schema: JsonSchema = json.decodeFromString(xmlHttp.responseText) + setState { + this.schema = schema + } + } + + xmlHttp.send() + } + } + + override fun RBuilder.render() { + if (state.name == "\$schema") + return + + styledDiv { + css { + +SchemaPartStyles.schemaPart + } + + if (state.schema?.type == JsonType.NUMBER) { + styledDiv { + if (state.required) + +"*" + + +state.name + + styledInput(InputType.number) { + + } + } + return@styledDiv + } + + if (state.schema?.type == JsonType.STRING) { + styledDiv { + if (state.required) + +"*" + + +state.name + + if (state.schema?.enum?.isNotEmpty() == true) { + styledSelect { + for (opt in state.schema!!.enum) { + option("", opt) + } + } + } else { + styledInput(InputType.text) { + + } + } + } + return@styledDiv + } + + if (state.schema?.type == JsonType.BOOLEAN) { + styledDiv { + if (state.required) + +"*" + + +state.name + + styledInput(InputType.checkBox) { + + } + } + return@styledDiv + } + + styledSpan { + css { + +SchemaPartStyles.schemaName + } + if (state.required) + +"*" + + +state.name + } + + styledDiv { + var type = state.schema?.type + if (type == null || type == JsonType.UNKNOWN) + type = state.schema?.conditionIf?.type + + if (!(type == JsonType.OBJECT || type == JsonType.ARRAY)) + +"Type: $type" + } + + if (state.schema != null) { + // Object properties + for (property in state.schema!!.properties) { + child(SchemaPart::class) { + attrs { + name = property.key + schema = property.value + required = state.schema?.required?.contains(property.key) ?: false + } + } + } + + // Array entries + if (state.schema?.type == JsonType.ARRAY) { + styledButton { + +"+" + attrs.onClickFunction = { + setState { + arrayItems.add(state.schema!!.items!!) + } + } + } + } + + // Object map elements + if (state.schema?.additionalProperties != null) { + styledInput { + attrs.onChangeFunction = { + state.nextMapItem = (it.target as HTMLInputElement).value + } + } + styledButton { + +"+" + attrs.onClickFunction = { + setState { + mapItems[state.nextMapItem] = state.schema!!.additionalProperties!! + } + } + } + } + } + + for (child in state.arrayItems) { + child(SchemaPart::class) { + attrs { + name = "Item" + schema = child + } + } + } + + for (child in state.mapItems) { + child(SchemaPart::class) { + attrs { + name = child.key + schema = child.value + } + } + } + } +// styledDiv { +// css { +// +WelcomeStyles.textContainer +// } +// +"Hello, ${state.name}" +// } +// styledInput { +// css { +// +WelcomeStyles.textInput +// } +// attrs { +// type = InputType.text +// value = state.name +// onChangeFunction = { event -> +// setState( +// WelcomeState(name = (event.target as HTMLInputElement).value) +// ) +// } +// } +// } + } +} diff --git a/src/main/kotlin/SchemaPartStyles.kt b/src/main/kotlin/SchemaPartStyles.kt new file mode 100644 index 0000000..b40113d --- /dev/null +++ b/src/main/kotlin/SchemaPartStyles.kt @@ -0,0 +1,17 @@ +import kotlinx.css.* +import styled.StyleSheet + +object SchemaPartStyles : StyleSheet("SchemaPartStyles", isStatic = true) { + val schemaPart by css { + margin(0.px, 0.px, 10.px, 20.px) + padding(5.px) + + + + } + + val schemaName by css { + padding(5.px) + backgroundColor = rgba(0, 0, 0, 0.2) + } +} diff --git a/src/main/kotlin/Styles.kt b/src/main/kotlin/Styles.kt new file mode 100644 index 0000000..e45088b --- /dev/null +++ b/src/main/kotlin/Styles.kt @@ -0,0 +1,107 @@ +import kotlinx.css.* +import kotlinx.css.properties.border +import styled.CssHolder +import styled.StyleSheet + +object Styles : StyleSheet("Styles", isStatic = true) { + val inputContainer by css { + display = Display.inlineBlock + position = Position.relative + textAlign = TextAlign.left + width = LinearDimension.fitContent + paddingTop = 10.px + margin(5.px, 10.px, 5.px, 10.px) + + input { + display = Display.block + border(2.px, BorderStyle.solid, Color.white, 5.px) + padding(10.px) + backgroundColor = rgb(21, 21, 21) + color = Color.white + fontWeight = FontWeight.normal + + focus { + outline = Outline.none + } + } + + select { + display = Display.block + border(2.px, BorderStyle.solid, Color.white, 5.px) + padding(10.px) + backgroundColor = rgb(21, 21, 21) + color = Color.white + fontWeight = FontWeight.normal + + focus { + outline = Outline.none + } + } + + label { + position = Position.absolute + textTransform = TextTransform.capitalize + top = (-5).px + left = 10.px + padding(0.px, 2.px) + backgroundColor = rgb(21, 21, 21) + color = Color.white + } + + focusWithin { + color = hex(0xCD23F8) + + input { + borderColor = hex(0xCD23F8) + } + + select { + borderColor = hex(0xCD23F8) + } + } + } + + val jsonContainer by css { + margin(10.px, 20.px, 10.px, 20.px) + } + + val objectHeader by css { + display = Display.flex + alignContent = Align.center + alignItems = Align.center + justifyContent = JustifyContent.spaceBetween + backgroundColor = rgb(32, 32, 32) + padding(5.px) + } + + val objectContainer by css { + borderWidth = 2.px + borderStyle = BorderStyle.solid + margin(10.px) + } + + val descriptionContainer by css { + display = Display.flex + margin(10.px) + backgroundColor = rgb(6, 25, 80) + } + + val descriptionIconContainer by css { + display = Display.inlineFlex + alignItems = Align.center + alignContent = Align.center + backgroundColor = hex(0x114683) + boxSizing = BoxSizing.borderBox + padding(15.px) + } + + val descriptionText by css { + display = Display.inlineBlock + padding(10.px) + alignSelf = Align.center + } + + val descriptionLine by css { + margin(0.px) + } +} diff --git a/src/main/kotlin/ValueChangeEvent.kt b/src/main/kotlin/ValueChangeEvent.kt new file mode 100644 index 0000000..59114e7 --- /dev/null +++ b/src/main/kotlin/ValueChangeEvent.kt @@ -0,0 +1,6 @@ +import kotlinx.serialization.json.JsonElement + +data class ValueChangeEvent( + val id: String, + val value: JsonElement, +) \ No newline at end of file diff --git a/src/main/kotlin/Welcome.kt b/src/main/kotlin/Welcome.kt new file mode 100644 index 0000000..9120f3b --- /dev/null +++ b/src/main/kotlin/Welcome.kt @@ -0,0 +1,47 @@ +import kotlinx.html.InputType +import kotlinx.html.js.onChangeFunction +import org.w3c.dom.HTMLInputElement +import react.Props +import react.RBuilder +import react.RComponent +import react.State +import react.dom.attrs +import styled.css +import styled.styledDiv +import styled.styledInput + +external interface WelcomeProps : Props { + var name: String +} + +data class WelcomeState(val name: String) : State + +class Welcome(props: WelcomeProps) : RComponent(props) { + + init { + state = WelcomeState(props.name) + } + + override fun RBuilder.render() { + styledDiv { + css { + +WelcomeStyles.textContainer + } + +"Hello, ${state.name}" + } + styledInput { + css { + +WelcomeStyles.textInput + } + attrs { + type = InputType.text + value = state.name + onChangeFunction = { event -> + setState( + WelcomeState(name = (event.target as HTMLInputElement).value) + ) + } + } + } + } +} diff --git a/src/main/kotlin/WelcomeStyles.kt b/src/main/kotlin/WelcomeStyles.kt new file mode 100644 index 0000000..d3b2276 --- /dev/null +++ b/src/main/kotlin/WelcomeStyles.kt @@ -0,0 +1,17 @@ +import kotlinx.css.* +import styled.StyleSheet + +object WelcomeStyles : StyleSheet("WelcomeStyles", isStatic = true) { + val textContainer by css { + padding(5.px) + + backgroundColor = rgb(8, 97, 22) + color = rgb(56, 246, 137) + } + + val textInput by css { + margin(vertical = 5.px) + + fontSize = 14.px + } +} diff --git a/src/main/kotlin/components/DescriptionBlock.kt b/src/main/kotlin/components/DescriptionBlock.kt new file mode 100644 index 0000000..5edff2c --- /dev/null +++ b/src/main/kotlin/components/DescriptionBlock.kt @@ -0,0 +1,67 @@ +package components + +import Styles +import kotlinx.html.classes +import react.Props +import react.RBuilder +import react.RComponent +import react.State +import react.dom.attrs +import styled.css +import styled.styledDiv +import styled.styledI +import styled.styledP + +external interface DescriptionBlockProps: Props { + var description: List +} + +class DescriptionBlock(props: DescriptionBlockProps): RComponent() { + + override fun RBuilder.render() { + if (props.description.isEmpty()) + return + + styledDiv { + css { + +Styles.descriptionContainer + } + + styledDiv { + css { + +Styles.descriptionIconContainer + } + + styledI { + attrs { + classes = setOf("ri-information-line", "ri-xl") + } + } + } + + styledDiv { + css { + +Styles.descriptionText + } + + for (line in props.description) { + styledP { + css { + +Styles.descriptionLine + } + +line + } + } + } + } + } + +} + +fun RBuilder.descriptionBlock(description: List?) { + child(DescriptionBlock::class) { + attrs { + this.description = description?: listOf() + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonArray.kt b/src/main/kotlin/components/JsonArray.kt new file mode 100644 index 0000000..20d825d --- /dev/null +++ b/src/main/kotlin/components/JsonArray.kt @@ -0,0 +1,159 @@ +package components + +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.css.properties.border +import kotlinx.html.classes +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.buildJsonArray +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.* +import kotlin.random.Random + +external interface JsonArrayProps: Props { + var schema: ConfigSchema + var name: String + var data: kotlinx.serialization.json.JsonArray? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class JsonArrayState( + var entries: MutableMap = mutableMapOf(), + var data: kotlinx.serialization.json.JsonArray?, + var realData: MutableMap = mutableMapOf(), + var showChildren: Boolean = true, + var nextId: Int = 0, +): State + + +class JsonArray(props: JsonArrayProps): RComponent() { + init { + this.state = JsonArrayState( + data = props.data, + ) + + props.data?.forEachIndexed { index, element -> + state.entries[index] = props.schema.items!! + state.realData[index] = element + } + } + + override fun RBuilder.render() { + styledDiv { + css { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + //ri-delete-bin-7-line + + if (props.name != "") { + styledLabel { + css { + textTransform = TextTransform.capitalize + } + +props.name + } + } + + styledI { + css { + color = hex(0x4caf50) + alignSelf = Align.center + } + attrs { + classes = setOf("ri-add-line", "ri-xl") + onClickFunction = { + setState { + entries[state.nextId] = props.schema.items!! + nextId++ + showChildren = true + } + } + } + } + } + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + + descriptionBlock(props.schema.description) + + state.entries.forEach { + jsonArrayEntry( + schema = it.value, + data = state.realData[it.key], + id = it.key.toString(), + handleChange = ::handleChange, + onDelete = ::handleDelete, + level = props.level + 1, + ) + } + } + } + } + + fun handleChange(event: ValueChangeEvent) { + state.realData[event.id.toInt()] = event.value + state.data = buildJsonArray { + state.realData.forEach { + add(it.value) + } + } + + props.handleChange(ValueChangeEvent(props.id, state.data!!)) + } + + fun handleDelete(id: String) { + state.realData.remove(id.toInt()) + state.data = buildJsonArray { + state.realData.forEach { + add(it.value) + } + } + + setState { + entries.remove(id.toInt()) + } + + props.handleChange(ValueChangeEvent(props.id, state.data!!)) + } +} + +fun RBuilder.jsonArray(schema: ConfigSchema, name: String, data: kotlinx.serialization.json.JsonArray?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int) { + child(JsonArray::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonArrayEntry.kt b/src/main/kotlin/components/JsonArrayEntry.kt new file mode 100644 index 0000000..7a3e61f --- /dev/null +++ b/src/main/kotlin/components/JsonArrayEntry.kt @@ -0,0 +1,129 @@ +package components + +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.classes +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.JsonElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import schema.ConfigValueType +import schema.JsonType +import styled.* + +external interface JsonArrayEntryProps: Props { + var name: String + var schema: ConfigSchema + var data: JsonElement? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var onDelete: (id: String) -> Unit + var level: Int +} + +data class JsonArrayEntryState( + var data: JsonElement?, + var showChildren: Boolean = true, +): State + +class JsonArrayEntry(props: JsonArrayEntryProps): RComponent() { + + init { + this.state = JsonArrayEntryState( + data = props.data, + ) + } + + override fun RBuilder.render() { + styledDiv { + css { + margin(0.px, 0.px, 10.px, 20.px) + padding(5.px) + display = Display.flex + alignContent = Align.center + alignItems = Align.center + } + + if (props.schema.type != ConfigValueType.OBJECT) + styledI { + css { + color = Color.red + } + attrs { + classes = setOf("ri-delete-bin-7-line ri-xl") + onClickFunction = { + props.onDelete(props.id) + } + } + } + + styledDiv { + css { + display = Display.inlineBlock + if (props.schema.type == ConfigValueType.OBJECT) { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + } + + if (props.schema.type == ConfigValueType.OBJECT) + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + styledI { + css { + color = Color.red + } + attrs { + classes = setOf("ri-delete-bin-7-line") + onClickFunction = { + props.onDelete(props.id) + } + } + } + } + + if (state.showChildren) + jsonSchema( + schema = props.schema, + name = "", + data = state.data, + id = props.id, + handleChange = props.handleChange, + level = props.level, + ) + } + } + } +} + +fun RBuilder.jsonArrayEntry(schema: ConfigSchema, data: JsonElement?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, onDelete: (id: String) -> Unit, level: Int) { + child(JsonArrayEntry::class) { + attrs { + this.schema = schema + this.data = data + this.id = id + this.handleChange = handleChange + this.onDelete = onDelete + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonBoolean.kt b/src/main/kotlin/components/JsonBoolean.kt new file mode 100644 index 0000000..6d79055 --- /dev/null +++ b/src/main/kotlin/components/JsonBoolean.kt @@ -0,0 +1,85 @@ +package components + +import ValueChangeEvent +import kotlinx.css.portal +import kotlinx.html.InputType +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.booleanOrNull +import org.w3c.dom.HTMLInputElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import schema.JsonType +import styled.css +import styled.styledDiv +import styled.styledInput +import styled.styledLabel + +external interface JsonBooleanProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonPrimitive? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit +} + +data class JsonBooleanState( + var value: Boolean = false, + var data: JsonPrimitive?, +): State + + +class JsonBoolean(props: JsonBooleanProps): RComponent() { + init { + val default = props.schema.default?.booleanOrNull ?: false + this.state = JsonBooleanState( + value = props.data?.booleanOrNull ?: default, + data = props.data, + ) + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(state.value))) + } + + override fun RBuilder.render() { + styledDiv { + styledInput { + attrs { + id = "${props.id}-input" + type = InputType.checkBox + checked = state.value + onChangeFunction = { + val value = (it.target as HTMLInputElement).checked + setState { + this.value = value + } + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + + if (props.name != "") { + styledLabel { + +props.name + attrs { + htmlFor = "${props.id}-input" + } + } + } + } + } + +} + +fun RBuilder.jsonBoolean(schema: ConfigSchema, name: String, data: JsonPrimitive?, id: String, handleChange: (event: ValueChangeEvent) -> Unit) { + child(JsonBoolean::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonMap.kt b/src/main/kotlin/components/JsonMap.kt new file mode 100644 index 0000000..8864482 --- /dev/null +++ b/src/main/kotlin/components/JsonMap.kt @@ -0,0 +1,219 @@ +package components + +import NameChangeEvent +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.InputType +import kotlinx.html.classes +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.buildJsonObject +import org.w3c.dom.HTMLInputElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.* +import kotlin.random.Random + +external interface JsonMapProps: Props { + var schema: ConfigSchema + var name: String + var data: kotlinx.serialization.json.JsonObject? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class JsonMapState( + var entries: MutableMap = mutableMapOf(), + var names: MutableMap = mutableMapOf(), + var data: kotlinx.serialization.json.JsonObject?, + var showChildren: Boolean = true, +): State + + +class JsonMap(props: JsonMapProps): RComponent() { + init { + this.state = JsonMapState( + data = props.data, + ) + + val random = Random(Random.nextInt()) + state.data = buildJsonObject { + props.data?.forEach { entry -> + val index = random.nextInt().toString() + state.entries[index] = props.schema.items!! + state.names[index] = entry.key + put(index, entry.value) + } + } + } + + override fun RBuilder.render() { + styledDiv { + css { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + if (props.name != "") { + styledLabel { + css { + textTransform = TextTransform.capitalize + marginLeft = 10.px + } + +props.name + } + } + + styledI { + css { + color = hex(0x4caf50) + marginLeft = 10.px + alignSelf = Align.center + } + attrs { + classes = setOf("ri-add-line", "ri-xl") + onClickFunction = { + val id = Random.nextInt().toString() + setState { + entries[id] = props.schema.items!! + names[id] = "" + } + } + } + } + } + + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + + descriptionBlock(props.schema.description) + + for (entry in state.entries) { + jsonMapEntry( + schema = entry.value, + key = state.names[entry.key] ?: "", + data = state.data?.get(entry.key), + id = entry.key, + handleChange = ::handleChange, + onNameChange = ::handleNameChange, + onDelete = ::handleDelete, + allowedKeys = props.schema.constraints.allowedKeys?.filter { it.intersect(state.names.values.toSet()).isEmpty() }, + usePredefinedKeys = !props.schema.constraints.allowedKeys.isNullOrEmpty(), + level = props.level, + ) + } + } + } + } + + fun handleChange(event: ValueChangeEvent) { + state.data = buildJsonObject { + if (state.data != null) + for (entry in state.data!!) { + put(entry.key, entry.value) + } + + put(event.id, event.value) + } + + val newData = buildJsonObject { + if (state.data != null) { + for (entry in state.data!!) { + if (entry.key in state.names) + put(state.names[entry.key]!!, entry.value) + } + } + } + + props.handleChange(ValueChangeEvent(props.id, newData)) + } + + fun handleNameChange(event: NameChangeEvent) { + setState { + names[event.id] = event.name + } + + val newData = buildJsonObject { + if (state.data != null) { + for (entry in state.data!!) { + if (entry.key == event.id) { + put(event.name, entry.value) + continue + } + if (entry.key in state.names) + put(state.names[entry.key]!!, entry.value) + } + } + } + + props.handleChange(ValueChangeEvent(props.id, newData)) + } + + fun handleDelete(id: String) { + setState { + data = buildJsonObject { + if (state.data != null) + for (entry in state.data!!) { + if (entry.key == id) + continue + + put(entry.key, entry.value) + } + } + names.remove(id) + entries.remove(id) + } + + val newData = buildJsonObject { + if (state.data != null) { + for (entry in state.data!!) { + if (entry.key == id) { + continue + } + if (entry.key in state.names) + put(state.names[entry.key]!!, entry.value) + } + } + } + + props.handleChange(ValueChangeEvent(props.id, newData)) + } +} + +fun RBuilder.jsonMap(schema: ConfigSchema, name: String, data: kotlinx.serialization.json.JsonObject?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int) { + child(JsonMap::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonMapEntry.kt b/src/main/kotlin/components/JsonMapEntry.kt new file mode 100644 index 0000000..dd599d3 --- /dev/null +++ b/src/main/kotlin/components/JsonMapEntry.kt @@ -0,0 +1,175 @@ +package components + +import NameChangeEvent +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.InputType +import kotlinx.html.classes +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.HTMLSelectElement +import react.* +import react.dom.attrs +import react.dom.option +import schema.ConfigSchema +import styled.* +import kotlin.random.Random + +external interface JsonMapEntryProps: Props { + var name: String + var schema: ConfigSchema + var data: JsonElement? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var onNameChange: (event: NameChangeEvent) -> Unit + var onDelete: (id: String) -> Unit + var allowedKeys: List>? + var usePredefinedKeys: Boolean + var level: Int +} + +data class JsonMapEntryState( + var data: JsonElement?, + var showChildren: Boolean = true, + var name: String, +): State + +class JsonMapEntry(props: JsonMapEntryProps): RComponent() { + + init { + this.state = JsonMapEntryState( + data = props.data, + name = props.name, + ) + + if (!props.allowedKeys.isNullOrEmpty() && props.name.isBlank()) { + val name = props.allowedKeys?.getOrNull(0)?.getOrNull(0) ?: "" + console.log("Defaulting name to $name") + this.state.name = name + + props.onNameChange(NameChangeEvent(props.id, name)) + } + } + + override fun RBuilder.render() { + styledDiv { + css { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + if (props.usePredefinedKeys) { + styledSelect { + if (state.name.isNotBlank()){ + option("", state.name) + } + + for (optGroup in props.allowedKeys!!) { + for (opt in optGroup) + option("", opt) + } + + + + attrs { + value = state.name + onChangeFunction = { + val value = (it.target as HTMLSelectElement).value + setState { + this.name = value + } + + props.onNameChange(NameChangeEvent(props.id, value)) + } + } + } + } else { + styledInput { + attrs { + type = InputType.text + value = state.name + onChangeFunction = { + val value = (it.target as HTMLInputElement).value + setState { + this.name = value + } + + props.onNameChange(NameChangeEvent(props.id, value)) + } + } + } + } + + styledI { + css { + color = Color.red + marginLeft = 10.px + alignSelf = Align.center + } + attrs { + classes = setOf("ri-delete-bin-7-line") + onClickFunction = { + props.onDelete(props.id) + } + } + } + } + + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + jsonSchema( + schema = props.schema, + name = "", + data = state.data, + id = props.id, + handleChange = props.handleChange, + level = props.level + ) + } + } + } +} + +fun RBuilder.jsonMapEntry(schema: ConfigSchema, key: String, data: JsonElement?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, onNameChange: (event: NameChangeEvent) -> Unit, onDelete: (id: String) -> Unit, allowedKeys: List>?, usePredefinedKeys: Boolean, level: Int) { + child(JsonMapEntry::class) { + attrs { + this.schema = schema + this.name = key + this.data = data + this.id = id + this.handleChange = handleChange + this.onNameChange = onNameChange + this.onDelete = onDelete + this.allowedKeys = allowedKeys + this.usePredefinedKeys = usePredefinedKeys + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonNumber.kt b/src/main/kotlin/components/JsonNumber.kt new file mode 100644 index 0000000..472959a --- /dev/null +++ b/src/main/kotlin/components/JsonNumber.kt @@ -0,0 +1,95 @@ +package components + +import ValueChangeEvent +import kotlinx.css.portal +import kotlinx.html.InputType +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.doubleOrNull +import kotlinx.serialization.json.floatOrNull +import kotlinx.serialization.json.intOrNull +import org.w3c.dom.HTMLInputElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import schema.JsonType +import styled.css +import styled.styledDiv +import styled.styledInput +import styled.styledLabel + +external interface JsonNumberProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonPrimitive? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit +} + +data class JsonNumberState( + var value: Double = 0.0, + var data: JsonPrimitive?, +): State + + +class JsonNumber(props: JsonNumberProps): RComponent() { + init { + val default = props.schema.default?.doubleOrNull ?: 0.0 + + this.state = JsonNumberState( + value = props.data?.content?.toDoubleOrNull() ?: default, + data = props.data, + ) + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(state.value))) + } + + override fun RBuilder.render() { + styledDiv { + css { + +Styles.inputContainer + } + if (props.name != "") { + styledLabel { + +props.name + attrs { + htmlFor = "${props.id}-input" + } + } + } + + styledInput { + attrs { + id = "${props.id}-input" + type = InputType.number + value = state.value.toString() + onChangeFunction = { + val value = (it.target as HTMLInputElement).value.toDoubleOrNull() + if (value != null) { + setState { + this.value = value + this.data = JsonPrimitive(value) + } + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + } + } + } + +} + +fun RBuilder.jsonNumber(schema: ConfigSchema, name: String, data: JsonPrimitive?, id: String, handleChange: (event: ValueChangeEvent) -> Unit) { + child(JsonNumber::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonObject.kt b/src/main/kotlin/components/JsonObject.kt new file mode 100644 index 0000000..be691f2 --- /dev/null +++ b/src/main/kotlin/components/JsonObject.kt @@ -0,0 +1,126 @@ +package components + +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.classes +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.buildJsonObject +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.* + +external interface JsonObjectProps: Props { + var schema: ConfigSchema + var name: String + var data: kotlinx.serialization.json.JsonObject? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class JsonObjectState( + var data: kotlinx.serialization.json.JsonObject?, + var showChildren: Boolean = true, +): State + +class JsonObject(props: JsonObjectProps): RComponent() { + init { + this.state = JsonObjectState( + data = props.data, + ) + } + + override fun RBuilder.render() { + styledDiv { + css { + if (props.name != "") { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + } + if (props.name != "") { + + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + styledLabel { + css { + textTransform = TextTransform.capitalize + } + +props.name + } + + styledDiv { + css { + width = 24.px + } + } + } + } + + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + + descriptionBlock(props.schema.description) + + for (property in props.schema.children!!) { + jsonSchema( + schema = property.value, + name = property.key, + data = state.data?.get(property.key), + id = property.key, + handleChange = ::handleChange, + level = props.level + 1, + ) + } + } + } + } + + fun handleChange(event: ValueChangeEvent) { + state.data = buildJsonObject { + if (state.data != null) + for (entry in state.data!!) { + put(entry.key, entry.value) + } + + put(event.id, event.value) + } + + props.handleChange(ValueChangeEvent(props.id, state.data!!)) + } +} + +fun RBuilder.jsonObject(schema: ConfigSchema, name: String, data: kotlinx.serialization.json.JsonObject?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int) { + child(JsonObject::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonSchemaComponent.kt b/src/main/kotlin/components/JsonSchemaComponent.kt new file mode 100644 index 0000000..fb4887a --- /dev/null +++ b/src/main/kotlin/components/JsonSchemaComponent.kt @@ -0,0 +1,59 @@ +package components + +import ValueChangeEvent +import kotlinx.serialization.json.* +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonObject +import react.Props +import react.RBuilder +import react.RComponent +import react.State +import schema.ConfigSchema +import schema.ConfigValueType + +external interface ConfigSchemaComponentProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonElement? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class ConfigSchemaComponentState( + var data: JsonElement?, +): State + +class ConfigSchemaComponent(props: ConfigSchemaComponentProps): RComponent() { + init { + this.state = ConfigSchemaComponentState( + data = props.data, + ) + } + + override fun RBuilder.render() { + when (props.schema.type) { + ConfigValueType.STRING -> jsonString(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + ConfigValueType.BOOLEAN -> jsonBoolean(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + ConfigValueType.OBJECT -> jsonObject(props.schema, props.name, state.data as JsonObject?, props.id, props.handleChange, props.level) + ConfigValueType.LIST -> jsonArray(props.schema, props.name, state.data as JsonArray?, props.id, props.handleChange, props.level) + ConfigValueType.MAP -> jsonMap(props.schema, props.name, state.data as JsonObject?, props.id, props.handleChange, props.level) + ConfigValueType.INTEGER -> jsonNumber(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + ConfigValueType.FLOAT -> jsonNumber(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + } + } +} + +fun RBuilder.jsonSchema(schema: ConfigSchema, name: String, data: JsonElement?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int = 0, attributes: ConfigSchemaComponentProps.() -> Unit = {}) { + child(ConfigSchemaComponent::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + attributes(this) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonSchemaRoot.kt b/src/main/kotlin/components/JsonSchemaRoot.kt new file mode 100644 index 0000000..fe926de --- /dev/null +++ b/src/main/kotlin/components/JsonSchemaRoot.kt @@ -0,0 +1,137 @@ +package components + +import ValueChangeEvent +import kotlinx.browser.window +import kotlinx.css.* +import kotlinx.html.InputType +import kotlinx.html.classes +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.url.URL +import org.w3c.dom.url.URLSearchParams +import org.w3c.files.Blob +import org.w3c.files.File +import org.w3c.files.FileReader +import org.w3c.files.get +import org.w3c.xhr.XMLHttpRequest +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.css +import styled.styledDiv +import styled.styledI +import styled.styledInput + +external interface JsonSchemaRootProps: Props { + var source: String +} + +data class JsonSchemaRootState( + var schema: ConfigSchema? = null, + var data: JsonObject = JsonObject(mapOf()), + var showJson: Boolean = false, +): State + + +class JsonSchemaRoot(props: JsonSchemaRootProps): RComponent() { + init { + this.state = JsonSchemaRootState() + + val json = Json { + ignoreUnknownKeys = true + prettyPrint = true + } + + val xmlHttp = XMLHttpRequest() + xmlHttp.open("GET", props.source) + xmlHttp.onload = { + val schema: ConfigSchema = json.decodeFromString(xmlHttp.responseText) + setState { + this.schema = schema + } + } + + xmlHttp.send() + } + + override fun RBuilder.render() { + styledDiv { + css { + backgroundColor = Color.black + width = 100.pct + fontSize = 2.rem + } + + styledI { + css { + + } + attrs { + classes = setOf("ri-folder-open-line") + } + + styledInput { + attrs { + type = InputType.file + onChangeFunction = { + val reader = FileReader() + reader.onloadend = { + setState { + data = Json.decodeFromString(reader.result as String) + } + } + reader.readAsText((it.target as HTMLInputElement).files!![0]!!) + } + } + } + } + styledI { + css { + + } + attrs { + classes = setOf("ri-save-3-line") + onClickFunction = { + setState { + showJson = !showJson + } + val encoded = Json.encodeToString(state.data) + console.log(encoded) +// //TODO: Send to the server and have to server respond with the data and a +// // Content-Disposition: attachment header. This should open a save dialog +//// window.location.assign("data:application/json;charset=utf-8,$encoded") +// js("window.open(\"data:application/json;charset=utf-8,\" + encodeURI(encoded), \"_blank\")") + } + } + } + } + + if (state.showJson) { + styledDiv { + +Json.encodeToString(state.data) + } + } + + if (state.schema != null) + jsonSchema(state.schema!!, "", state.data, "", ::handleChange) { + key = state.data.toString() + } + } + + fun handleChange(event: ValueChangeEvent) { + state.data = event.value as JsonObject + } +} + +fun RBuilder.jsonSchemaRoot(source: String) { + child(JsonSchemaRoot::class) { + attrs { + this.source = source + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonString.kt b/src/main/kotlin/components/JsonString.kt new file mode 100644 index 0000000..9276646 --- /dev/null +++ b/src/main/kotlin/components/JsonString.kt @@ -0,0 +1,111 @@ +package components + +import ValueChangeEvent +import kotlinx.css.portal +import kotlinx.html.InputType +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.contentOrNull +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.HTMLSelectElement +import react.* +import react.dom.attrs +import react.dom.option +import schema.ConfigSchema +import schema.JsonType +import styled.* + +external interface JsonStringProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonPrimitive? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit +} + +data class JsonStringState( + var value: String = "", + var data: JsonPrimitive?, +): State + + +class JsonString(props: JsonStringProps): RComponent() { + init { + val default: String = props.schema.default?.contentOrNull ?: "" + + this.state = JsonStringState( + value = props.data?.content ?: default, + data = props.data, + ) + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(state.value))) + } + + override fun RBuilder.render() { + styledDiv { + css { + +Styles.inputContainer + } + if (props.name != "") { + styledLabel { + +props.name + attrs { + htmlFor = "${props.id}-input" + } + } + } + + + if (!props.schema.constraints.enum.isNullOrEmpty()) { + styledSelect { + for (opt in props.schema.constraints.enum!!) { + option("", opt) + } + + attrs { + id = "${props.id}-input" + value = state.value + onChangeFunction = { + val value = (it.target as HTMLSelectElement).value + setState { + this.value = value + this.data = JsonPrimitive(value) + } + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + } else { + styledInput { + attrs { + id = "${props.id}-input" + type = InputType.text + value = state.value + onChangeFunction = { + val value = (it.target as HTMLInputElement).value + setState { + this.value = value + } + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + } + } + } +} + +fun RBuilder.jsonString(schema: ConfigSchema, name: String, data: JsonPrimitive?, id: String, handleChange: (event: ValueChangeEvent) -> Unit) { + child(JsonString::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/schema/ConfigSchema.kt b/src/main/kotlin/schema/ConfigSchema.kt new file mode 100644 index 0000000..bebd02d --- /dev/null +++ b/src/main/kotlin/schema/ConfigSchema.kt @@ -0,0 +1,14 @@ +package schema + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonPrimitive + +@Serializable +data class ConfigSchema( + val type: ConfigValueType, + val description: List? = null, + val children: Map? = null, + val items: ConfigSchema? = null, + val default: JsonPrimitive? = null, + val constraints: ConfigValueConstraints = ConfigValueConstraints(), +) diff --git a/src/main/kotlin/schema/ConfigValueConstraints.kt b/src/main/kotlin/schema/ConfigValueConstraints.kt new file mode 100644 index 0000000..cd7ee6b --- /dev/null +++ b/src/main/kotlin/schema/ConfigValueConstraints.kt @@ -0,0 +1,14 @@ +package schema + +import kotlinx.serialization.Serializable + +@Serializable +data class ConfigValueConstraints( + val enum: List? = null, + val allowedKeys: List>? = null, + val maxLength: Int? = null, + val maxValueInt: Long? = null, + val minValueInt: Long? = null, + val maxValueFloat: Double? = null, + val minValueFloat: Double? = null, +) \ No newline at end of file diff --git a/src/main/kotlin/schema/ConfigValueType.kt b/src/main/kotlin/schema/ConfigValueType.kt new file mode 100644 index 0000000..5bfb99b --- /dev/null +++ b/src/main/kotlin/schema/ConfigValueType.kt @@ -0,0 +1,11 @@ +package schema + +enum class ConfigValueType { + STRING, + MAP, + LIST, + OBJECT, + BOOLEAN, + INTEGER, + FLOAT +} \ No newline at end of file diff --git a/src/main/kotlin/schema/JsonSchema.kt b/src/main/kotlin/schema/JsonSchema.kt new file mode 100644 index 0000000..3a999d0 --- /dev/null +++ b/src/main/kotlin/schema/JsonSchema.kt @@ -0,0 +1,34 @@ +package schema + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +@Serializable +data class JsonSchema( + @SerialName("\$schema") + val schema: String = "", + val type: JsonType = JsonType.UNKNOWN, + val properties: Map = mapOf(), + val additionalProperties: JsonSchema? = null, + val definitions: Map = mapOf(), + val required: List = listOf(), + val items: JsonSchema? = null, + val description: String = "", + val enum: List = listOf(), + @SerialName("if") val conditionIf: JsonSchema? = null, + @SerialName("then") val conditionThen: JsonSchema? = null, + @SerialName("else") val conditionElse: JsonSchema? = null, +) + +@Serializable +enum class JsonType { + @SerialName("unknown") UNKNOWN, + @SerialName("string") STRING, + @SerialName("number") NUMBER, + @SerialName("boolean") BOOLEAN, + @SerialName("object") OBJECT, + @SerialName("array") ARRAY, + @SerialName("null") NULL, + +} diff --git a/src/main/resources/arena.schema.json b/src/main/resources/arena.schema.json new file mode 100644 index 0000000..2d89ed6 --- /dev/null +++ b/src/main/resources/arena.schema.json @@ -0,0 +1,4797 @@ +{ + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the arena." + ] + }, + "spawns": { + "type": "MAP", + "description": [ + "The spawns that the arena will use. These alone are not enough to make a player spawn (See spawnRules)." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "x": { + "type": "FLOAT", + "description": [ + "The x coordinate of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 1.7976931348623157E308, + "minValueFloat": 4.9E-324 + } + }, + "y": { + "type": "FLOAT", + "description": [ + "The y coordinate of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 1.7976931348623157E308, + "minValueFloat": 4.9E-324 + } + }, + "z": { + "type": "FLOAT", + "description": [ + "The z coordinate of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 1.7976931348623157E308, + "minValueFloat": 4.9E-324 + } + }, + "yaw": { + "type": "FLOAT", + "description": [ + "The yaw of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 180.0, + "minValueFloat": 0.0 + } + }, + "pitch": { + "type": "FLOAT", + "description": [ + "The pitch of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 90.0, + "minValueFloat": 0.0 + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "loadouts": { + "type": "MAP", + "description": [ + "The loadouts for the arena. These determine the items a player spawns with and what potion effects they get." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "hotbar": { + "type": "MAP", + "description": [ + "The items that will be in the players hotbar." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "material": { + "type": "STRING", + "description": [ + "The item type." + ], + "default": "AIR", + "constraints": { + "enum": [ + "AIR", + "STONE", + "GRANITE", + "POLISHED_GRANITE", + "DIORITE", + "POLISHED_DIORITE", + "ANDESITE", + "POLISHED_ANDESITE", + "DEEPSLATE", + "COBBLED_DEEPSLATE", + "POLISHED_DEEPSLATE", + "CALCITE", + "TUFF", + "DRIPSTONE_BLOCK", + "GRASS_BLOCK", + "DIRT", + "COARSE_DIRT", + "PODZOL", + "ROOTED_DIRT", + "CRIMSON_NYLIUM", + "WARPED_NYLIUM", + "COBBLESTONE", + "OAK_PLANKS", + "SPRUCE_PLANKS", + "BIRCH_PLANKS", + "JUNGLE_PLANKS", + "ACACIA_PLANKS", + "DARK_OAK_PLANKS", + "CRIMSON_PLANKS", + "WARPED_PLANKS", + "OAK_SAPLING", + "SPRUCE_SAPLING", + "BIRCH_SAPLING", + "JUNGLE_SAPLING", + "ACACIA_SAPLING", + "DARK_OAK_SAPLING", + "BEDROCK", + "SAND", + "RED_SAND", + "GRAVEL", + "COAL_ORE", + "DEEPSLATE_COAL_ORE", + "IRON_ORE", + "DEEPSLATE_IRON_ORE", + "COPPER_ORE", + "DEEPSLATE_COPPER_ORE", + "GOLD_ORE", + "DEEPSLATE_GOLD_ORE", + "REDSTONE_ORE", + "DEEPSLATE_REDSTONE_ORE", + "EMERALD_ORE", + "DEEPSLATE_EMERALD_ORE", + "LAPIS_ORE", + "DEEPSLATE_LAPIS_ORE", + "DIAMOND_ORE", + "DEEPSLATE_DIAMOND_ORE", + "NETHER_GOLD_ORE", + "NETHER_QUARTZ_ORE", + "ANCIENT_DEBRIS", + "COAL_BLOCK", + "RAW_IRON_BLOCK", + "RAW_COPPER_BLOCK", + "RAW_GOLD_BLOCK", + "AMETHYST_BLOCK", + "BUDDING_AMETHYST", + "IRON_BLOCK", + "COPPER_BLOCK", + "GOLD_BLOCK", + "DIAMOND_BLOCK", + "NETHERITE_BLOCK", + "EXPOSED_COPPER", + "WEATHERED_COPPER", + "OXIDIZED_COPPER", + "CUT_COPPER", + "EXPOSED_CUT_COPPER", + "WEATHERED_CUT_COPPER", + "OXIDIZED_CUT_COPPER", + "CUT_COPPER_STAIRS", + "EXPOSED_CUT_COPPER_STAIRS", + "WEATHERED_CUT_COPPER_STAIRS", + "OXIDIZED_CUT_COPPER_STAIRS", + "CUT_COPPER_SLAB", + "EXPOSED_CUT_COPPER_SLAB", + "WEATHERED_CUT_COPPER_SLAB", + "OXIDIZED_CUT_COPPER_SLAB", + "WAXED_COPPER_BLOCK", + "WAXED_EXPOSED_COPPER", + "WAXED_WEATHERED_COPPER", + "WAXED_OXIDIZED_COPPER", + "WAXED_CUT_COPPER", + "WAXED_EXPOSED_CUT_COPPER", + "WAXED_WEATHERED_CUT_COPPER", + "WAXED_OXIDIZED_CUT_COPPER", + "WAXED_CUT_COPPER_STAIRS", + "WAXED_EXPOSED_CUT_COPPER_STAIRS", + "WAXED_WEATHERED_CUT_COPPER_STAIRS", + "WAXED_OXIDIZED_CUT_COPPER_STAIRS", + "WAXED_CUT_COPPER_SLAB", + "WAXED_EXPOSED_CUT_COPPER_SLAB", + "WAXED_WEATHERED_CUT_COPPER_SLAB", + "WAXED_OXIDIZED_CUT_COPPER_SLAB", + "OAK_LOG", + "SPRUCE_LOG", + "BIRCH_LOG", + "JUNGLE_LOG", + "ACACIA_LOG", + "DARK_OAK_LOG", + "CRIMSON_STEM", + "WARPED_STEM", + "STRIPPED_OAK_LOG", + "STRIPPED_SPRUCE_LOG", + "STRIPPED_BIRCH_LOG", + "STRIPPED_JUNGLE_LOG", + "STRIPPED_ACACIA_LOG", + "STRIPPED_DARK_OAK_LOG", + "STRIPPED_CRIMSON_STEM", + "STRIPPED_WARPED_STEM", + "STRIPPED_OAK_WOOD", + "STRIPPED_SPRUCE_WOOD", + "STRIPPED_BIRCH_WOOD", + "STRIPPED_JUNGLE_WOOD", + "STRIPPED_ACACIA_WOOD", + "STRIPPED_DARK_OAK_WOOD", + "STRIPPED_CRIMSON_HYPHAE", + "STRIPPED_WARPED_HYPHAE", + "OAK_WOOD", + "SPRUCE_WOOD", + "BIRCH_WOOD", + "JUNGLE_WOOD", + "ACACIA_WOOD", + "DARK_OAK_WOOD", + "CRIMSON_HYPHAE", + "WARPED_HYPHAE", + "OAK_LEAVES", + "SPRUCE_LEAVES", + "BIRCH_LEAVES", + "JUNGLE_LEAVES", + "ACACIA_LEAVES", + "DARK_OAK_LEAVES", + "AZALEA_LEAVES", + "FLOWERING_AZALEA_LEAVES", + "SPONGE", + "WET_SPONGE", + "GLASS", + "TINTED_GLASS", + "LAPIS_BLOCK", + "SANDSTONE", + "CHISELED_SANDSTONE", + "CUT_SANDSTONE", + "COBWEB", + "GRASS", + "FERN", + "AZALEA", + "FLOWERING_AZALEA", + "DEAD_BUSH", + "SEAGRASS", + "SEA_PICKLE", + "WHITE_WOOL", + "ORANGE_WOOL", + "MAGENTA_WOOL", + "LIGHT_BLUE_WOOL", + "YELLOW_WOOL", + "LIME_WOOL", + "PINK_WOOL", + "GRAY_WOOL", + "LIGHT_GRAY_WOOL", + "CYAN_WOOL", + "PURPLE_WOOL", + "BLUE_WOOL", + "BROWN_WOOL", + "GREEN_WOOL", + "RED_WOOL", + "BLACK_WOOL", + "DANDELION", + "POPPY", + "BLUE_ORCHID", + "ALLIUM", + "AZURE_BLUET", + "RED_TULIP", + "ORANGE_TULIP", + "WHITE_TULIP", + "PINK_TULIP", + "OXEYE_DAISY", + "CORNFLOWER", + "LILY_OF_THE_VALLEY", + "WITHER_ROSE", + "SPORE_BLOSSOM", + "BROWN_MUSHROOM", + "RED_MUSHROOM", + "CRIMSON_FUNGUS", + "WARPED_FUNGUS", + "CRIMSON_ROOTS", + "WARPED_ROOTS", + "NETHER_SPROUTS", + "WEEPING_VINES", + "TWISTING_VINES", + "SUGAR_CANE", + "KELP", + "MOSS_CARPET", + "MOSS_BLOCK", + "HANGING_ROOTS", + "BIG_DRIPLEAF", + "SMALL_DRIPLEAF", + "BAMBOO", + "OAK_SLAB", + "SPRUCE_SLAB", + "BIRCH_SLAB", + "JUNGLE_SLAB", + "ACACIA_SLAB", + "DARK_OAK_SLAB", + "CRIMSON_SLAB", + "WARPED_SLAB", + "STONE_SLAB", + "SMOOTH_STONE_SLAB", + "SANDSTONE_SLAB", + "CUT_SANDSTONE_SLAB", + "PETRIFIED_OAK_SLAB", + "COBBLESTONE_SLAB", + "BRICK_SLAB", + "STONE_BRICK_SLAB", + "NETHER_BRICK_SLAB", + "QUARTZ_SLAB", + "RED_SANDSTONE_SLAB", + "CUT_RED_SANDSTONE_SLAB", + "PURPUR_SLAB", + "PRISMARINE_SLAB", + "PRISMARINE_BRICK_SLAB", + "DARK_PRISMARINE_SLAB", + "SMOOTH_QUARTZ", + "SMOOTH_RED_SANDSTONE", + "SMOOTH_SANDSTONE", + "SMOOTH_STONE", + "BRICKS", + "BOOKSHELF", + "MOSSY_COBBLESTONE", + "OBSIDIAN", + "TORCH", + "END_ROD", + "CHORUS_PLANT", + "CHORUS_FLOWER", + "PURPUR_BLOCK", + "PURPUR_PILLAR", + "PURPUR_STAIRS", + "SPAWNER", + "OAK_STAIRS", + "CHEST", + "CRAFTING_TABLE", + "FARMLAND", + "FURNACE", + "LADDER", + "COBBLESTONE_STAIRS", + "SNOW", + "ICE", + "SNOW_BLOCK", + "CACTUS", + "CLAY", + "JUKEBOX", + "OAK_FENCE", + "SPRUCE_FENCE", + "BIRCH_FENCE", + "JUNGLE_FENCE", + "ACACIA_FENCE", + "DARK_OAK_FENCE", + "CRIMSON_FENCE", + "WARPED_FENCE", + "PUMPKIN", + "CARVED_PUMPKIN", + "JACK_O_LANTERN", + "NETHERRACK", + "SOUL_SAND", + "SOUL_SOIL", + "BASALT", + "POLISHED_BASALT", + "SMOOTH_BASALT", + "SOUL_TORCH", + "GLOWSTONE", + "INFESTED_STONE", + "INFESTED_COBBLESTONE", + "INFESTED_STONE_BRICKS", + "INFESTED_MOSSY_STONE_BRICKS", + "INFESTED_CRACKED_STONE_BRICKS", + "INFESTED_CHISELED_STONE_BRICKS", + "INFESTED_DEEPSLATE", + "STONE_BRICKS", + "MOSSY_STONE_BRICKS", + "CRACKED_STONE_BRICKS", + "CHISELED_STONE_BRICKS", + "DEEPSLATE_BRICKS", + "CRACKED_DEEPSLATE_BRICKS", + "DEEPSLATE_TILES", + "CRACKED_DEEPSLATE_TILES", + "CHISELED_DEEPSLATE", + "BROWN_MUSHROOM_BLOCK", + "RED_MUSHROOM_BLOCK", + "MUSHROOM_STEM", + "IRON_BARS", + "CHAIN", + "GLASS_PANE", + "MELON", + "VINE", + "GLOW_LICHEN", + "BRICK_STAIRS", + "STONE_BRICK_STAIRS", + "MYCELIUM", + "LILY_PAD", + "NETHER_BRICKS", + "CRACKED_NETHER_BRICKS", + "CHISELED_NETHER_BRICKS", + "NETHER_BRICK_FENCE", + "NETHER_BRICK_STAIRS", + "ENCHANTING_TABLE", + "END_PORTAL_FRAME", + "END_STONE", + "END_STONE_BRICKS", + "DRAGON_EGG", + "SANDSTONE_STAIRS", + "ENDER_CHEST", + "EMERALD_BLOCK", + "SPRUCE_STAIRS", + "BIRCH_STAIRS", + "JUNGLE_STAIRS", + "CRIMSON_STAIRS", + "WARPED_STAIRS", + "COMMAND_BLOCK", + "BEACON", + "COBBLESTONE_WALL", + "MOSSY_COBBLESTONE_WALL", + "BRICK_WALL", + "PRISMARINE_WALL", + "RED_SANDSTONE_WALL", + "MOSSY_STONE_BRICK_WALL", + "GRANITE_WALL", + "STONE_BRICK_WALL", + "NETHER_BRICK_WALL", + "ANDESITE_WALL", + "RED_NETHER_BRICK_WALL", + "SANDSTONE_WALL", + "END_STONE_BRICK_WALL", + "DIORITE_WALL", + "BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_BRICK_WALL", + "COBBLED_DEEPSLATE_WALL", + "POLISHED_DEEPSLATE_WALL", + "DEEPSLATE_BRICK_WALL", + "DEEPSLATE_TILE_WALL", + "ANVIL", + "CHIPPED_ANVIL", + "DAMAGED_ANVIL", + "CHISELED_QUARTZ_BLOCK", + "QUARTZ_BLOCK", + "QUARTZ_BRICKS", + "QUARTZ_PILLAR", + "QUARTZ_STAIRS", + "WHITE_TERRACOTTA", + "ORANGE_TERRACOTTA", + "MAGENTA_TERRACOTTA", + "LIGHT_BLUE_TERRACOTTA", + "YELLOW_TERRACOTTA", + "LIME_TERRACOTTA", + "PINK_TERRACOTTA", + "GRAY_TERRACOTTA", + "LIGHT_GRAY_TERRACOTTA", + "CYAN_TERRACOTTA", + "PURPLE_TERRACOTTA", + "BLUE_TERRACOTTA", + "BROWN_TERRACOTTA", + "GREEN_TERRACOTTA", + "RED_TERRACOTTA", + "BLACK_TERRACOTTA", + "BARRIER", + "LIGHT", + "HAY_BLOCK", + "WHITE_CARPET", + "ORANGE_CARPET", + "MAGENTA_CARPET", + "LIGHT_BLUE_CARPET", + "YELLOW_CARPET", + "LIME_CARPET", + "PINK_CARPET", + "GRAY_CARPET", + "LIGHT_GRAY_CARPET", + "CYAN_CARPET", + "PURPLE_CARPET", + "BLUE_CARPET", + "BROWN_CARPET", + "GREEN_CARPET", + "RED_CARPET", + "BLACK_CARPET", + "TERRACOTTA", + "PACKED_ICE", + "ACACIA_STAIRS", + "DARK_OAK_STAIRS", + "DIRT_PATH", + "SUNFLOWER", + "LILAC", + "ROSE_BUSH", + "PEONY", + "TALL_GRASS", + "LARGE_FERN", + "WHITE_STAINED_GLASS", + "ORANGE_STAINED_GLASS", + "MAGENTA_STAINED_GLASS", + "LIGHT_BLUE_STAINED_GLASS", + "YELLOW_STAINED_GLASS", + "LIME_STAINED_GLASS", + "PINK_STAINED_GLASS", + "GRAY_STAINED_GLASS", + "LIGHT_GRAY_STAINED_GLASS", + "CYAN_STAINED_GLASS", + "PURPLE_STAINED_GLASS", + "BLUE_STAINED_GLASS", + "BROWN_STAINED_GLASS", + "GREEN_STAINED_GLASS", + "RED_STAINED_GLASS", + "BLACK_STAINED_GLASS", + "WHITE_STAINED_GLASS_PANE", + "ORANGE_STAINED_GLASS_PANE", + "MAGENTA_STAINED_GLASS_PANE", + "LIGHT_BLUE_STAINED_GLASS_PANE", + "YELLOW_STAINED_GLASS_PANE", + "LIME_STAINED_GLASS_PANE", + "PINK_STAINED_GLASS_PANE", + "GRAY_STAINED_GLASS_PANE", + "LIGHT_GRAY_STAINED_GLASS_PANE", + "CYAN_STAINED_GLASS_PANE", + "PURPLE_STAINED_GLASS_PANE", + "BLUE_STAINED_GLASS_PANE", + "BROWN_STAINED_GLASS_PANE", + "GREEN_STAINED_GLASS_PANE", + "RED_STAINED_GLASS_PANE", + "BLACK_STAINED_GLASS_PANE", + "PRISMARINE", + "PRISMARINE_BRICKS", + "DARK_PRISMARINE", + "PRISMARINE_STAIRS", + "PRISMARINE_BRICK_STAIRS", + "DARK_PRISMARINE_STAIRS", + "SEA_LANTERN", + "RED_SANDSTONE", + "CHISELED_RED_SANDSTONE", + "CUT_RED_SANDSTONE", + "RED_SANDSTONE_STAIRS", + "REPEATING_COMMAND_BLOCK", + "CHAIN_COMMAND_BLOCK", + "MAGMA_BLOCK", + "NETHER_WART_BLOCK", + "WARPED_WART_BLOCK", + "RED_NETHER_BRICKS", + "BONE_BLOCK", + "STRUCTURE_VOID", + "SHULKER_BOX", + "WHITE_SHULKER_BOX", + "ORANGE_SHULKER_BOX", + "MAGENTA_SHULKER_BOX", + "LIGHT_BLUE_SHULKER_BOX", + "YELLOW_SHULKER_BOX", + "LIME_SHULKER_BOX", + "PINK_SHULKER_BOX", + "GRAY_SHULKER_BOX", + "LIGHT_GRAY_SHULKER_BOX", + "CYAN_SHULKER_BOX", + "PURPLE_SHULKER_BOX", + "BLUE_SHULKER_BOX", + "BROWN_SHULKER_BOX", + "GREEN_SHULKER_BOX", + "RED_SHULKER_BOX", + "BLACK_SHULKER_BOX", + "WHITE_GLAZED_TERRACOTTA", + "ORANGE_GLAZED_TERRACOTTA", + "MAGENTA_GLAZED_TERRACOTTA", + "LIGHT_BLUE_GLAZED_TERRACOTTA", + "YELLOW_GLAZED_TERRACOTTA", + "LIME_GLAZED_TERRACOTTA", + "PINK_GLAZED_TERRACOTTA", + "GRAY_GLAZED_TERRACOTTA", + "LIGHT_GRAY_GLAZED_TERRACOTTA", + "CYAN_GLAZED_TERRACOTTA", + "PURPLE_GLAZED_TERRACOTTA", + "BLUE_GLAZED_TERRACOTTA", + "BROWN_GLAZED_TERRACOTTA", + "GREEN_GLAZED_TERRACOTTA", + "RED_GLAZED_TERRACOTTA", + "BLACK_GLAZED_TERRACOTTA", + "WHITE_CONCRETE", + "ORANGE_CONCRETE", + "MAGENTA_CONCRETE", + "LIGHT_BLUE_CONCRETE", + "YELLOW_CONCRETE", + "LIME_CONCRETE", + "PINK_CONCRETE", + "GRAY_CONCRETE", + "LIGHT_GRAY_CONCRETE", + "CYAN_CONCRETE", + "PURPLE_CONCRETE", + "BLUE_CONCRETE", + "BROWN_CONCRETE", + "GREEN_CONCRETE", + "RED_CONCRETE", + "BLACK_CONCRETE", + "WHITE_CONCRETE_POWDER", + "ORANGE_CONCRETE_POWDER", + "MAGENTA_CONCRETE_POWDER", + "LIGHT_BLUE_CONCRETE_POWDER", + "YELLOW_CONCRETE_POWDER", + "LIME_CONCRETE_POWDER", + "PINK_CONCRETE_POWDER", + "GRAY_CONCRETE_POWDER", + "LIGHT_GRAY_CONCRETE_POWDER", + "CYAN_CONCRETE_POWDER", + "PURPLE_CONCRETE_POWDER", + "BLUE_CONCRETE_POWDER", + "BROWN_CONCRETE_POWDER", + "GREEN_CONCRETE_POWDER", + "RED_CONCRETE_POWDER", + "BLACK_CONCRETE_POWDER", + "TURTLE_EGG", + "DEAD_TUBE_CORAL_BLOCK", + "DEAD_BRAIN_CORAL_BLOCK", + "DEAD_BUBBLE_CORAL_BLOCK", + "DEAD_FIRE_CORAL_BLOCK", + "DEAD_HORN_CORAL_BLOCK", + "TUBE_CORAL_BLOCK", + "BRAIN_CORAL_BLOCK", + "BUBBLE_CORAL_BLOCK", + "FIRE_CORAL_BLOCK", + "HORN_CORAL_BLOCK", + "TUBE_CORAL", + "BRAIN_CORAL", + "BUBBLE_CORAL", + "FIRE_CORAL", + "HORN_CORAL", + "DEAD_BRAIN_CORAL", + "DEAD_BUBBLE_CORAL", + "DEAD_FIRE_CORAL", + "DEAD_HORN_CORAL", + "DEAD_TUBE_CORAL", + "TUBE_CORAL_FAN", + "BRAIN_CORAL_FAN", + "BUBBLE_CORAL_FAN", + "FIRE_CORAL_FAN", + "HORN_CORAL_FAN", + "DEAD_TUBE_CORAL_FAN", + "DEAD_BRAIN_CORAL_FAN", + "DEAD_BUBBLE_CORAL_FAN", + "DEAD_FIRE_CORAL_FAN", + "DEAD_HORN_CORAL_FAN", + "BLUE_ICE", + "CONDUIT", + "POLISHED_GRANITE_STAIRS", + "SMOOTH_RED_SANDSTONE_STAIRS", + "MOSSY_STONE_BRICK_STAIRS", + "POLISHED_DIORITE_STAIRS", + "MOSSY_COBBLESTONE_STAIRS", + "END_STONE_BRICK_STAIRS", + "STONE_STAIRS", + "SMOOTH_SANDSTONE_STAIRS", + "SMOOTH_QUARTZ_STAIRS", + "GRANITE_STAIRS", + "ANDESITE_STAIRS", + "RED_NETHER_BRICK_STAIRS", + "POLISHED_ANDESITE_STAIRS", + "DIORITE_STAIRS", + "COBBLED_DEEPSLATE_STAIRS", + "POLISHED_DEEPSLATE_STAIRS", + "DEEPSLATE_BRICK_STAIRS", + "DEEPSLATE_TILE_STAIRS", + "POLISHED_GRANITE_SLAB", + "SMOOTH_RED_SANDSTONE_SLAB", + "MOSSY_STONE_BRICK_SLAB", + "POLISHED_DIORITE_SLAB", + "MOSSY_COBBLESTONE_SLAB", + "END_STONE_BRICK_SLAB", + "SMOOTH_SANDSTONE_SLAB", + "SMOOTH_QUARTZ_SLAB", + "GRANITE_SLAB", + "ANDESITE_SLAB", + "RED_NETHER_BRICK_SLAB", + "POLISHED_ANDESITE_SLAB", + "DIORITE_SLAB", + "COBBLED_DEEPSLATE_SLAB", + "POLISHED_DEEPSLATE_SLAB", + "DEEPSLATE_BRICK_SLAB", + "DEEPSLATE_TILE_SLAB", + "SCAFFOLDING", + "REDSTONE", + "REDSTONE_TORCH", + "REDSTONE_BLOCK", + "REPEATER", + "COMPARATOR", + "PISTON", + "STICKY_PISTON", + "SLIME_BLOCK", + "HONEY_BLOCK", + "OBSERVER", + "HOPPER", + "DISPENSER", + "DROPPER", + "LECTERN", + "TARGET", + "LEVER", + "LIGHTNING_ROD", + "DAYLIGHT_DETECTOR", + "SCULK_SENSOR", + "TRIPWIRE_HOOK", + "TRAPPED_CHEST", + "TNT", + "REDSTONE_LAMP", + "NOTE_BLOCK", + "STONE_BUTTON", + "POLISHED_BLACKSTONE_BUTTON", + "OAK_BUTTON", + "SPRUCE_BUTTON", + "BIRCH_BUTTON", + "JUNGLE_BUTTON", + "ACACIA_BUTTON", + "DARK_OAK_BUTTON", + "CRIMSON_BUTTON", + "WARPED_BUTTON", + "STONE_PRESSURE_PLATE", + "POLISHED_BLACKSTONE_PRESSURE_PLATE", + "LIGHT_WEIGHTED_PRESSURE_PLATE", + "HEAVY_WEIGHTED_PRESSURE_PLATE", + "OAK_PRESSURE_PLATE", + "SPRUCE_PRESSURE_PLATE", + "BIRCH_PRESSURE_PLATE", + "JUNGLE_PRESSURE_PLATE", + "ACACIA_PRESSURE_PLATE", + "DARK_OAK_PRESSURE_PLATE", + "CRIMSON_PRESSURE_PLATE", + "WARPED_PRESSURE_PLATE", + "IRON_DOOR", + "OAK_DOOR", + "SPRUCE_DOOR", + "BIRCH_DOOR", + "JUNGLE_DOOR", + "ACACIA_DOOR", + "DARK_OAK_DOOR", + "CRIMSON_DOOR", + "WARPED_DOOR", + "IRON_TRAPDOOR", + "OAK_TRAPDOOR", + "SPRUCE_TRAPDOOR", + "BIRCH_TRAPDOOR", + "JUNGLE_TRAPDOOR", + "ACACIA_TRAPDOOR", + "DARK_OAK_TRAPDOOR", + "CRIMSON_TRAPDOOR", + "WARPED_TRAPDOOR", + "OAK_FENCE_GATE", + "SPRUCE_FENCE_GATE", + "BIRCH_FENCE_GATE", + "JUNGLE_FENCE_GATE", + "ACACIA_FENCE_GATE", + "DARK_OAK_FENCE_GATE", + "CRIMSON_FENCE_GATE", + "WARPED_FENCE_GATE", + "POWERED_RAIL", + "DETECTOR_RAIL", + "RAIL", + "ACTIVATOR_RAIL", + "SADDLE", + "MINECART", + "CHEST_MINECART", + "FURNACE_MINECART", + "TNT_MINECART", + "HOPPER_MINECART", + "CARROT_ON_A_STICK", + "WARPED_FUNGUS_ON_A_STICK", + "ELYTRA", + "OAK_BOAT", + "SPRUCE_BOAT", + "BIRCH_BOAT", + "JUNGLE_BOAT", + "ACACIA_BOAT", + "DARK_OAK_BOAT", + "STRUCTURE_BLOCK", + "JIGSAW", + "TURTLE_HELMET", + "SCUTE", + "FLINT_AND_STEEL", + "APPLE", + "BOW", + "ARROW", + "COAL", + "CHARCOAL", + "DIAMOND", + "EMERALD", + "LAPIS_LAZULI", + "QUARTZ", + "AMETHYST_SHARD", + "RAW_IRON", + "IRON_INGOT", + "RAW_COPPER", + "COPPER_INGOT", + "RAW_GOLD", + "GOLD_INGOT", + "NETHERITE_INGOT", + "NETHERITE_SCRAP", + "WOODEN_SWORD", + "WOODEN_SHOVEL", + "WOODEN_PICKAXE", + "WOODEN_AXE", + "WOODEN_HOE", + "STONE_SWORD", + "STONE_SHOVEL", + "STONE_PICKAXE", + "STONE_AXE", + "STONE_HOE", + "GOLDEN_SWORD", + "GOLDEN_SHOVEL", + "GOLDEN_PICKAXE", + "GOLDEN_AXE", + "GOLDEN_HOE", + "IRON_SWORD", + "IRON_SHOVEL", + "IRON_PICKAXE", + "IRON_AXE", + "IRON_HOE", + "DIAMOND_SWORD", + "DIAMOND_SHOVEL", + "DIAMOND_PICKAXE", + "DIAMOND_AXE", + "DIAMOND_HOE", + "NETHERITE_SWORD", + "NETHERITE_SHOVEL", + "NETHERITE_PICKAXE", + "NETHERITE_AXE", + "NETHERITE_HOE", + "STICK", + "BOWL", + "MUSHROOM_STEW", + "STRING", + "FEATHER", + "GUNPOWDER", + "WHEAT_SEEDS", + "WHEAT", + "BREAD", + "LEATHER_HELMET", + "LEATHER_CHESTPLATE", + "LEATHER_LEGGINGS", + "LEATHER_BOOTS", + "CHAINMAIL_HELMET", + "CHAINMAIL_CHESTPLATE", + "CHAINMAIL_LEGGINGS", + "CHAINMAIL_BOOTS", + "IRON_HELMET", + "IRON_CHESTPLATE", + "IRON_LEGGINGS", + "IRON_BOOTS", + "DIAMOND_HELMET", + "DIAMOND_CHESTPLATE", + "DIAMOND_LEGGINGS", + "DIAMOND_BOOTS", + "GOLDEN_HELMET", + "GOLDEN_CHESTPLATE", + "GOLDEN_LEGGINGS", + "GOLDEN_BOOTS", + "NETHERITE_HELMET", + "NETHERITE_CHESTPLATE", + "NETHERITE_LEGGINGS", + "NETHERITE_BOOTS", + "FLINT", + "PORKCHOP", + "COOKED_PORKCHOP", + "PAINTING", + "GOLDEN_APPLE", + "ENCHANTED_GOLDEN_APPLE", + "OAK_SIGN", + "SPRUCE_SIGN", + "BIRCH_SIGN", + "JUNGLE_SIGN", + "ACACIA_SIGN", + "DARK_OAK_SIGN", + "CRIMSON_SIGN", + "WARPED_SIGN", + "BUCKET", + "WATER_BUCKET", + "LAVA_BUCKET", + "POWDER_SNOW_BUCKET", + "SNOWBALL", + "LEATHER", + "MILK_BUCKET", + "PUFFERFISH_BUCKET", + "SALMON_BUCKET", + "COD_BUCKET", + "TROPICAL_FISH_BUCKET", + "AXOLOTL_BUCKET", + "BRICK", + "CLAY_BALL", + "DRIED_KELP_BLOCK", + "PAPER", + "BOOK", + "SLIME_BALL", + "EGG", + "COMPASS", + "BUNDLE", + "FISHING_ROD", + "CLOCK", + "SPYGLASS", + "GLOWSTONE_DUST", + "COD", + "SALMON", + "TROPICAL_FISH", + "PUFFERFISH", + "COOKED_COD", + "COOKED_SALMON", + "INK_SAC", + "GLOW_INK_SAC", + "COCOA_BEANS", + "WHITE_DYE", + "ORANGE_DYE", + "MAGENTA_DYE", + "LIGHT_BLUE_DYE", + "YELLOW_DYE", + "LIME_DYE", + "PINK_DYE", + "GRAY_DYE", + "LIGHT_GRAY_DYE", + "CYAN_DYE", + "PURPLE_DYE", + "BLUE_DYE", + "BROWN_DYE", + "GREEN_DYE", + "RED_DYE", + "BLACK_DYE", + "BONE_MEAL", + "BONE", + "SUGAR", + "CAKE", + "WHITE_BED", + "ORANGE_BED", + "MAGENTA_BED", + "LIGHT_BLUE_BED", + "YELLOW_BED", + "LIME_BED", + "PINK_BED", + "GRAY_BED", + "LIGHT_GRAY_BED", + "CYAN_BED", + "PURPLE_BED", + "BLUE_BED", + "BROWN_BED", + "GREEN_BED", + "RED_BED", + "BLACK_BED", + "COOKIE", + "FILLED_MAP", + "SHEARS", + "MELON_SLICE", + "DRIED_KELP", + "PUMPKIN_SEEDS", + "MELON_SEEDS", + "BEEF", + "COOKED_BEEF", + "CHICKEN", + "COOKED_CHICKEN", + "ROTTEN_FLESH", + "ENDER_PEARL", + "BLAZE_ROD", + "GHAST_TEAR", + "GOLD_NUGGET", + "NETHER_WART", + "POTION", + "GLASS_BOTTLE", + "SPIDER_EYE", + "FERMENTED_SPIDER_EYE", + "BLAZE_POWDER", + "MAGMA_CREAM", + "BREWING_STAND", + "CAULDRON", + "ENDER_EYE", + "GLISTERING_MELON_SLICE", + "AXOLOTL_SPAWN_EGG", + "BAT_SPAWN_EGG", + "BEE_SPAWN_EGG", + "BLAZE_SPAWN_EGG", + "CAT_SPAWN_EGG", + "CAVE_SPIDER_SPAWN_EGG", + "CHICKEN_SPAWN_EGG", + "COD_SPAWN_EGG", + "COW_SPAWN_EGG", + "CREEPER_SPAWN_EGG", + "DOLPHIN_SPAWN_EGG", + "DONKEY_SPAWN_EGG", + "DROWNED_SPAWN_EGG", + "ELDER_GUARDIAN_SPAWN_EGG", + "ENDERMAN_SPAWN_EGG", + "ENDERMITE_SPAWN_EGG", + "EVOKER_SPAWN_EGG", + "FOX_SPAWN_EGG", + "GHAST_SPAWN_EGG", + "GLOW_SQUID_SPAWN_EGG", + "GOAT_SPAWN_EGG", + "GUARDIAN_SPAWN_EGG", + "HOGLIN_SPAWN_EGG", + "HORSE_SPAWN_EGG", + "HUSK_SPAWN_EGG", + "LLAMA_SPAWN_EGG", + "MAGMA_CUBE_SPAWN_EGG", + "MOOSHROOM_SPAWN_EGG", + "MULE_SPAWN_EGG", + "OCELOT_SPAWN_EGG", + "PANDA_SPAWN_EGG", + "PARROT_SPAWN_EGG", + "PHANTOM_SPAWN_EGG", + "PIG_SPAWN_EGG", + "PIGLIN_SPAWN_EGG", + "PIGLIN_BRUTE_SPAWN_EGG", + "PILLAGER_SPAWN_EGG", + "POLAR_BEAR_SPAWN_EGG", + "PUFFERFISH_SPAWN_EGG", + "RABBIT_SPAWN_EGG", + "RAVAGER_SPAWN_EGG", + "SALMON_SPAWN_EGG", + "SHEEP_SPAWN_EGG", + "SHULKER_SPAWN_EGG", + "SILVERFISH_SPAWN_EGG", + "SKELETON_SPAWN_EGG", + "SKELETON_HORSE_SPAWN_EGG", + "SLIME_SPAWN_EGG", + "SPIDER_SPAWN_EGG", + "SQUID_SPAWN_EGG", + "STRAY_SPAWN_EGG", + "STRIDER_SPAWN_EGG", + "TRADER_LLAMA_SPAWN_EGG", + "TROPICAL_FISH_SPAWN_EGG", + "TURTLE_SPAWN_EGG", + "VEX_SPAWN_EGG", + "VILLAGER_SPAWN_EGG", + "VINDICATOR_SPAWN_EGG", + "WANDERING_TRADER_SPAWN_EGG", + "WITCH_SPAWN_EGG", + "WITHER_SKELETON_SPAWN_EGG", + "WOLF_SPAWN_EGG", + "ZOGLIN_SPAWN_EGG", + "ZOMBIE_SPAWN_EGG", + "ZOMBIE_HORSE_SPAWN_EGG", + "ZOMBIE_VILLAGER_SPAWN_EGG", + "ZOMBIFIED_PIGLIN_SPAWN_EGG", + "EXPERIENCE_BOTTLE", + "FIRE_CHARGE", + "WRITABLE_BOOK", + "WRITTEN_BOOK", + "ITEM_FRAME", + "GLOW_ITEM_FRAME", + "FLOWER_POT", + "CARROT", + "POTATO", + "BAKED_POTATO", + "POISONOUS_POTATO", + "MAP", + "GOLDEN_CARROT", + "SKELETON_SKULL", + "WITHER_SKELETON_SKULL", + "PLAYER_HEAD", + "ZOMBIE_HEAD", + "CREEPER_HEAD", + "DRAGON_HEAD", + "NETHER_STAR", + "PUMPKIN_PIE", + "FIREWORK_ROCKET", + "FIREWORK_STAR", + "ENCHANTED_BOOK", + "NETHER_BRICK", + "PRISMARINE_SHARD", + "PRISMARINE_CRYSTALS", + "RABBIT", + "COOKED_RABBIT", + "RABBIT_STEW", + "RABBIT_FOOT", + "RABBIT_HIDE", + "ARMOR_STAND", + "IRON_HORSE_ARMOR", + "GOLDEN_HORSE_ARMOR", + "DIAMOND_HORSE_ARMOR", + "LEATHER_HORSE_ARMOR", + "LEAD", + "NAME_TAG", + "COMMAND_BLOCK_MINECART", + "MUTTON", + "COOKED_MUTTON", + "WHITE_BANNER", + "ORANGE_BANNER", + "MAGENTA_BANNER", + "LIGHT_BLUE_BANNER", + "YELLOW_BANNER", + "LIME_BANNER", + "PINK_BANNER", + "GRAY_BANNER", + "LIGHT_GRAY_BANNER", + "CYAN_BANNER", + "PURPLE_BANNER", + "BLUE_BANNER", + "BROWN_BANNER", + "GREEN_BANNER", + "RED_BANNER", + "BLACK_BANNER", + "END_CRYSTAL", + "CHORUS_FRUIT", + "POPPED_CHORUS_FRUIT", + "BEETROOT", + "BEETROOT_SEEDS", + "BEETROOT_SOUP", + "DRAGON_BREATH", + "SPLASH_POTION", + "SPECTRAL_ARROW", + "TIPPED_ARROW", + "LINGERING_POTION", + "SHIELD", + "TOTEM_OF_UNDYING", + "SHULKER_SHELL", + "IRON_NUGGET", + "KNOWLEDGE_BOOK", + "DEBUG_STICK", + "MUSIC_DISC_13", + "MUSIC_DISC_CAT", + "MUSIC_DISC_BLOCKS", + "MUSIC_DISC_CHIRP", + "MUSIC_DISC_FAR", + "MUSIC_DISC_MALL", + "MUSIC_DISC_MELLOHI", + "MUSIC_DISC_STAL", + "MUSIC_DISC_STRAD", + "MUSIC_DISC_WARD", + "MUSIC_DISC_11", + "MUSIC_DISC_WAIT", + "MUSIC_DISC_PIGSTEP", + "TRIDENT", + "PHANTOM_MEMBRANE", + "NAUTILUS_SHELL", + "HEART_OF_THE_SEA", + "CROSSBOW", + "SUSPICIOUS_STEW", + "LOOM", + "FLOWER_BANNER_PATTERN", + "CREEPER_BANNER_PATTERN", + "SKULL_BANNER_PATTERN", + "MOJANG_BANNER_PATTERN", + "GLOBE_BANNER_PATTERN", + "PIGLIN_BANNER_PATTERN", + "COMPOSTER", + "BARREL", + "SMOKER", + "BLAST_FURNACE", + "CARTOGRAPHY_TABLE", + "FLETCHING_TABLE", + "GRINDSTONE", + "SMITHING_TABLE", + "STONECUTTER", + "BELL", + "LANTERN", + "SOUL_LANTERN", + "SWEET_BERRIES", + "GLOW_BERRIES", + "CAMPFIRE", + "SOUL_CAMPFIRE", + "SHROOMLIGHT", + "HONEYCOMB", + "BEE_NEST", + "BEEHIVE", + "HONEY_BOTTLE", + "HONEYCOMB_BLOCK", + "LODESTONE", + "CRYING_OBSIDIAN", + "BLACKSTONE", + "BLACKSTONE_SLAB", + "BLACKSTONE_STAIRS", + "GILDED_BLACKSTONE", + "POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_SLAB", + "POLISHED_BLACKSTONE_STAIRS", + "CHISELED_POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_BRICKS", + "POLISHED_BLACKSTONE_BRICK_SLAB", + "POLISHED_BLACKSTONE_BRICK_STAIRS", + "CRACKED_POLISHED_BLACKSTONE_BRICKS", + "RESPAWN_ANCHOR", + "CANDLE", + "WHITE_CANDLE", + "ORANGE_CANDLE", + "MAGENTA_CANDLE", + "LIGHT_BLUE_CANDLE", + "YELLOW_CANDLE", + "LIME_CANDLE", + "PINK_CANDLE", + "GRAY_CANDLE", + "LIGHT_GRAY_CANDLE", + "CYAN_CANDLE", + "PURPLE_CANDLE", + "BLUE_CANDLE", + "BROWN_CANDLE", + "GREEN_CANDLE", + "RED_CANDLE", + "BLACK_CANDLE", + "SMALL_AMETHYST_BUD", + "MEDIUM_AMETHYST_BUD", + "LARGE_AMETHYST_BUD", + "AMETHYST_CLUSTER", + "POINTED_DRIPSTONE", + "WATER", + "LAVA", + "TALL_SEAGRASS", + "PISTON_HEAD", + "MOVING_PISTON", + "WALL_TORCH", + "FIRE", + "SOUL_FIRE", + "REDSTONE_WIRE", + "OAK_WALL_SIGN", + "SPRUCE_WALL_SIGN", + "BIRCH_WALL_SIGN", + "ACACIA_WALL_SIGN", + "JUNGLE_WALL_SIGN", + "DARK_OAK_WALL_SIGN", + "REDSTONE_WALL_TORCH", + "SOUL_WALL_TORCH", + "NETHER_PORTAL", + "ATTACHED_PUMPKIN_STEM", + "ATTACHED_MELON_STEM", + "PUMPKIN_STEM", + "MELON_STEM", + "WATER_CAULDRON", + "LAVA_CAULDRON", + "POWDER_SNOW_CAULDRON", + "END_PORTAL", + "COCOA", + "TRIPWIRE", + "POTTED_OAK_SAPLING", + "POTTED_SPRUCE_SAPLING", + "POTTED_BIRCH_SAPLING", + "POTTED_JUNGLE_SAPLING", + "POTTED_ACACIA_SAPLING", + "POTTED_DARK_OAK_SAPLING", + "POTTED_FERN", + "POTTED_DANDELION", + "POTTED_POPPY", + "POTTED_BLUE_ORCHID", + "POTTED_ALLIUM", + "POTTED_AZURE_BLUET", + "POTTED_RED_TULIP", + "POTTED_ORANGE_TULIP", + "POTTED_WHITE_TULIP", + "POTTED_PINK_TULIP", + "POTTED_OXEYE_DAISY", + "POTTED_CORNFLOWER", + "POTTED_LILY_OF_THE_VALLEY", + "POTTED_WITHER_ROSE", + "POTTED_RED_MUSHROOM", + "POTTED_BROWN_MUSHROOM", + "POTTED_DEAD_BUSH", + "POTTED_CACTUS", + "CARROTS", + "POTATOES", + "SKELETON_WALL_SKULL", + "WITHER_SKELETON_WALL_SKULL", + "ZOMBIE_WALL_HEAD", + "PLAYER_WALL_HEAD", + "CREEPER_WALL_HEAD", + "DRAGON_WALL_HEAD", + "WHITE_WALL_BANNER", + "ORANGE_WALL_BANNER", + "MAGENTA_WALL_BANNER", + "LIGHT_BLUE_WALL_BANNER", + "YELLOW_WALL_BANNER", + "LIME_WALL_BANNER", + "PINK_WALL_BANNER", + "GRAY_WALL_BANNER", + "LIGHT_GRAY_WALL_BANNER", + "CYAN_WALL_BANNER", + "PURPLE_WALL_BANNER", + "BLUE_WALL_BANNER", + "BROWN_WALL_BANNER", + "GREEN_WALL_BANNER", + "RED_WALL_BANNER", + "BLACK_WALL_BANNER", + "BEETROOTS", + "END_GATEWAY", + "FROSTED_ICE", + "KELP_PLANT", + "DEAD_TUBE_CORAL_WALL_FAN", + "DEAD_BRAIN_CORAL_WALL_FAN", + "DEAD_BUBBLE_CORAL_WALL_FAN", + "DEAD_FIRE_CORAL_WALL_FAN", + "DEAD_HORN_CORAL_WALL_FAN", + "TUBE_CORAL_WALL_FAN", + "BRAIN_CORAL_WALL_FAN", + "BUBBLE_CORAL_WALL_FAN", + "FIRE_CORAL_WALL_FAN", + "HORN_CORAL_WALL_FAN", + "BAMBOO_SAPLING", + "POTTED_BAMBOO", + "VOID_AIR", + "CAVE_AIR", + "BUBBLE_COLUMN", + "SWEET_BERRY_BUSH", + "WEEPING_VINES_PLANT", + "TWISTING_VINES_PLANT", + "CRIMSON_WALL_SIGN", + "WARPED_WALL_SIGN", + "POTTED_CRIMSON_FUNGUS", + "POTTED_WARPED_FUNGUS", + "POTTED_CRIMSON_ROOTS", + "POTTED_WARPED_ROOTS", + "CANDLE_CAKE", + "WHITE_CANDLE_CAKE", + "ORANGE_CANDLE_CAKE", + "MAGENTA_CANDLE_CAKE", + "LIGHT_BLUE_CANDLE_CAKE", + "YELLOW_CANDLE_CAKE", + "LIME_CANDLE_CAKE", + "PINK_CANDLE_CAKE", + "GRAY_CANDLE_CAKE", + "LIGHT_GRAY_CANDLE_CAKE", + "CYAN_CANDLE_CAKE", + "PURPLE_CANDLE_CAKE", + "BLUE_CANDLE_CAKE", + "BROWN_CANDLE_CAKE", + "GREEN_CANDLE_CAKE", + "RED_CANDLE_CAKE", + "BLACK_CANDLE_CAKE", + "POWDER_SNOW", + "CAVE_VINES", + "CAVE_VINES_PLANT", + "BIG_DRIPLEAF_STEM", + "POTTED_AZALEA_BUSH", + "POTTED_FLOWERING_AZALEA_BUSH" + ] + } + }, + "amount": { + "type": "INTEGER", + "description": [ + "The amount." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "enchantments": { + "type": "LIST", + "description": [ + "The enchantments that will be applied to the item." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the enchantment.", + "", + "Valid values: The id of the enchantment as shown in the /enchant command without the minecraft:", + "For example: sharpness, knockback, power" + ] + }, + "level": { + "type": "INTEGER", + "description": [ + "The level of the enchantment. Allows over enchanting." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + } + } + } + }, + "unbreakable": { + "type": "BOOLEAN", + "description": [ + "Whether the item takes durability damage or not." + ], + "default": false + }, + "placeOn": { + "type": "LIST", + "description": [ + "A list of blocks that this block can be placed on. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "canBreak": { + "type": "LIST", + "description": [ + "A list of blocks that this item can be break. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "constraints": { + "allowedKeys": [ + [ + "0" + ], + [ + "1" + ], + [ + "2" + ], + [ + "3" + ], + [ + "4" + ], + [ + "5" + ], + [ + "6" + ], + [ + "7" + ], + [ + "8" + ] + ] + } + }, + "armor": { + "type": "MAP", + "description": [ + "The items that will be in the players armor slots." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "material": { + "type": "STRING", + "description": [ + "The item type." + ], + "default": "AIR", + "constraints": { + "enum": [ + "AIR", + "STONE", + "GRANITE", + "POLISHED_GRANITE", + "DIORITE", + "POLISHED_DIORITE", + "ANDESITE", + "POLISHED_ANDESITE", + "DEEPSLATE", + "COBBLED_DEEPSLATE", + "POLISHED_DEEPSLATE", + "CALCITE", + "TUFF", + "DRIPSTONE_BLOCK", + "GRASS_BLOCK", + "DIRT", + "COARSE_DIRT", + "PODZOL", + "ROOTED_DIRT", + "CRIMSON_NYLIUM", + "WARPED_NYLIUM", + "COBBLESTONE", + "OAK_PLANKS", + "SPRUCE_PLANKS", + "BIRCH_PLANKS", + "JUNGLE_PLANKS", + "ACACIA_PLANKS", + "DARK_OAK_PLANKS", + "CRIMSON_PLANKS", + "WARPED_PLANKS", + "OAK_SAPLING", + "SPRUCE_SAPLING", + "BIRCH_SAPLING", + "JUNGLE_SAPLING", + "ACACIA_SAPLING", + "DARK_OAK_SAPLING", + "BEDROCK", + "SAND", + "RED_SAND", + "GRAVEL", + "COAL_ORE", + "DEEPSLATE_COAL_ORE", + "IRON_ORE", + "DEEPSLATE_IRON_ORE", + "COPPER_ORE", + "DEEPSLATE_COPPER_ORE", + "GOLD_ORE", + "DEEPSLATE_GOLD_ORE", + "REDSTONE_ORE", + "DEEPSLATE_REDSTONE_ORE", + "EMERALD_ORE", + "DEEPSLATE_EMERALD_ORE", + "LAPIS_ORE", + "DEEPSLATE_LAPIS_ORE", + "DIAMOND_ORE", + "DEEPSLATE_DIAMOND_ORE", + "NETHER_GOLD_ORE", + "NETHER_QUARTZ_ORE", + "ANCIENT_DEBRIS", + "COAL_BLOCK", + "RAW_IRON_BLOCK", + "RAW_COPPER_BLOCK", + "RAW_GOLD_BLOCK", + "AMETHYST_BLOCK", + "BUDDING_AMETHYST", + "IRON_BLOCK", + "COPPER_BLOCK", + "GOLD_BLOCK", + "DIAMOND_BLOCK", + "NETHERITE_BLOCK", + "EXPOSED_COPPER", + "WEATHERED_COPPER", + "OXIDIZED_COPPER", + "CUT_COPPER", + "EXPOSED_CUT_COPPER", + "WEATHERED_CUT_COPPER", + "OXIDIZED_CUT_COPPER", + "CUT_COPPER_STAIRS", + "EXPOSED_CUT_COPPER_STAIRS", + "WEATHERED_CUT_COPPER_STAIRS", + "OXIDIZED_CUT_COPPER_STAIRS", + "CUT_COPPER_SLAB", + "EXPOSED_CUT_COPPER_SLAB", + "WEATHERED_CUT_COPPER_SLAB", + "OXIDIZED_CUT_COPPER_SLAB", + "WAXED_COPPER_BLOCK", + "WAXED_EXPOSED_COPPER", + "WAXED_WEATHERED_COPPER", + "WAXED_OXIDIZED_COPPER", + "WAXED_CUT_COPPER", + "WAXED_EXPOSED_CUT_COPPER", + "WAXED_WEATHERED_CUT_COPPER", + "WAXED_OXIDIZED_CUT_COPPER", + "WAXED_CUT_COPPER_STAIRS", + "WAXED_EXPOSED_CUT_COPPER_STAIRS", + "WAXED_WEATHERED_CUT_COPPER_STAIRS", + "WAXED_OXIDIZED_CUT_COPPER_STAIRS", + "WAXED_CUT_COPPER_SLAB", + "WAXED_EXPOSED_CUT_COPPER_SLAB", + "WAXED_WEATHERED_CUT_COPPER_SLAB", + "WAXED_OXIDIZED_CUT_COPPER_SLAB", + "OAK_LOG", + "SPRUCE_LOG", + "BIRCH_LOG", + "JUNGLE_LOG", + "ACACIA_LOG", + "DARK_OAK_LOG", + "CRIMSON_STEM", + "WARPED_STEM", + "STRIPPED_OAK_LOG", + "STRIPPED_SPRUCE_LOG", + "STRIPPED_BIRCH_LOG", + "STRIPPED_JUNGLE_LOG", + "STRIPPED_ACACIA_LOG", + "STRIPPED_DARK_OAK_LOG", + "STRIPPED_CRIMSON_STEM", + "STRIPPED_WARPED_STEM", + "STRIPPED_OAK_WOOD", + "STRIPPED_SPRUCE_WOOD", + "STRIPPED_BIRCH_WOOD", + "STRIPPED_JUNGLE_WOOD", + "STRIPPED_ACACIA_WOOD", + "STRIPPED_DARK_OAK_WOOD", + "STRIPPED_CRIMSON_HYPHAE", + "STRIPPED_WARPED_HYPHAE", + "OAK_WOOD", + "SPRUCE_WOOD", + "BIRCH_WOOD", + "JUNGLE_WOOD", + "ACACIA_WOOD", + "DARK_OAK_WOOD", + "CRIMSON_HYPHAE", + "WARPED_HYPHAE", + "OAK_LEAVES", + "SPRUCE_LEAVES", + "BIRCH_LEAVES", + "JUNGLE_LEAVES", + "ACACIA_LEAVES", + "DARK_OAK_LEAVES", + "AZALEA_LEAVES", + "FLOWERING_AZALEA_LEAVES", + "SPONGE", + "WET_SPONGE", + "GLASS", + "TINTED_GLASS", + "LAPIS_BLOCK", + "SANDSTONE", + "CHISELED_SANDSTONE", + "CUT_SANDSTONE", + "COBWEB", + "GRASS", + "FERN", + "AZALEA", + "FLOWERING_AZALEA", + "DEAD_BUSH", + "SEAGRASS", + "SEA_PICKLE", + "WHITE_WOOL", + "ORANGE_WOOL", + "MAGENTA_WOOL", + "LIGHT_BLUE_WOOL", + "YELLOW_WOOL", + "LIME_WOOL", + "PINK_WOOL", + "GRAY_WOOL", + "LIGHT_GRAY_WOOL", + "CYAN_WOOL", + "PURPLE_WOOL", + "BLUE_WOOL", + "BROWN_WOOL", + "GREEN_WOOL", + "RED_WOOL", + "BLACK_WOOL", + "DANDELION", + "POPPY", + "BLUE_ORCHID", + "ALLIUM", + "AZURE_BLUET", + "RED_TULIP", + "ORANGE_TULIP", + "WHITE_TULIP", + "PINK_TULIP", + "OXEYE_DAISY", + "CORNFLOWER", + "LILY_OF_THE_VALLEY", + "WITHER_ROSE", + "SPORE_BLOSSOM", + "BROWN_MUSHROOM", + "RED_MUSHROOM", + "CRIMSON_FUNGUS", + "WARPED_FUNGUS", + "CRIMSON_ROOTS", + "WARPED_ROOTS", + "NETHER_SPROUTS", + "WEEPING_VINES", + "TWISTING_VINES", + "SUGAR_CANE", + "KELP", + "MOSS_CARPET", + "MOSS_BLOCK", + "HANGING_ROOTS", + "BIG_DRIPLEAF", + "SMALL_DRIPLEAF", + "BAMBOO", + "OAK_SLAB", + "SPRUCE_SLAB", + "BIRCH_SLAB", + "JUNGLE_SLAB", + "ACACIA_SLAB", + "DARK_OAK_SLAB", + "CRIMSON_SLAB", + "WARPED_SLAB", + "STONE_SLAB", + "SMOOTH_STONE_SLAB", + "SANDSTONE_SLAB", + "CUT_SANDSTONE_SLAB", + "PETRIFIED_OAK_SLAB", + "COBBLESTONE_SLAB", + "BRICK_SLAB", + "STONE_BRICK_SLAB", + "NETHER_BRICK_SLAB", + "QUARTZ_SLAB", + "RED_SANDSTONE_SLAB", + "CUT_RED_SANDSTONE_SLAB", + "PURPUR_SLAB", + "PRISMARINE_SLAB", + "PRISMARINE_BRICK_SLAB", + "DARK_PRISMARINE_SLAB", + "SMOOTH_QUARTZ", + "SMOOTH_RED_SANDSTONE", + "SMOOTH_SANDSTONE", + "SMOOTH_STONE", + "BRICKS", + "BOOKSHELF", + "MOSSY_COBBLESTONE", + "OBSIDIAN", + "TORCH", + "END_ROD", + "CHORUS_PLANT", + "CHORUS_FLOWER", + "PURPUR_BLOCK", + "PURPUR_PILLAR", + "PURPUR_STAIRS", + "SPAWNER", + "OAK_STAIRS", + "CHEST", + "CRAFTING_TABLE", + "FARMLAND", + "FURNACE", + "LADDER", + "COBBLESTONE_STAIRS", + "SNOW", + "ICE", + "SNOW_BLOCK", + "CACTUS", + "CLAY", + "JUKEBOX", + "OAK_FENCE", + "SPRUCE_FENCE", + "BIRCH_FENCE", + "JUNGLE_FENCE", + "ACACIA_FENCE", + "DARK_OAK_FENCE", + "CRIMSON_FENCE", + "WARPED_FENCE", + "PUMPKIN", + "CARVED_PUMPKIN", + "JACK_O_LANTERN", + "NETHERRACK", + "SOUL_SAND", + "SOUL_SOIL", + "BASALT", + "POLISHED_BASALT", + "SMOOTH_BASALT", + "SOUL_TORCH", + "GLOWSTONE", + "INFESTED_STONE", + "INFESTED_COBBLESTONE", + "INFESTED_STONE_BRICKS", + "INFESTED_MOSSY_STONE_BRICKS", + "INFESTED_CRACKED_STONE_BRICKS", + "INFESTED_CHISELED_STONE_BRICKS", + "INFESTED_DEEPSLATE", + "STONE_BRICKS", + "MOSSY_STONE_BRICKS", + "CRACKED_STONE_BRICKS", + "CHISELED_STONE_BRICKS", + "DEEPSLATE_BRICKS", + "CRACKED_DEEPSLATE_BRICKS", + "DEEPSLATE_TILES", + "CRACKED_DEEPSLATE_TILES", + "CHISELED_DEEPSLATE", + "BROWN_MUSHROOM_BLOCK", + "RED_MUSHROOM_BLOCK", + "MUSHROOM_STEM", + "IRON_BARS", + "CHAIN", + "GLASS_PANE", + "MELON", + "VINE", + "GLOW_LICHEN", + "BRICK_STAIRS", + "STONE_BRICK_STAIRS", + "MYCELIUM", + "LILY_PAD", + "NETHER_BRICKS", + "CRACKED_NETHER_BRICKS", + "CHISELED_NETHER_BRICKS", + "NETHER_BRICK_FENCE", + "NETHER_BRICK_STAIRS", + "ENCHANTING_TABLE", + "END_PORTAL_FRAME", + "END_STONE", + "END_STONE_BRICKS", + "DRAGON_EGG", + "SANDSTONE_STAIRS", + "ENDER_CHEST", + "EMERALD_BLOCK", + "SPRUCE_STAIRS", + "BIRCH_STAIRS", + "JUNGLE_STAIRS", + "CRIMSON_STAIRS", + "WARPED_STAIRS", + "COMMAND_BLOCK", + "BEACON", + "COBBLESTONE_WALL", + "MOSSY_COBBLESTONE_WALL", + "BRICK_WALL", + "PRISMARINE_WALL", + "RED_SANDSTONE_WALL", + "MOSSY_STONE_BRICK_WALL", + "GRANITE_WALL", + "STONE_BRICK_WALL", + "NETHER_BRICK_WALL", + "ANDESITE_WALL", + "RED_NETHER_BRICK_WALL", + "SANDSTONE_WALL", + "END_STONE_BRICK_WALL", + "DIORITE_WALL", + "BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_BRICK_WALL", + "COBBLED_DEEPSLATE_WALL", + "POLISHED_DEEPSLATE_WALL", + "DEEPSLATE_BRICK_WALL", + "DEEPSLATE_TILE_WALL", + "ANVIL", + "CHIPPED_ANVIL", + "DAMAGED_ANVIL", + "CHISELED_QUARTZ_BLOCK", + "QUARTZ_BLOCK", + "QUARTZ_BRICKS", + "QUARTZ_PILLAR", + "QUARTZ_STAIRS", + "WHITE_TERRACOTTA", + "ORANGE_TERRACOTTA", + "MAGENTA_TERRACOTTA", + "LIGHT_BLUE_TERRACOTTA", + "YELLOW_TERRACOTTA", + "LIME_TERRACOTTA", + "PINK_TERRACOTTA", + "GRAY_TERRACOTTA", + "LIGHT_GRAY_TERRACOTTA", + "CYAN_TERRACOTTA", + "PURPLE_TERRACOTTA", + "BLUE_TERRACOTTA", + "BROWN_TERRACOTTA", + "GREEN_TERRACOTTA", + "RED_TERRACOTTA", + "BLACK_TERRACOTTA", + "BARRIER", + "LIGHT", + "HAY_BLOCK", + "WHITE_CARPET", + "ORANGE_CARPET", + "MAGENTA_CARPET", + "LIGHT_BLUE_CARPET", + "YELLOW_CARPET", + "LIME_CARPET", + "PINK_CARPET", + "GRAY_CARPET", + "LIGHT_GRAY_CARPET", + "CYAN_CARPET", + "PURPLE_CARPET", + "BLUE_CARPET", + "BROWN_CARPET", + "GREEN_CARPET", + "RED_CARPET", + "BLACK_CARPET", + "TERRACOTTA", + "PACKED_ICE", + "ACACIA_STAIRS", + "DARK_OAK_STAIRS", + "DIRT_PATH", + "SUNFLOWER", + "LILAC", + "ROSE_BUSH", + "PEONY", + "TALL_GRASS", + "LARGE_FERN", + "WHITE_STAINED_GLASS", + "ORANGE_STAINED_GLASS", + "MAGENTA_STAINED_GLASS", + "LIGHT_BLUE_STAINED_GLASS", + "YELLOW_STAINED_GLASS", + "LIME_STAINED_GLASS", + "PINK_STAINED_GLASS", + "GRAY_STAINED_GLASS", + "LIGHT_GRAY_STAINED_GLASS", + "CYAN_STAINED_GLASS", + "PURPLE_STAINED_GLASS", + "BLUE_STAINED_GLASS", + "BROWN_STAINED_GLASS", + "GREEN_STAINED_GLASS", + "RED_STAINED_GLASS", + "BLACK_STAINED_GLASS", + "WHITE_STAINED_GLASS_PANE", + "ORANGE_STAINED_GLASS_PANE", + "MAGENTA_STAINED_GLASS_PANE", + "LIGHT_BLUE_STAINED_GLASS_PANE", + "YELLOW_STAINED_GLASS_PANE", + "LIME_STAINED_GLASS_PANE", + "PINK_STAINED_GLASS_PANE", + "GRAY_STAINED_GLASS_PANE", + "LIGHT_GRAY_STAINED_GLASS_PANE", + "CYAN_STAINED_GLASS_PANE", + "PURPLE_STAINED_GLASS_PANE", + "BLUE_STAINED_GLASS_PANE", + "BROWN_STAINED_GLASS_PANE", + "GREEN_STAINED_GLASS_PANE", + "RED_STAINED_GLASS_PANE", + "BLACK_STAINED_GLASS_PANE", + "PRISMARINE", + "PRISMARINE_BRICKS", + "DARK_PRISMARINE", + "PRISMARINE_STAIRS", + "PRISMARINE_BRICK_STAIRS", + "DARK_PRISMARINE_STAIRS", + "SEA_LANTERN", + "RED_SANDSTONE", + "CHISELED_RED_SANDSTONE", + "CUT_RED_SANDSTONE", + "RED_SANDSTONE_STAIRS", + "REPEATING_COMMAND_BLOCK", + "CHAIN_COMMAND_BLOCK", + "MAGMA_BLOCK", + "NETHER_WART_BLOCK", + "WARPED_WART_BLOCK", + "RED_NETHER_BRICKS", + "BONE_BLOCK", + "STRUCTURE_VOID", + "SHULKER_BOX", + "WHITE_SHULKER_BOX", + "ORANGE_SHULKER_BOX", + "MAGENTA_SHULKER_BOX", + "LIGHT_BLUE_SHULKER_BOX", + "YELLOW_SHULKER_BOX", + "LIME_SHULKER_BOX", + "PINK_SHULKER_BOX", + "GRAY_SHULKER_BOX", + "LIGHT_GRAY_SHULKER_BOX", + "CYAN_SHULKER_BOX", + "PURPLE_SHULKER_BOX", + "BLUE_SHULKER_BOX", + "BROWN_SHULKER_BOX", + "GREEN_SHULKER_BOX", + "RED_SHULKER_BOX", + "BLACK_SHULKER_BOX", + "WHITE_GLAZED_TERRACOTTA", + "ORANGE_GLAZED_TERRACOTTA", + "MAGENTA_GLAZED_TERRACOTTA", + "LIGHT_BLUE_GLAZED_TERRACOTTA", + "YELLOW_GLAZED_TERRACOTTA", + "LIME_GLAZED_TERRACOTTA", + "PINK_GLAZED_TERRACOTTA", + "GRAY_GLAZED_TERRACOTTA", + "LIGHT_GRAY_GLAZED_TERRACOTTA", + "CYAN_GLAZED_TERRACOTTA", + "PURPLE_GLAZED_TERRACOTTA", + "BLUE_GLAZED_TERRACOTTA", + "BROWN_GLAZED_TERRACOTTA", + "GREEN_GLAZED_TERRACOTTA", + "RED_GLAZED_TERRACOTTA", + "BLACK_GLAZED_TERRACOTTA", + "WHITE_CONCRETE", + "ORANGE_CONCRETE", + "MAGENTA_CONCRETE", + "LIGHT_BLUE_CONCRETE", + "YELLOW_CONCRETE", + "LIME_CONCRETE", + "PINK_CONCRETE", + "GRAY_CONCRETE", + "LIGHT_GRAY_CONCRETE", + "CYAN_CONCRETE", + "PURPLE_CONCRETE", + "BLUE_CONCRETE", + "BROWN_CONCRETE", + "GREEN_CONCRETE", + "RED_CONCRETE", + "BLACK_CONCRETE", + "WHITE_CONCRETE_POWDER", + "ORANGE_CONCRETE_POWDER", + "MAGENTA_CONCRETE_POWDER", + "LIGHT_BLUE_CONCRETE_POWDER", + "YELLOW_CONCRETE_POWDER", + "LIME_CONCRETE_POWDER", + "PINK_CONCRETE_POWDER", + "GRAY_CONCRETE_POWDER", + "LIGHT_GRAY_CONCRETE_POWDER", + "CYAN_CONCRETE_POWDER", + "PURPLE_CONCRETE_POWDER", + "BLUE_CONCRETE_POWDER", + "BROWN_CONCRETE_POWDER", + "GREEN_CONCRETE_POWDER", + "RED_CONCRETE_POWDER", + "BLACK_CONCRETE_POWDER", + "TURTLE_EGG", + "DEAD_TUBE_CORAL_BLOCK", + "DEAD_BRAIN_CORAL_BLOCK", + "DEAD_BUBBLE_CORAL_BLOCK", + "DEAD_FIRE_CORAL_BLOCK", + "DEAD_HORN_CORAL_BLOCK", + "TUBE_CORAL_BLOCK", + "BRAIN_CORAL_BLOCK", + "BUBBLE_CORAL_BLOCK", + "FIRE_CORAL_BLOCK", + "HORN_CORAL_BLOCK", + "TUBE_CORAL", + "BRAIN_CORAL", + "BUBBLE_CORAL", + "FIRE_CORAL", + "HORN_CORAL", + "DEAD_BRAIN_CORAL", + "DEAD_BUBBLE_CORAL", + "DEAD_FIRE_CORAL", + "DEAD_HORN_CORAL", + "DEAD_TUBE_CORAL", + "TUBE_CORAL_FAN", + "BRAIN_CORAL_FAN", + "BUBBLE_CORAL_FAN", + "FIRE_CORAL_FAN", + "HORN_CORAL_FAN", + "DEAD_TUBE_CORAL_FAN", + "DEAD_BRAIN_CORAL_FAN", + "DEAD_BUBBLE_CORAL_FAN", + "DEAD_FIRE_CORAL_FAN", + "DEAD_HORN_CORAL_FAN", + "BLUE_ICE", + "CONDUIT", + "POLISHED_GRANITE_STAIRS", + "SMOOTH_RED_SANDSTONE_STAIRS", + "MOSSY_STONE_BRICK_STAIRS", + "POLISHED_DIORITE_STAIRS", + "MOSSY_COBBLESTONE_STAIRS", + "END_STONE_BRICK_STAIRS", + "STONE_STAIRS", + "SMOOTH_SANDSTONE_STAIRS", + "SMOOTH_QUARTZ_STAIRS", + "GRANITE_STAIRS", + "ANDESITE_STAIRS", + "RED_NETHER_BRICK_STAIRS", + "POLISHED_ANDESITE_STAIRS", + "DIORITE_STAIRS", + "COBBLED_DEEPSLATE_STAIRS", + "POLISHED_DEEPSLATE_STAIRS", + "DEEPSLATE_BRICK_STAIRS", + "DEEPSLATE_TILE_STAIRS", + "POLISHED_GRANITE_SLAB", + "SMOOTH_RED_SANDSTONE_SLAB", + "MOSSY_STONE_BRICK_SLAB", + "POLISHED_DIORITE_SLAB", + "MOSSY_COBBLESTONE_SLAB", + "END_STONE_BRICK_SLAB", + "SMOOTH_SANDSTONE_SLAB", + "SMOOTH_QUARTZ_SLAB", + "GRANITE_SLAB", + "ANDESITE_SLAB", + "RED_NETHER_BRICK_SLAB", + "POLISHED_ANDESITE_SLAB", + "DIORITE_SLAB", + "COBBLED_DEEPSLATE_SLAB", + "POLISHED_DEEPSLATE_SLAB", + "DEEPSLATE_BRICK_SLAB", + "DEEPSLATE_TILE_SLAB", + "SCAFFOLDING", + "REDSTONE", + "REDSTONE_TORCH", + "REDSTONE_BLOCK", + "REPEATER", + "COMPARATOR", + "PISTON", + "STICKY_PISTON", + "SLIME_BLOCK", + "HONEY_BLOCK", + "OBSERVER", + "HOPPER", + "DISPENSER", + "DROPPER", + "LECTERN", + "TARGET", + "LEVER", + "LIGHTNING_ROD", + "DAYLIGHT_DETECTOR", + "SCULK_SENSOR", + "TRIPWIRE_HOOK", + "TRAPPED_CHEST", + "TNT", + "REDSTONE_LAMP", + "NOTE_BLOCK", + "STONE_BUTTON", + "POLISHED_BLACKSTONE_BUTTON", + "OAK_BUTTON", + "SPRUCE_BUTTON", + "BIRCH_BUTTON", + "JUNGLE_BUTTON", + "ACACIA_BUTTON", + "DARK_OAK_BUTTON", + "CRIMSON_BUTTON", + "WARPED_BUTTON", + "STONE_PRESSURE_PLATE", + "POLISHED_BLACKSTONE_PRESSURE_PLATE", + "LIGHT_WEIGHTED_PRESSURE_PLATE", + "HEAVY_WEIGHTED_PRESSURE_PLATE", + "OAK_PRESSURE_PLATE", + "SPRUCE_PRESSURE_PLATE", + "BIRCH_PRESSURE_PLATE", + "JUNGLE_PRESSURE_PLATE", + "ACACIA_PRESSURE_PLATE", + "DARK_OAK_PRESSURE_PLATE", + "CRIMSON_PRESSURE_PLATE", + "WARPED_PRESSURE_PLATE", + "IRON_DOOR", + "OAK_DOOR", + "SPRUCE_DOOR", + "BIRCH_DOOR", + "JUNGLE_DOOR", + "ACACIA_DOOR", + "DARK_OAK_DOOR", + "CRIMSON_DOOR", + "WARPED_DOOR", + "IRON_TRAPDOOR", + "OAK_TRAPDOOR", + "SPRUCE_TRAPDOOR", + "BIRCH_TRAPDOOR", + "JUNGLE_TRAPDOOR", + "ACACIA_TRAPDOOR", + "DARK_OAK_TRAPDOOR", + "CRIMSON_TRAPDOOR", + "WARPED_TRAPDOOR", + "OAK_FENCE_GATE", + "SPRUCE_FENCE_GATE", + "BIRCH_FENCE_GATE", + "JUNGLE_FENCE_GATE", + "ACACIA_FENCE_GATE", + "DARK_OAK_FENCE_GATE", + "CRIMSON_FENCE_GATE", + "WARPED_FENCE_GATE", + "POWERED_RAIL", + "DETECTOR_RAIL", + "RAIL", + "ACTIVATOR_RAIL", + "SADDLE", + "MINECART", + "CHEST_MINECART", + "FURNACE_MINECART", + "TNT_MINECART", + "HOPPER_MINECART", + "CARROT_ON_A_STICK", + "WARPED_FUNGUS_ON_A_STICK", + "ELYTRA", + "OAK_BOAT", + "SPRUCE_BOAT", + "BIRCH_BOAT", + "JUNGLE_BOAT", + "ACACIA_BOAT", + "DARK_OAK_BOAT", + "STRUCTURE_BLOCK", + "JIGSAW", + "TURTLE_HELMET", + "SCUTE", + "FLINT_AND_STEEL", + "APPLE", + "BOW", + "ARROW", + "COAL", + "CHARCOAL", + "DIAMOND", + "EMERALD", + "LAPIS_LAZULI", + "QUARTZ", + "AMETHYST_SHARD", + "RAW_IRON", + "IRON_INGOT", + "RAW_COPPER", + "COPPER_INGOT", + "RAW_GOLD", + "GOLD_INGOT", + "NETHERITE_INGOT", + "NETHERITE_SCRAP", + "WOODEN_SWORD", + "WOODEN_SHOVEL", + "WOODEN_PICKAXE", + "WOODEN_AXE", + "WOODEN_HOE", + "STONE_SWORD", + "STONE_SHOVEL", + "STONE_PICKAXE", + "STONE_AXE", + "STONE_HOE", + "GOLDEN_SWORD", + "GOLDEN_SHOVEL", + "GOLDEN_PICKAXE", + "GOLDEN_AXE", + "GOLDEN_HOE", + "IRON_SWORD", + "IRON_SHOVEL", + "IRON_PICKAXE", + "IRON_AXE", + "IRON_HOE", + "DIAMOND_SWORD", + "DIAMOND_SHOVEL", + "DIAMOND_PICKAXE", + "DIAMOND_AXE", + "DIAMOND_HOE", + "NETHERITE_SWORD", + "NETHERITE_SHOVEL", + "NETHERITE_PICKAXE", + "NETHERITE_AXE", + "NETHERITE_HOE", + "STICK", + "BOWL", + "MUSHROOM_STEW", + "STRING", + "FEATHER", + "GUNPOWDER", + "WHEAT_SEEDS", + "WHEAT", + "BREAD", + "LEATHER_HELMET", + "LEATHER_CHESTPLATE", + "LEATHER_LEGGINGS", + "LEATHER_BOOTS", + "CHAINMAIL_HELMET", + "CHAINMAIL_CHESTPLATE", + "CHAINMAIL_LEGGINGS", + "CHAINMAIL_BOOTS", + "IRON_HELMET", + "IRON_CHESTPLATE", + "IRON_LEGGINGS", + "IRON_BOOTS", + "DIAMOND_HELMET", + "DIAMOND_CHESTPLATE", + "DIAMOND_LEGGINGS", + "DIAMOND_BOOTS", + "GOLDEN_HELMET", + "GOLDEN_CHESTPLATE", + "GOLDEN_LEGGINGS", + "GOLDEN_BOOTS", + "NETHERITE_HELMET", + "NETHERITE_CHESTPLATE", + "NETHERITE_LEGGINGS", + "NETHERITE_BOOTS", + "FLINT", + "PORKCHOP", + "COOKED_PORKCHOP", + "PAINTING", + "GOLDEN_APPLE", + "ENCHANTED_GOLDEN_APPLE", + "OAK_SIGN", + "SPRUCE_SIGN", + "BIRCH_SIGN", + "JUNGLE_SIGN", + "ACACIA_SIGN", + "DARK_OAK_SIGN", + "CRIMSON_SIGN", + "WARPED_SIGN", + "BUCKET", + "WATER_BUCKET", + "LAVA_BUCKET", + "POWDER_SNOW_BUCKET", + "SNOWBALL", + "LEATHER", + "MILK_BUCKET", + "PUFFERFISH_BUCKET", + "SALMON_BUCKET", + "COD_BUCKET", + "TROPICAL_FISH_BUCKET", + "AXOLOTL_BUCKET", + "BRICK", + "CLAY_BALL", + "DRIED_KELP_BLOCK", + "PAPER", + "BOOK", + "SLIME_BALL", + "EGG", + "COMPASS", + "BUNDLE", + "FISHING_ROD", + "CLOCK", + "SPYGLASS", + "GLOWSTONE_DUST", + "COD", + "SALMON", + "TROPICAL_FISH", + "PUFFERFISH", + "COOKED_COD", + "COOKED_SALMON", + "INK_SAC", + "GLOW_INK_SAC", + "COCOA_BEANS", + "WHITE_DYE", + "ORANGE_DYE", + "MAGENTA_DYE", + "LIGHT_BLUE_DYE", + "YELLOW_DYE", + "LIME_DYE", + "PINK_DYE", + "GRAY_DYE", + "LIGHT_GRAY_DYE", + "CYAN_DYE", + "PURPLE_DYE", + "BLUE_DYE", + "BROWN_DYE", + "GREEN_DYE", + "RED_DYE", + "BLACK_DYE", + "BONE_MEAL", + "BONE", + "SUGAR", + "CAKE", + "WHITE_BED", + "ORANGE_BED", + "MAGENTA_BED", + "LIGHT_BLUE_BED", + "YELLOW_BED", + "LIME_BED", + "PINK_BED", + "GRAY_BED", + "LIGHT_GRAY_BED", + "CYAN_BED", + "PURPLE_BED", + "BLUE_BED", + "BROWN_BED", + "GREEN_BED", + "RED_BED", + "BLACK_BED", + "COOKIE", + "FILLED_MAP", + "SHEARS", + "MELON_SLICE", + "DRIED_KELP", + "PUMPKIN_SEEDS", + "MELON_SEEDS", + "BEEF", + "COOKED_BEEF", + "CHICKEN", + "COOKED_CHICKEN", + "ROTTEN_FLESH", + "ENDER_PEARL", + "BLAZE_ROD", + "GHAST_TEAR", + "GOLD_NUGGET", + "NETHER_WART", + "POTION", + "GLASS_BOTTLE", + "SPIDER_EYE", + "FERMENTED_SPIDER_EYE", + "BLAZE_POWDER", + "MAGMA_CREAM", + "BREWING_STAND", + "CAULDRON", + "ENDER_EYE", + "GLISTERING_MELON_SLICE", + "AXOLOTL_SPAWN_EGG", + "BAT_SPAWN_EGG", + "BEE_SPAWN_EGG", + "BLAZE_SPAWN_EGG", + "CAT_SPAWN_EGG", + "CAVE_SPIDER_SPAWN_EGG", + "CHICKEN_SPAWN_EGG", + "COD_SPAWN_EGG", + "COW_SPAWN_EGG", + "CREEPER_SPAWN_EGG", + "DOLPHIN_SPAWN_EGG", + "DONKEY_SPAWN_EGG", + "DROWNED_SPAWN_EGG", + "ELDER_GUARDIAN_SPAWN_EGG", + "ENDERMAN_SPAWN_EGG", + "ENDERMITE_SPAWN_EGG", + "EVOKER_SPAWN_EGG", + "FOX_SPAWN_EGG", + "GHAST_SPAWN_EGG", + "GLOW_SQUID_SPAWN_EGG", + "GOAT_SPAWN_EGG", + "GUARDIAN_SPAWN_EGG", + "HOGLIN_SPAWN_EGG", + "HORSE_SPAWN_EGG", + "HUSK_SPAWN_EGG", + "LLAMA_SPAWN_EGG", + "MAGMA_CUBE_SPAWN_EGG", + "MOOSHROOM_SPAWN_EGG", + "MULE_SPAWN_EGG", + "OCELOT_SPAWN_EGG", + "PANDA_SPAWN_EGG", + "PARROT_SPAWN_EGG", + "PHANTOM_SPAWN_EGG", + "PIG_SPAWN_EGG", + "PIGLIN_SPAWN_EGG", + "PIGLIN_BRUTE_SPAWN_EGG", + "PILLAGER_SPAWN_EGG", + "POLAR_BEAR_SPAWN_EGG", + "PUFFERFISH_SPAWN_EGG", + "RABBIT_SPAWN_EGG", + "RAVAGER_SPAWN_EGG", + "SALMON_SPAWN_EGG", + "SHEEP_SPAWN_EGG", + "SHULKER_SPAWN_EGG", + "SILVERFISH_SPAWN_EGG", + "SKELETON_SPAWN_EGG", + "SKELETON_HORSE_SPAWN_EGG", + "SLIME_SPAWN_EGG", + "SPIDER_SPAWN_EGG", + "SQUID_SPAWN_EGG", + "STRAY_SPAWN_EGG", + "STRIDER_SPAWN_EGG", + "TRADER_LLAMA_SPAWN_EGG", + "TROPICAL_FISH_SPAWN_EGG", + "TURTLE_SPAWN_EGG", + "VEX_SPAWN_EGG", + "VILLAGER_SPAWN_EGG", + "VINDICATOR_SPAWN_EGG", + "WANDERING_TRADER_SPAWN_EGG", + "WITCH_SPAWN_EGG", + "WITHER_SKELETON_SPAWN_EGG", + "WOLF_SPAWN_EGG", + "ZOGLIN_SPAWN_EGG", + "ZOMBIE_SPAWN_EGG", + "ZOMBIE_HORSE_SPAWN_EGG", + "ZOMBIE_VILLAGER_SPAWN_EGG", + "ZOMBIFIED_PIGLIN_SPAWN_EGG", + "EXPERIENCE_BOTTLE", + "FIRE_CHARGE", + "WRITABLE_BOOK", + "WRITTEN_BOOK", + "ITEM_FRAME", + "GLOW_ITEM_FRAME", + "FLOWER_POT", + "CARROT", + "POTATO", + "BAKED_POTATO", + "POISONOUS_POTATO", + "MAP", + "GOLDEN_CARROT", + "SKELETON_SKULL", + "WITHER_SKELETON_SKULL", + "PLAYER_HEAD", + "ZOMBIE_HEAD", + "CREEPER_HEAD", + "DRAGON_HEAD", + "NETHER_STAR", + "PUMPKIN_PIE", + "FIREWORK_ROCKET", + "FIREWORK_STAR", + "ENCHANTED_BOOK", + "NETHER_BRICK", + "PRISMARINE_SHARD", + "PRISMARINE_CRYSTALS", + "RABBIT", + "COOKED_RABBIT", + "RABBIT_STEW", + "RABBIT_FOOT", + "RABBIT_HIDE", + "ARMOR_STAND", + "IRON_HORSE_ARMOR", + "GOLDEN_HORSE_ARMOR", + "DIAMOND_HORSE_ARMOR", + "LEATHER_HORSE_ARMOR", + "LEAD", + "NAME_TAG", + "COMMAND_BLOCK_MINECART", + "MUTTON", + "COOKED_MUTTON", + "WHITE_BANNER", + "ORANGE_BANNER", + "MAGENTA_BANNER", + "LIGHT_BLUE_BANNER", + "YELLOW_BANNER", + "LIME_BANNER", + "PINK_BANNER", + "GRAY_BANNER", + "LIGHT_GRAY_BANNER", + "CYAN_BANNER", + "PURPLE_BANNER", + "BLUE_BANNER", + "BROWN_BANNER", + "GREEN_BANNER", + "RED_BANNER", + "BLACK_BANNER", + "END_CRYSTAL", + "CHORUS_FRUIT", + "POPPED_CHORUS_FRUIT", + "BEETROOT", + "BEETROOT_SEEDS", + "BEETROOT_SOUP", + "DRAGON_BREATH", + "SPLASH_POTION", + "SPECTRAL_ARROW", + "TIPPED_ARROW", + "LINGERING_POTION", + "SHIELD", + "TOTEM_OF_UNDYING", + "SHULKER_SHELL", + "IRON_NUGGET", + "KNOWLEDGE_BOOK", + "DEBUG_STICK", + "MUSIC_DISC_13", + "MUSIC_DISC_CAT", + "MUSIC_DISC_BLOCKS", + "MUSIC_DISC_CHIRP", + "MUSIC_DISC_FAR", + "MUSIC_DISC_MALL", + "MUSIC_DISC_MELLOHI", + "MUSIC_DISC_STAL", + "MUSIC_DISC_STRAD", + "MUSIC_DISC_WARD", + "MUSIC_DISC_11", + "MUSIC_DISC_WAIT", + "MUSIC_DISC_PIGSTEP", + "TRIDENT", + "PHANTOM_MEMBRANE", + "NAUTILUS_SHELL", + "HEART_OF_THE_SEA", + "CROSSBOW", + "SUSPICIOUS_STEW", + "LOOM", + "FLOWER_BANNER_PATTERN", + "CREEPER_BANNER_PATTERN", + "SKULL_BANNER_PATTERN", + "MOJANG_BANNER_PATTERN", + "GLOBE_BANNER_PATTERN", + "PIGLIN_BANNER_PATTERN", + "COMPOSTER", + "BARREL", + "SMOKER", + "BLAST_FURNACE", + "CARTOGRAPHY_TABLE", + "FLETCHING_TABLE", + "GRINDSTONE", + "SMITHING_TABLE", + "STONECUTTER", + "BELL", + "LANTERN", + "SOUL_LANTERN", + "SWEET_BERRIES", + "GLOW_BERRIES", + "CAMPFIRE", + "SOUL_CAMPFIRE", + "SHROOMLIGHT", + "HONEYCOMB", + "BEE_NEST", + "BEEHIVE", + "HONEY_BOTTLE", + "HONEYCOMB_BLOCK", + "LODESTONE", + "CRYING_OBSIDIAN", + "BLACKSTONE", + "BLACKSTONE_SLAB", + "BLACKSTONE_STAIRS", + "GILDED_BLACKSTONE", + "POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_SLAB", + "POLISHED_BLACKSTONE_STAIRS", + "CHISELED_POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_BRICKS", + "POLISHED_BLACKSTONE_BRICK_SLAB", + "POLISHED_BLACKSTONE_BRICK_STAIRS", + "CRACKED_POLISHED_BLACKSTONE_BRICKS", + "RESPAWN_ANCHOR", + "CANDLE", + "WHITE_CANDLE", + "ORANGE_CANDLE", + "MAGENTA_CANDLE", + "LIGHT_BLUE_CANDLE", + "YELLOW_CANDLE", + "LIME_CANDLE", + "PINK_CANDLE", + "GRAY_CANDLE", + "LIGHT_GRAY_CANDLE", + "CYAN_CANDLE", + "PURPLE_CANDLE", + "BLUE_CANDLE", + "BROWN_CANDLE", + "GREEN_CANDLE", + "RED_CANDLE", + "BLACK_CANDLE", + "SMALL_AMETHYST_BUD", + "MEDIUM_AMETHYST_BUD", + "LARGE_AMETHYST_BUD", + "AMETHYST_CLUSTER", + "POINTED_DRIPSTONE", + "WATER", + "LAVA", + "TALL_SEAGRASS", + "PISTON_HEAD", + "MOVING_PISTON", + "WALL_TORCH", + "FIRE", + "SOUL_FIRE", + "REDSTONE_WIRE", + "OAK_WALL_SIGN", + "SPRUCE_WALL_SIGN", + "BIRCH_WALL_SIGN", + "ACACIA_WALL_SIGN", + "JUNGLE_WALL_SIGN", + "DARK_OAK_WALL_SIGN", + "REDSTONE_WALL_TORCH", + "SOUL_WALL_TORCH", + "NETHER_PORTAL", + "ATTACHED_PUMPKIN_STEM", + "ATTACHED_MELON_STEM", + "PUMPKIN_STEM", + "MELON_STEM", + "WATER_CAULDRON", + "LAVA_CAULDRON", + "POWDER_SNOW_CAULDRON", + "END_PORTAL", + "COCOA", + "TRIPWIRE", + "POTTED_OAK_SAPLING", + "POTTED_SPRUCE_SAPLING", + "POTTED_BIRCH_SAPLING", + "POTTED_JUNGLE_SAPLING", + "POTTED_ACACIA_SAPLING", + "POTTED_DARK_OAK_SAPLING", + "POTTED_FERN", + "POTTED_DANDELION", + "POTTED_POPPY", + "POTTED_BLUE_ORCHID", + "POTTED_ALLIUM", + "POTTED_AZURE_BLUET", + "POTTED_RED_TULIP", + "POTTED_ORANGE_TULIP", + "POTTED_WHITE_TULIP", + "POTTED_PINK_TULIP", + "POTTED_OXEYE_DAISY", + "POTTED_CORNFLOWER", + "POTTED_LILY_OF_THE_VALLEY", + "POTTED_WITHER_ROSE", + "POTTED_RED_MUSHROOM", + "POTTED_BROWN_MUSHROOM", + "POTTED_DEAD_BUSH", + "POTTED_CACTUS", + "CARROTS", + "POTATOES", + "SKELETON_WALL_SKULL", + "WITHER_SKELETON_WALL_SKULL", + "ZOMBIE_WALL_HEAD", + "PLAYER_WALL_HEAD", + "CREEPER_WALL_HEAD", + "DRAGON_WALL_HEAD", + "WHITE_WALL_BANNER", + "ORANGE_WALL_BANNER", + "MAGENTA_WALL_BANNER", + "LIGHT_BLUE_WALL_BANNER", + "YELLOW_WALL_BANNER", + "LIME_WALL_BANNER", + "PINK_WALL_BANNER", + "GRAY_WALL_BANNER", + "LIGHT_GRAY_WALL_BANNER", + "CYAN_WALL_BANNER", + "PURPLE_WALL_BANNER", + "BLUE_WALL_BANNER", + "BROWN_WALL_BANNER", + "GREEN_WALL_BANNER", + "RED_WALL_BANNER", + "BLACK_WALL_BANNER", + "BEETROOTS", + "END_GATEWAY", + "FROSTED_ICE", + "KELP_PLANT", + "DEAD_TUBE_CORAL_WALL_FAN", + "DEAD_BRAIN_CORAL_WALL_FAN", + "DEAD_BUBBLE_CORAL_WALL_FAN", + "DEAD_FIRE_CORAL_WALL_FAN", + "DEAD_HORN_CORAL_WALL_FAN", + "TUBE_CORAL_WALL_FAN", + "BRAIN_CORAL_WALL_FAN", + "BUBBLE_CORAL_WALL_FAN", + "FIRE_CORAL_WALL_FAN", + "HORN_CORAL_WALL_FAN", + "BAMBOO_SAPLING", + "POTTED_BAMBOO", + "VOID_AIR", + "CAVE_AIR", + "BUBBLE_COLUMN", + "SWEET_BERRY_BUSH", + "WEEPING_VINES_PLANT", + "TWISTING_VINES_PLANT", + "CRIMSON_WALL_SIGN", + "WARPED_WALL_SIGN", + "POTTED_CRIMSON_FUNGUS", + "POTTED_WARPED_FUNGUS", + "POTTED_CRIMSON_ROOTS", + "POTTED_WARPED_ROOTS", + "CANDLE_CAKE", + "WHITE_CANDLE_CAKE", + "ORANGE_CANDLE_CAKE", + "MAGENTA_CANDLE_CAKE", + "LIGHT_BLUE_CANDLE_CAKE", + "YELLOW_CANDLE_CAKE", + "LIME_CANDLE_CAKE", + "PINK_CANDLE_CAKE", + "GRAY_CANDLE_CAKE", + "LIGHT_GRAY_CANDLE_CAKE", + "CYAN_CANDLE_CAKE", + "PURPLE_CANDLE_CAKE", + "BLUE_CANDLE_CAKE", + "BROWN_CANDLE_CAKE", + "GREEN_CANDLE_CAKE", + "RED_CANDLE_CAKE", + "BLACK_CANDLE_CAKE", + "POWDER_SNOW", + "CAVE_VINES", + "CAVE_VINES_PLANT", + "BIG_DRIPLEAF_STEM", + "POTTED_AZALEA_BUSH", + "POTTED_FLOWERING_AZALEA_BUSH" + ] + } + }, + "amount": { + "type": "INTEGER", + "description": [ + "The amount." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "enchantments": { + "type": "LIST", + "description": [ + "The enchantments that will be applied to the item." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the enchantment.", + "", + "Valid values: The id of the enchantment as shown in the /enchant command without the minecraft:", + "For example: sharpness, knockback, power" + ] + }, + "level": { + "type": "INTEGER", + "description": [ + "The level of the enchantment. Allows over enchanting." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + } + } + } + }, + "unbreakable": { + "type": "BOOLEAN", + "description": [ + "Whether the item takes durability damage or not." + ], + "default": false + }, + "placeOn": { + "type": "LIST", + "description": [ + "A list of blocks that this block can be placed on. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "canBreak": { + "type": "LIST", + "description": [ + "A list of blocks that this item can be break. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "constraints": { + "allowedKeys": [ + [ + "helmet", + "head" + ], + [ + "chestplate", + "chest", + "elytra" + ], + [ + "leggings", + "legs", + "pants" + ], + [ + "boots", + "feet" + ] + ] + } + }, + "offhand": { + "type": "OBJECT", + "description": [ + "The item that will be in the players offhand." + ], + "children": { + "material": { + "type": "STRING", + "description": [ + "The item type." + ], + "default": "AIR", + "constraints": { + "enum": [ + "AIR", + "STONE", + "GRANITE", + "POLISHED_GRANITE", + "DIORITE", + "POLISHED_DIORITE", + "ANDESITE", + "POLISHED_ANDESITE", + "DEEPSLATE", + "COBBLED_DEEPSLATE", + "POLISHED_DEEPSLATE", + "CALCITE", + "TUFF", + "DRIPSTONE_BLOCK", + "GRASS_BLOCK", + "DIRT", + "COARSE_DIRT", + "PODZOL", + "ROOTED_DIRT", + "CRIMSON_NYLIUM", + "WARPED_NYLIUM", + "COBBLESTONE", + "OAK_PLANKS", + "SPRUCE_PLANKS", + "BIRCH_PLANKS", + "JUNGLE_PLANKS", + "ACACIA_PLANKS", + "DARK_OAK_PLANKS", + "CRIMSON_PLANKS", + "WARPED_PLANKS", + "OAK_SAPLING", + "SPRUCE_SAPLING", + "BIRCH_SAPLING", + "JUNGLE_SAPLING", + "ACACIA_SAPLING", + "DARK_OAK_SAPLING", + "BEDROCK", + "SAND", + "RED_SAND", + "GRAVEL", + "COAL_ORE", + "DEEPSLATE_COAL_ORE", + "IRON_ORE", + "DEEPSLATE_IRON_ORE", + "COPPER_ORE", + "DEEPSLATE_COPPER_ORE", + "GOLD_ORE", + "DEEPSLATE_GOLD_ORE", + "REDSTONE_ORE", + "DEEPSLATE_REDSTONE_ORE", + "EMERALD_ORE", + "DEEPSLATE_EMERALD_ORE", + "LAPIS_ORE", + "DEEPSLATE_LAPIS_ORE", + "DIAMOND_ORE", + "DEEPSLATE_DIAMOND_ORE", + "NETHER_GOLD_ORE", + "NETHER_QUARTZ_ORE", + "ANCIENT_DEBRIS", + "COAL_BLOCK", + "RAW_IRON_BLOCK", + "RAW_COPPER_BLOCK", + "RAW_GOLD_BLOCK", + "AMETHYST_BLOCK", + "BUDDING_AMETHYST", + "IRON_BLOCK", + "COPPER_BLOCK", + "GOLD_BLOCK", + "DIAMOND_BLOCK", + "NETHERITE_BLOCK", + "EXPOSED_COPPER", + "WEATHERED_COPPER", + "OXIDIZED_COPPER", + "CUT_COPPER", + "EXPOSED_CUT_COPPER", + "WEATHERED_CUT_COPPER", + "OXIDIZED_CUT_COPPER", + "CUT_COPPER_STAIRS", + "EXPOSED_CUT_COPPER_STAIRS", + "WEATHERED_CUT_COPPER_STAIRS", + "OXIDIZED_CUT_COPPER_STAIRS", + "CUT_COPPER_SLAB", + "EXPOSED_CUT_COPPER_SLAB", + "WEATHERED_CUT_COPPER_SLAB", + "OXIDIZED_CUT_COPPER_SLAB", + "WAXED_COPPER_BLOCK", + "WAXED_EXPOSED_COPPER", + "WAXED_WEATHERED_COPPER", + "WAXED_OXIDIZED_COPPER", + "WAXED_CUT_COPPER", + "WAXED_EXPOSED_CUT_COPPER", + "WAXED_WEATHERED_CUT_COPPER", + "WAXED_OXIDIZED_CUT_COPPER", + "WAXED_CUT_COPPER_STAIRS", + "WAXED_EXPOSED_CUT_COPPER_STAIRS", + "WAXED_WEATHERED_CUT_COPPER_STAIRS", + "WAXED_OXIDIZED_CUT_COPPER_STAIRS", + "WAXED_CUT_COPPER_SLAB", + "WAXED_EXPOSED_CUT_COPPER_SLAB", + "WAXED_WEATHERED_CUT_COPPER_SLAB", + "WAXED_OXIDIZED_CUT_COPPER_SLAB", + "OAK_LOG", + "SPRUCE_LOG", + "BIRCH_LOG", + "JUNGLE_LOG", + "ACACIA_LOG", + "DARK_OAK_LOG", + "CRIMSON_STEM", + "WARPED_STEM", + "STRIPPED_OAK_LOG", + "STRIPPED_SPRUCE_LOG", + "STRIPPED_BIRCH_LOG", + "STRIPPED_JUNGLE_LOG", + "STRIPPED_ACACIA_LOG", + "STRIPPED_DARK_OAK_LOG", + "STRIPPED_CRIMSON_STEM", + "STRIPPED_WARPED_STEM", + "STRIPPED_OAK_WOOD", + "STRIPPED_SPRUCE_WOOD", + "STRIPPED_BIRCH_WOOD", + "STRIPPED_JUNGLE_WOOD", + "STRIPPED_ACACIA_WOOD", + "STRIPPED_DARK_OAK_WOOD", + "STRIPPED_CRIMSON_HYPHAE", + "STRIPPED_WARPED_HYPHAE", + "OAK_WOOD", + "SPRUCE_WOOD", + "BIRCH_WOOD", + "JUNGLE_WOOD", + "ACACIA_WOOD", + "DARK_OAK_WOOD", + "CRIMSON_HYPHAE", + "WARPED_HYPHAE", + "OAK_LEAVES", + "SPRUCE_LEAVES", + "BIRCH_LEAVES", + "JUNGLE_LEAVES", + "ACACIA_LEAVES", + "DARK_OAK_LEAVES", + "AZALEA_LEAVES", + "FLOWERING_AZALEA_LEAVES", + "SPONGE", + "WET_SPONGE", + "GLASS", + "TINTED_GLASS", + "LAPIS_BLOCK", + "SANDSTONE", + "CHISELED_SANDSTONE", + "CUT_SANDSTONE", + "COBWEB", + "GRASS", + "FERN", + "AZALEA", + "FLOWERING_AZALEA", + "DEAD_BUSH", + "SEAGRASS", + "SEA_PICKLE", + "WHITE_WOOL", + "ORANGE_WOOL", + "MAGENTA_WOOL", + "LIGHT_BLUE_WOOL", + "YELLOW_WOOL", + "LIME_WOOL", + "PINK_WOOL", + "GRAY_WOOL", + "LIGHT_GRAY_WOOL", + "CYAN_WOOL", + "PURPLE_WOOL", + "BLUE_WOOL", + "BROWN_WOOL", + "GREEN_WOOL", + "RED_WOOL", + "BLACK_WOOL", + "DANDELION", + "POPPY", + "BLUE_ORCHID", + "ALLIUM", + "AZURE_BLUET", + "RED_TULIP", + "ORANGE_TULIP", + "WHITE_TULIP", + "PINK_TULIP", + "OXEYE_DAISY", + "CORNFLOWER", + "LILY_OF_THE_VALLEY", + "WITHER_ROSE", + "SPORE_BLOSSOM", + "BROWN_MUSHROOM", + "RED_MUSHROOM", + "CRIMSON_FUNGUS", + "WARPED_FUNGUS", + "CRIMSON_ROOTS", + "WARPED_ROOTS", + "NETHER_SPROUTS", + "WEEPING_VINES", + "TWISTING_VINES", + "SUGAR_CANE", + "KELP", + "MOSS_CARPET", + "MOSS_BLOCK", + "HANGING_ROOTS", + "BIG_DRIPLEAF", + "SMALL_DRIPLEAF", + "BAMBOO", + "OAK_SLAB", + "SPRUCE_SLAB", + "BIRCH_SLAB", + "JUNGLE_SLAB", + "ACACIA_SLAB", + "DARK_OAK_SLAB", + "CRIMSON_SLAB", + "WARPED_SLAB", + "STONE_SLAB", + "SMOOTH_STONE_SLAB", + "SANDSTONE_SLAB", + "CUT_SANDSTONE_SLAB", + "PETRIFIED_OAK_SLAB", + "COBBLESTONE_SLAB", + "BRICK_SLAB", + "STONE_BRICK_SLAB", + "NETHER_BRICK_SLAB", + "QUARTZ_SLAB", + "RED_SANDSTONE_SLAB", + "CUT_RED_SANDSTONE_SLAB", + "PURPUR_SLAB", + "PRISMARINE_SLAB", + "PRISMARINE_BRICK_SLAB", + "DARK_PRISMARINE_SLAB", + "SMOOTH_QUARTZ", + "SMOOTH_RED_SANDSTONE", + "SMOOTH_SANDSTONE", + "SMOOTH_STONE", + "BRICKS", + "BOOKSHELF", + "MOSSY_COBBLESTONE", + "OBSIDIAN", + "TORCH", + "END_ROD", + "CHORUS_PLANT", + "CHORUS_FLOWER", + "PURPUR_BLOCK", + "PURPUR_PILLAR", + "PURPUR_STAIRS", + "SPAWNER", + "OAK_STAIRS", + "CHEST", + "CRAFTING_TABLE", + "FARMLAND", + "FURNACE", + "LADDER", + "COBBLESTONE_STAIRS", + "SNOW", + "ICE", + "SNOW_BLOCK", + "CACTUS", + "CLAY", + "JUKEBOX", + "OAK_FENCE", + "SPRUCE_FENCE", + "BIRCH_FENCE", + "JUNGLE_FENCE", + "ACACIA_FENCE", + "DARK_OAK_FENCE", + "CRIMSON_FENCE", + "WARPED_FENCE", + "PUMPKIN", + "CARVED_PUMPKIN", + "JACK_O_LANTERN", + "NETHERRACK", + "SOUL_SAND", + "SOUL_SOIL", + "BASALT", + "POLISHED_BASALT", + "SMOOTH_BASALT", + "SOUL_TORCH", + "GLOWSTONE", + "INFESTED_STONE", + "INFESTED_COBBLESTONE", + "INFESTED_STONE_BRICKS", + "INFESTED_MOSSY_STONE_BRICKS", + "INFESTED_CRACKED_STONE_BRICKS", + "INFESTED_CHISELED_STONE_BRICKS", + "INFESTED_DEEPSLATE", + "STONE_BRICKS", + "MOSSY_STONE_BRICKS", + "CRACKED_STONE_BRICKS", + "CHISELED_STONE_BRICKS", + "DEEPSLATE_BRICKS", + "CRACKED_DEEPSLATE_BRICKS", + "DEEPSLATE_TILES", + "CRACKED_DEEPSLATE_TILES", + "CHISELED_DEEPSLATE", + "BROWN_MUSHROOM_BLOCK", + "RED_MUSHROOM_BLOCK", + "MUSHROOM_STEM", + "IRON_BARS", + "CHAIN", + "GLASS_PANE", + "MELON", + "VINE", + "GLOW_LICHEN", + "BRICK_STAIRS", + "STONE_BRICK_STAIRS", + "MYCELIUM", + "LILY_PAD", + "NETHER_BRICKS", + "CRACKED_NETHER_BRICKS", + "CHISELED_NETHER_BRICKS", + "NETHER_BRICK_FENCE", + "NETHER_BRICK_STAIRS", + "ENCHANTING_TABLE", + "END_PORTAL_FRAME", + "END_STONE", + "END_STONE_BRICKS", + "DRAGON_EGG", + "SANDSTONE_STAIRS", + "ENDER_CHEST", + "EMERALD_BLOCK", + "SPRUCE_STAIRS", + "BIRCH_STAIRS", + "JUNGLE_STAIRS", + "CRIMSON_STAIRS", + "WARPED_STAIRS", + "COMMAND_BLOCK", + "BEACON", + "COBBLESTONE_WALL", + "MOSSY_COBBLESTONE_WALL", + "BRICK_WALL", + "PRISMARINE_WALL", + "RED_SANDSTONE_WALL", + "MOSSY_STONE_BRICK_WALL", + "GRANITE_WALL", + "STONE_BRICK_WALL", + "NETHER_BRICK_WALL", + "ANDESITE_WALL", + "RED_NETHER_BRICK_WALL", + "SANDSTONE_WALL", + "END_STONE_BRICK_WALL", + "DIORITE_WALL", + "BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_BRICK_WALL", + "COBBLED_DEEPSLATE_WALL", + "POLISHED_DEEPSLATE_WALL", + "DEEPSLATE_BRICK_WALL", + "DEEPSLATE_TILE_WALL", + "ANVIL", + "CHIPPED_ANVIL", + "DAMAGED_ANVIL", + "CHISELED_QUARTZ_BLOCK", + "QUARTZ_BLOCK", + "QUARTZ_BRICKS", + "QUARTZ_PILLAR", + "QUARTZ_STAIRS", + "WHITE_TERRACOTTA", + "ORANGE_TERRACOTTA", + "MAGENTA_TERRACOTTA", + "LIGHT_BLUE_TERRACOTTA", + "YELLOW_TERRACOTTA", + "LIME_TERRACOTTA", + "PINK_TERRACOTTA", + "GRAY_TERRACOTTA", + "LIGHT_GRAY_TERRACOTTA", + "CYAN_TERRACOTTA", + "PURPLE_TERRACOTTA", + "BLUE_TERRACOTTA", + "BROWN_TERRACOTTA", + "GREEN_TERRACOTTA", + "RED_TERRACOTTA", + "BLACK_TERRACOTTA", + "BARRIER", + "LIGHT", + "HAY_BLOCK", + "WHITE_CARPET", + "ORANGE_CARPET", + "MAGENTA_CARPET", + "LIGHT_BLUE_CARPET", + "YELLOW_CARPET", + "LIME_CARPET", + "PINK_CARPET", + "GRAY_CARPET", + "LIGHT_GRAY_CARPET", + "CYAN_CARPET", + "PURPLE_CARPET", + "BLUE_CARPET", + "BROWN_CARPET", + "GREEN_CARPET", + "RED_CARPET", + "BLACK_CARPET", + "TERRACOTTA", + "PACKED_ICE", + "ACACIA_STAIRS", + "DARK_OAK_STAIRS", + "DIRT_PATH", + "SUNFLOWER", + "LILAC", + "ROSE_BUSH", + "PEONY", + "TALL_GRASS", + "LARGE_FERN", + "WHITE_STAINED_GLASS", + "ORANGE_STAINED_GLASS", + "MAGENTA_STAINED_GLASS", + "LIGHT_BLUE_STAINED_GLASS", + "YELLOW_STAINED_GLASS", + "LIME_STAINED_GLASS", + "PINK_STAINED_GLASS", + "GRAY_STAINED_GLASS", + "LIGHT_GRAY_STAINED_GLASS", + "CYAN_STAINED_GLASS", + "PURPLE_STAINED_GLASS", + "BLUE_STAINED_GLASS", + "BROWN_STAINED_GLASS", + "GREEN_STAINED_GLASS", + "RED_STAINED_GLASS", + "BLACK_STAINED_GLASS", + "WHITE_STAINED_GLASS_PANE", + "ORANGE_STAINED_GLASS_PANE", + "MAGENTA_STAINED_GLASS_PANE", + "LIGHT_BLUE_STAINED_GLASS_PANE", + "YELLOW_STAINED_GLASS_PANE", + "LIME_STAINED_GLASS_PANE", + "PINK_STAINED_GLASS_PANE", + "GRAY_STAINED_GLASS_PANE", + "LIGHT_GRAY_STAINED_GLASS_PANE", + "CYAN_STAINED_GLASS_PANE", + "PURPLE_STAINED_GLASS_PANE", + "BLUE_STAINED_GLASS_PANE", + "BROWN_STAINED_GLASS_PANE", + "GREEN_STAINED_GLASS_PANE", + "RED_STAINED_GLASS_PANE", + "BLACK_STAINED_GLASS_PANE", + "PRISMARINE", + "PRISMARINE_BRICKS", + "DARK_PRISMARINE", + "PRISMARINE_STAIRS", + "PRISMARINE_BRICK_STAIRS", + "DARK_PRISMARINE_STAIRS", + "SEA_LANTERN", + "RED_SANDSTONE", + "CHISELED_RED_SANDSTONE", + "CUT_RED_SANDSTONE", + "RED_SANDSTONE_STAIRS", + "REPEATING_COMMAND_BLOCK", + "CHAIN_COMMAND_BLOCK", + "MAGMA_BLOCK", + "NETHER_WART_BLOCK", + "WARPED_WART_BLOCK", + "RED_NETHER_BRICKS", + "BONE_BLOCK", + "STRUCTURE_VOID", + "SHULKER_BOX", + "WHITE_SHULKER_BOX", + "ORANGE_SHULKER_BOX", + "MAGENTA_SHULKER_BOX", + "LIGHT_BLUE_SHULKER_BOX", + "YELLOW_SHULKER_BOX", + "LIME_SHULKER_BOX", + "PINK_SHULKER_BOX", + "GRAY_SHULKER_BOX", + "LIGHT_GRAY_SHULKER_BOX", + "CYAN_SHULKER_BOX", + "PURPLE_SHULKER_BOX", + "BLUE_SHULKER_BOX", + "BROWN_SHULKER_BOX", + "GREEN_SHULKER_BOX", + "RED_SHULKER_BOX", + "BLACK_SHULKER_BOX", + "WHITE_GLAZED_TERRACOTTA", + "ORANGE_GLAZED_TERRACOTTA", + "MAGENTA_GLAZED_TERRACOTTA", + "LIGHT_BLUE_GLAZED_TERRACOTTA", + "YELLOW_GLAZED_TERRACOTTA", + "LIME_GLAZED_TERRACOTTA", + "PINK_GLAZED_TERRACOTTA", + "GRAY_GLAZED_TERRACOTTA", + "LIGHT_GRAY_GLAZED_TERRACOTTA", + "CYAN_GLAZED_TERRACOTTA", + "PURPLE_GLAZED_TERRACOTTA", + "BLUE_GLAZED_TERRACOTTA", + "BROWN_GLAZED_TERRACOTTA", + "GREEN_GLAZED_TERRACOTTA", + "RED_GLAZED_TERRACOTTA", + "BLACK_GLAZED_TERRACOTTA", + "WHITE_CONCRETE", + "ORANGE_CONCRETE", + "MAGENTA_CONCRETE", + "LIGHT_BLUE_CONCRETE", + "YELLOW_CONCRETE", + "LIME_CONCRETE", + "PINK_CONCRETE", + "GRAY_CONCRETE", + "LIGHT_GRAY_CONCRETE", + "CYAN_CONCRETE", + "PURPLE_CONCRETE", + "BLUE_CONCRETE", + "BROWN_CONCRETE", + "GREEN_CONCRETE", + "RED_CONCRETE", + "BLACK_CONCRETE", + "WHITE_CONCRETE_POWDER", + "ORANGE_CONCRETE_POWDER", + "MAGENTA_CONCRETE_POWDER", + "LIGHT_BLUE_CONCRETE_POWDER", + "YELLOW_CONCRETE_POWDER", + "LIME_CONCRETE_POWDER", + "PINK_CONCRETE_POWDER", + "GRAY_CONCRETE_POWDER", + "LIGHT_GRAY_CONCRETE_POWDER", + "CYAN_CONCRETE_POWDER", + "PURPLE_CONCRETE_POWDER", + "BLUE_CONCRETE_POWDER", + "BROWN_CONCRETE_POWDER", + "GREEN_CONCRETE_POWDER", + "RED_CONCRETE_POWDER", + "BLACK_CONCRETE_POWDER", + "TURTLE_EGG", + "DEAD_TUBE_CORAL_BLOCK", + "DEAD_BRAIN_CORAL_BLOCK", + "DEAD_BUBBLE_CORAL_BLOCK", + "DEAD_FIRE_CORAL_BLOCK", + "DEAD_HORN_CORAL_BLOCK", + "TUBE_CORAL_BLOCK", + "BRAIN_CORAL_BLOCK", + "BUBBLE_CORAL_BLOCK", + "FIRE_CORAL_BLOCK", + "HORN_CORAL_BLOCK", + "TUBE_CORAL", + "BRAIN_CORAL", + "BUBBLE_CORAL", + "FIRE_CORAL", + "HORN_CORAL", + "DEAD_BRAIN_CORAL", + "DEAD_BUBBLE_CORAL", + "DEAD_FIRE_CORAL", + "DEAD_HORN_CORAL", + "DEAD_TUBE_CORAL", + "TUBE_CORAL_FAN", + "BRAIN_CORAL_FAN", + "BUBBLE_CORAL_FAN", + "FIRE_CORAL_FAN", + "HORN_CORAL_FAN", + "DEAD_TUBE_CORAL_FAN", + "DEAD_BRAIN_CORAL_FAN", + "DEAD_BUBBLE_CORAL_FAN", + "DEAD_FIRE_CORAL_FAN", + "DEAD_HORN_CORAL_FAN", + "BLUE_ICE", + "CONDUIT", + "POLISHED_GRANITE_STAIRS", + "SMOOTH_RED_SANDSTONE_STAIRS", + "MOSSY_STONE_BRICK_STAIRS", + "POLISHED_DIORITE_STAIRS", + "MOSSY_COBBLESTONE_STAIRS", + "END_STONE_BRICK_STAIRS", + "STONE_STAIRS", + "SMOOTH_SANDSTONE_STAIRS", + "SMOOTH_QUARTZ_STAIRS", + "GRANITE_STAIRS", + "ANDESITE_STAIRS", + "RED_NETHER_BRICK_STAIRS", + "POLISHED_ANDESITE_STAIRS", + "DIORITE_STAIRS", + "COBBLED_DEEPSLATE_STAIRS", + "POLISHED_DEEPSLATE_STAIRS", + "DEEPSLATE_BRICK_STAIRS", + "DEEPSLATE_TILE_STAIRS", + "POLISHED_GRANITE_SLAB", + "SMOOTH_RED_SANDSTONE_SLAB", + "MOSSY_STONE_BRICK_SLAB", + "POLISHED_DIORITE_SLAB", + "MOSSY_COBBLESTONE_SLAB", + "END_STONE_BRICK_SLAB", + "SMOOTH_SANDSTONE_SLAB", + "SMOOTH_QUARTZ_SLAB", + "GRANITE_SLAB", + "ANDESITE_SLAB", + "RED_NETHER_BRICK_SLAB", + "POLISHED_ANDESITE_SLAB", + "DIORITE_SLAB", + "COBBLED_DEEPSLATE_SLAB", + "POLISHED_DEEPSLATE_SLAB", + "DEEPSLATE_BRICK_SLAB", + "DEEPSLATE_TILE_SLAB", + "SCAFFOLDING", + "REDSTONE", + "REDSTONE_TORCH", + "REDSTONE_BLOCK", + "REPEATER", + "COMPARATOR", + "PISTON", + "STICKY_PISTON", + "SLIME_BLOCK", + "HONEY_BLOCK", + "OBSERVER", + "HOPPER", + "DISPENSER", + "DROPPER", + "LECTERN", + "TARGET", + "LEVER", + "LIGHTNING_ROD", + "DAYLIGHT_DETECTOR", + "SCULK_SENSOR", + "TRIPWIRE_HOOK", + "TRAPPED_CHEST", + "TNT", + "REDSTONE_LAMP", + "NOTE_BLOCK", + "STONE_BUTTON", + "POLISHED_BLACKSTONE_BUTTON", + "OAK_BUTTON", + "SPRUCE_BUTTON", + "BIRCH_BUTTON", + "JUNGLE_BUTTON", + "ACACIA_BUTTON", + "DARK_OAK_BUTTON", + "CRIMSON_BUTTON", + "WARPED_BUTTON", + "STONE_PRESSURE_PLATE", + "POLISHED_BLACKSTONE_PRESSURE_PLATE", + "LIGHT_WEIGHTED_PRESSURE_PLATE", + "HEAVY_WEIGHTED_PRESSURE_PLATE", + "OAK_PRESSURE_PLATE", + "SPRUCE_PRESSURE_PLATE", + "BIRCH_PRESSURE_PLATE", + "JUNGLE_PRESSURE_PLATE", + "ACACIA_PRESSURE_PLATE", + "DARK_OAK_PRESSURE_PLATE", + "CRIMSON_PRESSURE_PLATE", + "WARPED_PRESSURE_PLATE", + "IRON_DOOR", + "OAK_DOOR", + "SPRUCE_DOOR", + "BIRCH_DOOR", + "JUNGLE_DOOR", + "ACACIA_DOOR", + "DARK_OAK_DOOR", + "CRIMSON_DOOR", + "WARPED_DOOR", + "IRON_TRAPDOOR", + "OAK_TRAPDOOR", + "SPRUCE_TRAPDOOR", + "BIRCH_TRAPDOOR", + "JUNGLE_TRAPDOOR", + "ACACIA_TRAPDOOR", + "DARK_OAK_TRAPDOOR", + "CRIMSON_TRAPDOOR", + "WARPED_TRAPDOOR", + "OAK_FENCE_GATE", + "SPRUCE_FENCE_GATE", + "BIRCH_FENCE_GATE", + "JUNGLE_FENCE_GATE", + "ACACIA_FENCE_GATE", + "DARK_OAK_FENCE_GATE", + "CRIMSON_FENCE_GATE", + "WARPED_FENCE_GATE", + "POWERED_RAIL", + "DETECTOR_RAIL", + "RAIL", + "ACTIVATOR_RAIL", + "SADDLE", + "MINECART", + "CHEST_MINECART", + "FURNACE_MINECART", + "TNT_MINECART", + "HOPPER_MINECART", + "CARROT_ON_A_STICK", + "WARPED_FUNGUS_ON_A_STICK", + "ELYTRA", + "OAK_BOAT", + "SPRUCE_BOAT", + "BIRCH_BOAT", + "JUNGLE_BOAT", + "ACACIA_BOAT", + "DARK_OAK_BOAT", + "STRUCTURE_BLOCK", + "JIGSAW", + "TURTLE_HELMET", + "SCUTE", + "FLINT_AND_STEEL", + "APPLE", + "BOW", + "ARROW", + "COAL", + "CHARCOAL", + "DIAMOND", + "EMERALD", + "LAPIS_LAZULI", + "QUARTZ", + "AMETHYST_SHARD", + "RAW_IRON", + "IRON_INGOT", + "RAW_COPPER", + "COPPER_INGOT", + "RAW_GOLD", + "GOLD_INGOT", + "NETHERITE_INGOT", + "NETHERITE_SCRAP", + "WOODEN_SWORD", + "WOODEN_SHOVEL", + "WOODEN_PICKAXE", + "WOODEN_AXE", + "WOODEN_HOE", + "STONE_SWORD", + "STONE_SHOVEL", + "STONE_PICKAXE", + "STONE_AXE", + "STONE_HOE", + "GOLDEN_SWORD", + "GOLDEN_SHOVEL", + "GOLDEN_PICKAXE", + "GOLDEN_AXE", + "GOLDEN_HOE", + "IRON_SWORD", + "IRON_SHOVEL", + "IRON_PICKAXE", + "IRON_AXE", + "IRON_HOE", + "DIAMOND_SWORD", + "DIAMOND_SHOVEL", + "DIAMOND_PICKAXE", + "DIAMOND_AXE", + "DIAMOND_HOE", + "NETHERITE_SWORD", + "NETHERITE_SHOVEL", + "NETHERITE_PICKAXE", + "NETHERITE_AXE", + "NETHERITE_HOE", + "STICK", + "BOWL", + "MUSHROOM_STEW", + "STRING", + "FEATHER", + "GUNPOWDER", + "WHEAT_SEEDS", + "WHEAT", + "BREAD", + "LEATHER_HELMET", + "LEATHER_CHESTPLATE", + "LEATHER_LEGGINGS", + "LEATHER_BOOTS", + "CHAINMAIL_HELMET", + "CHAINMAIL_CHESTPLATE", + "CHAINMAIL_LEGGINGS", + "CHAINMAIL_BOOTS", + "IRON_HELMET", + "IRON_CHESTPLATE", + "IRON_LEGGINGS", + "IRON_BOOTS", + "DIAMOND_HELMET", + "DIAMOND_CHESTPLATE", + "DIAMOND_LEGGINGS", + "DIAMOND_BOOTS", + "GOLDEN_HELMET", + "GOLDEN_CHESTPLATE", + "GOLDEN_LEGGINGS", + "GOLDEN_BOOTS", + "NETHERITE_HELMET", + "NETHERITE_CHESTPLATE", + "NETHERITE_LEGGINGS", + "NETHERITE_BOOTS", + "FLINT", + "PORKCHOP", + "COOKED_PORKCHOP", + "PAINTING", + "GOLDEN_APPLE", + "ENCHANTED_GOLDEN_APPLE", + "OAK_SIGN", + "SPRUCE_SIGN", + "BIRCH_SIGN", + "JUNGLE_SIGN", + "ACACIA_SIGN", + "DARK_OAK_SIGN", + "CRIMSON_SIGN", + "WARPED_SIGN", + "BUCKET", + "WATER_BUCKET", + "LAVA_BUCKET", + "POWDER_SNOW_BUCKET", + "SNOWBALL", + "LEATHER", + "MILK_BUCKET", + "PUFFERFISH_BUCKET", + "SALMON_BUCKET", + "COD_BUCKET", + "TROPICAL_FISH_BUCKET", + "AXOLOTL_BUCKET", + "BRICK", + "CLAY_BALL", + "DRIED_KELP_BLOCK", + "PAPER", + "BOOK", + "SLIME_BALL", + "EGG", + "COMPASS", + "BUNDLE", + "FISHING_ROD", + "CLOCK", + "SPYGLASS", + "GLOWSTONE_DUST", + "COD", + "SALMON", + "TROPICAL_FISH", + "PUFFERFISH", + "COOKED_COD", + "COOKED_SALMON", + "INK_SAC", + "GLOW_INK_SAC", + "COCOA_BEANS", + "WHITE_DYE", + "ORANGE_DYE", + "MAGENTA_DYE", + "LIGHT_BLUE_DYE", + "YELLOW_DYE", + "LIME_DYE", + "PINK_DYE", + "GRAY_DYE", + "LIGHT_GRAY_DYE", + "CYAN_DYE", + "PURPLE_DYE", + "BLUE_DYE", + "BROWN_DYE", + "GREEN_DYE", + "RED_DYE", + "BLACK_DYE", + "BONE_MEAL", + "BONE", + "SUGAR", + "CAKE", + "WHITE_BED", + "ORANGE_BED", + "MAGENTA_BED", + "LIGHT_BLUE_BED", + "YELLOW_BED", + "LIME_BED", + "PINK_BED", + "GRAY_BED", + "LIGHT_GRAY_BED", + "CYAN_BED", + "PURPLE_BED", + "BLUE_BED", + "BROWN_BED", + "GREEN_BED", + "RED_BED", + "BLACK_BED", + "COOKIE", + "FILLED_MAP", + "SHEARS", + "MELON_SLICE", + "DRIED_KELP", + "PUMPKIN_SEEDS", + "MELON_SEEDS", + "BEEF", + "COOKED_BEEF", + "CHICKEN", + "COOKED_CHICKEN", + "ROTTEN_FLESH", + "ENDER_PEARL", + "BLAZE_ROD", + "GHAST_TEAR", + "GOLD_NUGGET", + "NETHER_WART", + "POTION", + "GLASS_BOTTLE", + "SPIDER_EYE", + "FERMENTED_SPIDER_EYE", + "BLAZE_POWDER", + "MAGMA_CREAM", + "BREWING_STAND", + "CAULDRON", + "ENDER_EYE", + "GLISTERING_MELON_SLICE", + "AXOLOTL_SPAWN_EGG", + "BAT_SPAWN_EGG", + "BEE_SPAWN_EGG", + "BLAZE_SPAWN_EGG", + "CAT_SPAWN_EGG", + "CAVE_SPIDER_SPAWN_EGG", + "CHICKEN_SPAWN_EGG", + "COD_SPAWN_EGG", + "COW_SPAWN_EGG", + "CREEPER_SPAWN_EGG", + "DOLPHIN_SPAWN_EGG", + "DONKEY_SPAWN_EGG", + "DROWNED_SPAWN_EGG", + "ELDER_GUARDIAN_SPAWN_EGG", + "ENDERMAN_SPAWN_EGG", + "ENDERMITE_SPAWN_EGG", + "EVOKER_SPAWN_EGG", + "FOX_SPAWN_EGG", + "GHAST_SPAWN_EGG", + "GLOW_SQUID_SPAWN_EGG", + "GOAT_SPAWN_EGG", + "GUARDIAN_SPAWN_EGG", + "HOGLIN_SPAWN_EGG", + "HORSE_SPAWN_EGG", + "HUSK_SPAWN_EGG", + "LLAMA_SPAWN_EGG", + "MAGMA_CUBE_SPAWN_EGG", + "MOOSHROOM_SPAWN_EGG", + "MULE_SPAWN_EGG", + "OCELOT_SPAWN_EGG", + "PANDA_SPAWN_EGG", + "PARROT_SPAWN_EGG", + "PHANTOM_SPAWN_EGG", + "PIG_SPAWN_EGG", + "PIGLIN_SPAWN_EGG", + "PIGLIN_BRUTE_SPAWN_EGG", + "PILLAGER_SPAWN_EGG", + "POLAR_BEAR_SPAWN_EGG", + "PUFFERFISH_SPAWN_EGG", + "RABBIT_SPAWN_EGG", + "RAVAGER_SPAWN_EGG", + "SALMON_SPAWN_EGG", + "SHEEP_SPAWN_EGG", + "SHULKER_SPAWN_EGG", + "SILVERFISH_SPAWN_EGG", + "SKELETON_SPAWN_EGG", + "SKELETON_HORSE_SPAWN_EGG", + "SLIME_SPAWN_EGG", + "SPIDER_SPAWN_EGG", + "SQUID_SPAWN_EGG", + "STRAY_SPAWN_EGG", + "STRIDER_SPAWN_EGG", + "TRADER_LLAMA_SPAWN_EGG", + "TROPICAL_FISH_SPAWN_EGG", + "TURTLE_SPAWN_EGG", + "VEX_SPAWN_EGG", + "VILLAGER_SPAWN_EGG", + "VINDICATOR_SPAWN_EGG", + "WANDERING_TRADER_SPAWN_EGG", + "WITCH_SPAWN_EGG", + "WITHER_SKELETON_SPAWN_EGG", + "WOLF_SPAWN_EGG", + "ZOGLIN_SPAWN_EGG", + "ZOMBIE_SPAWN_EGG", + "ZOMBIE_HORSE_SPAWN_EGG", + "ZOMBIE_VILLAGER_SPAWN_EGG", + "ZOMBIFIED_PIGLIN_SPAWN_EGG", + "EXPERIENCE_BOTTLE", + "FIRE_CHARGE", + "WRITABLE_BOOK", + "WRITTEN_BOOK", + "ITEM_FRAME", + "GLOW_ITEM_FRAME", + "FLOWER_POT", + "CARROT", + "POTATO", + "BAKED_POTATO", + "POISONOUS_POTATO", + "MAP", + "GOLDEN_CARROT", + "SKELETON_SKULL", + "WITHER_SKELETON_SKULL", + "PLAYER_HEAD", + "ZOMBIE_HEAD", + "CREEPER_HEAD", + "DRAGON_HEAD", + "NETHER_STAR", + "PUMPKIN_PIE", + "FIREWORK_ROCKET", + "FIREWORK_STAR", + "ENCHANTED_BOOK", + "NETHER_BRICK", + "PRISMARINE_SHARD", + "PRISMARINE_CRYSTALS", + "RABBIT", + "COOKED_RABBIT", + "RABBIT_STEW", + "RABBIT_FOOT", + "RABBIT_HIDE", + "ARMOR_STAND", + "IRON_HORSE_ARMOR", + "GOLDEN_HORSE_ARMOR", + "DIAMOND_HORSE_ARMOR", + "LEATHER_HORSE_ARMOR", + "LEAD", + "NAME_TAG", + "COMMAND_BLOCK_MINECART", + "MUTTON", + "COOKED_MUTTON", + "WHITE_BANNER", + "ORANGE_BANNER", + "MAGENTA_BANNER", + "LIGHT_BLUE_BANNER", + "YELLOW_BANNER", + "LIME_BANNER", + "PINK_BANNER", + "GRAY_BANNER", + "LIGHT_GRAY_BANNER", + "CYAN_BANNER", + "PURPLE_BANNER", + "BLUE_BANNER", + "BROWN_BANNER", + "GREEN_BANNER", + "RED_BANNER", + "BLACK_BANNER", + "END_CRYSTAL", + "CHORUS_FRUIT", + "POPPED_CHORUS_FRUIT", + "BEETROOT", + "BEETROOT_SEEDS", + "BEETROOT_SOUP", + "DRAGON_BREATH", + "SPLASH_POTION", + "SPECTRAL_ARROW", + "TIPPED_ARROW", + "LINGERING_POTION", + "SHIELD", + "TOTEM_OF_UNDYING", + "SHULKER_SHELL", + "IRON_NUGGET", + "KNOWLEDGE_BOOK", + "DEBUG_STICK", + "MUSIC_DISC_13", + "MUSIC_DISC_CAT", + "MUSIC_DISC_BLOCKS", + "MUSIC_DISC_CHIRP", + "MUSIC_DISC_FAR", + "MUSIC_DISC_MALL", + "MUSIC_DISC_MELLOHI", + "MUSIC_DISC_STAL", + "MUSIC_DISC_STRAD", + "MUSIC_DISC_WARD", + "MUSIC_DISC_11", + "MUSIC_DISC_WAIT", + "MUSIC_DISC_PIGSTEP", + "TRIDENT", + "PHANTOM_MEMBRANE", + "NAUTILUS_SHELL", + "HEART_OF_THE_SEA", + "CROSSBOW", + "SUSPICIOUS_STEW", + "LOOM", + "FLOWER_BANNER_PATTERN", + "CREEPER_BANNER_PATTERN", + "SKULL_BANNER_PATTERN", + "MOJANG_BANNER_PATTERN", + "GLOBE_BANNER_PATTERN", + "PIGLIN_BANNER_PATTERN", + "COMPOSTER", + "BARREL", + "SMOKER", + "BLAST_FURNACE", + "CARTOGRAPHY_TABLE", + "FLETCHING_TABLE", + "GRINDSTONE", + "SMITHING_TABLE", + "STONECUTTER", + "BELL", + "LANTERN", + "SOUL_LANTERN", + "SWEET_BERRIES", + "GLOW_BERRIES", + "CAMPFIRE", + "SOUL_CAMPFIRE", + "SHROOMLIGHT", + "HONEYCOMB", + "BEE_NEST", + "BEEHIVE", + "HONEY_BOTTLE", + "HONEYCOMB_BLOCK", + "LODESTONE", + "CRYING_OBSIDIAN", + "BLACKSTONE", + "BLACKSTONE_SLAB", + "BLACKSTONE_STAIRS", + "GILDED_BLACKSTONE", + "POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_SLAB", + "POLISHED_BLACKSTONE_STAIRS", + "CHISELED_POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_BRICKS", + "POLISHED_BLACKSTONE_BRICK_SLAB", + "POLISHED_BLACKSTONE_BRICK_STAIRS", + "CRACKED_POLISHED_BLACKSTONE_BRICKS", + "RESPAWN_ANCHOR", + "CANDLE", + "WHITE_CANDLE", + "ORANGE_CANDLE", + "MAGENTA_CANDLE", + "LIGHT_BLUE_CANDLE", + "YELLOW_CANDLE", + "LIME_CANDLE", + "PINK_CANDLE", + "GRAY_CANDLE", + "LIGHT_GRAY_CANDLE", + "CYAN_CANDLE", + "PURPLE_CANDLE", + "BLUE_CANDLE", + "BROWN_CANDLE", + "GREEN_CANDLE", + "RED_CANDLE", + "BLACK_CANDLE", + "SMALL_AMETHYST_BUD", + "MEDIUM_AMETHYST_BUD", + "LARGE_AMETHYST_BUD", + "AMETHYST_CLUSTER", + "POINTED_DRIPSTONE", + "WATER", + "LAVA", + "TALL_SEAGRASS", + "PISTON_HEAD", + "MOVING_PISTON", + "WALL_TORCH", + "FIRE", + "SOUL_FIRE", + "REDSTONE_WIRE", + "OAK_WALL_SIGN", + "SPRUCE_WALL_SIGN", + "BIRCH_WALL_SIGN", + "ACACIA_WALL_SIGN", + "JUNGLE_WALL_SIGN", + "DARK_OAK_WALL_SIGN", + "REDSTONE_WALL_TORCH", + "SOUL_WALL_TORCH", + "NETHER_PORTAL", + "ATTACHED_PUMPKIN_STEM", + "ATTACHED_MELON_STEM", + "PUMPKIN_STEM", + "MELON_STEM", + "WATER_CAULDRON", + "LAVA_CAULDRON", + "POWDER_SNOW_CAULDRON", + "END_PORTAL", + "COCOA", + "TRIPWIRE", + "POTTED_OAK_SAPLING", + "POTTED_SPRUCE_SAPLING", + "POTTED_BIRCH_SAPLING", + "POTTED_JUNGLE_SAPLING", + "POTTED_ACACIA_SAPLING", + "POTTED_DARK_OAK_SAPLING", + "POTTED_FERN", + "POTTED_DANDELION", + "POTTED_POPPY", + "POTTED_BLUE_ORCHID", + "POTTED_ALLIUM", + "POTTED_AZURE_BLUET", + "POTTED_RED_TULIP", + "POTTED_ORANGE_TULIP", + "POTTED_WHITE_TULIP", + "POTTED_PINK_TULIP", + "POTTED_OXEYE_DAISY", + "POTTED_CORNFLOWER", + "POTTED_LILY_OF_THE_VALLEY", + "POTTED_WITHER_ROSE", + "POTTED_RED_MUSHROOM", + "POTTED_BROWN_MUSHROOM", + "POTTED_DEAD_BUSH", + "POTTED_CACTUS", + "CARROTS", + "POTATOES", + "SKELETON_WALL_SKULL", + "WITHER_SKELETON_WALL_SKULL", + "ZOMBIE_WALL_HEAD", + "PLAYER_WALL_HEAD", + "CREEPER_WALL_HEAD", + "DRAGON_WALL_HEAD", + "WHITE_WALL_BANNER", + "ORANGE_WALL_BANNER", + "MAGENTA_WALL_BANNER", + "LIGHT_BLUE_WALL_BANNER", + "YELLOW_WALL_BANNER", + "LIME_WALL_BANNER", + "PINK_WALL_BANNER", + "GRAY_WALL_BANNER", + "LIGHT_GRAY_WALL_BANNER", + "CYAN_WALL_BANNER", + "PURPLE_WALL_BANNER", + "BLUE_WALL_BANNER", + "BROWN_WALL_BANNER", + "GREEN_WALL_BANNER", + "RED_WALL_BANNER", + "BLACK_WALL_BANNER", + "BEETROOTS", + "END_GATEWAY", + "FROSTED_ICE", + "KELP_PLANT", + "DEAD_TUBE_CORAL_WALL_FAN", + "DEAD_BRAIN_CORAL_WALL_FAN", + "DEAD_BUBBLE_CORAL_WALL_FAN", + "DEAD_FIRE_CORAL_WALL_FAN", + "DEAD_HORN_CORAL_WALL_FAN", + "TUBE_CORAL_WALL_FAN", + "BRAIN_CORAL_WALL_FAN", + "BUBBLE_CORAL_WALL_FAN", + "FIRE_CORAL_WALL_FAN", + "HORN_CORAL_WALL_FAN", + "BAMBOO_SAPLING", + "POTTED_BAMBOO", + "VOID_AIR", + "CAVE_AIR", + "BUBBLE_COLUMN", + "SWEET_BERRY_BUSH", + "WEEPING_VINES_PLANT", + "TWISTING_VINES_PLANT", + "CRIMSON_WALL_SIGN", + "WARPED_WALL_SIGN", + "POTTED_CRIMSON_FUNGUS", + "POTTED_WARPED_FUNGUS", + "POTTED_CRIMSON_ROOTS", + "POTTED_WARPED_ROOTS", + "CANDLE_CAKE", + "WHITE_CANDLE_CAKE", + "ORANGE_CANDLE_CAKE", + "MAGENTA_CANDLE_CAKE", + "LIGHT_BLUE_CANDLE_CAKE", + "YELLOW_CANDLE_CAKE", + "LIME_CANDLE_CAKE", + "PINK_CANDLE_CAKE", + "GRAY_CANDLE_CAKE", + "LIGHT_GRAY_CANDLE_CAKE", + "CYAN_CANDLE_CAKE", + "PURPLE_CANDLE_CAKE", + "BLUE_CANDLE_CAKE", + "BROWN_CANDLE_CAKE", + "GREEN_CANDLE_CAKE", + "RED_CANDLE_CAKE", + "BLACK_CANDLE_CAKE", + "POWDER_SNOW", + "CAVE_VINES", + "CAVE_VINES_PLANT", + "BIG_DRIPLEAF_STEM", + "POTTED_AZALEA_BUSH", + "POTTED_FLOWERING_AZALEA_BUSH" + ] + } + }, + "amount": { + "type": "INTEGER", + "description": [ + "The amount." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "enchantments": { + "type": "LIST", + "description": [ + "The enchantments that will be applied to the item." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the enchantment.", + "", + "Valid values: The id of the enchantment as shown in the /enchant command without the minecraft:", + "For example: sharpness, knockback, power" + ] + }, + "level": { + "type": "INTEGER", + "description": [ + "The level of the enchantment. Allows over enchanting." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + } + } + } + }, + "unbreakable": { + "type": "BOOLEAN", + "description": [ + "Whether the item takes durability damage or not." + ], + "default": false + }, + "placeOn": { + "type": "LIST", + "description": [ + "A list of blocks that this block can be placed on. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "canBreak": { + "type": "LIST", + "description": [ + "A list of blocks that this item can be break. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "effects": { + "type": "LIST", + "description": [ + "The potion effects that will be applied to players upon spawning." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the potion effect.", + "", + "Valid values: the name of the potion effect as seen in the /effect command without minecraft:", + "For example: invisibility, strength, haste" + ] + }, + "strength": { + "type": "INTEGER", + "description": [ + "The strength of the potion effect." + ], + "constraints": { + "maxValueInt": 255, + "minValueInt": 0 + } + }, + "duration": { + "type": "INTEGER", + "description": [ + "The duration of the potion effect in ticks. (20 ticks = 1 second)" + ], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + }, + "hidden": { + "type": "BOOLEAN", + "description": [ + "Whether the potion effect should be hidden from the player. This hides the particles and the icon." + ] + } + } + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "checkpoints": { + "type": "LIST", + "description": [ + "The checkpoints for the arena. Both normal checkpoints and finish points are defined here." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "label": { + "type": "STRING", + "description": [ + "The name of the checkpoint." + ] + }, + "lower": { + "type": "OBJECT", + "description": [ + "The lower corner of the checkpoint area." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "upper": { + "type": "OBJECT", + "description": [ + "The upper corner of the checkpoint area." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "spawn-rule": { + "type": "STRING", + "description": [ + "The spawn rule to use for this checkpoint when respawning or moving players." + ] + }, + "spawn-pool": { + "type": "STRING", + "description": [ + "The spawn pool to use for this checkpoint when respawning or moving players." + ] + }, + "move-player": { + "type": "BOOLEAN", + "description": [ + "Whether or not to teleport players to the spawn-rule/spawn-pool when they reach the checkpoint." + ], + "default": false + }, + "is-finish": { + "type": "BOOLEAN", + "description": [ + "Whether or not this checkpoint counts as a finish. If it does players will be placed into spectator mode upon reaching it." + ], + "default": false + } + } + } + }, + "points": { + "type": "OBJECT", + "description": [ + "The points that can be obtained by doing certain actions.", + "These points are always awarded top down with the last repeating.", + "For example when you set kill to 10, 5, and 0, the first player to get a kill will receive 10 points, the second 5, and every player after that will receive 0." + ], + "children": { + "kill": { + "type": "LIST", + "description": [ + "The points given to a player when they get a kill." + ], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + }, + "last-man-standing": { + "type": "LIST", + "description": [ + "The points given to a player for staying alive the longest." + ], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + }, + "checkpoints": { + "type": "MAP", + "description": [ + "The points given to a player for reaching a checkpoint.", + "", + "Valid keys: the label of a checkpoint defined in the checkpoints section." + ], + "items": { + "type": "LIST", + "description": [], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "pools": { + "type": "MAP", + "description": [ + "The points given to a player for reaching a checkpoint that is part of a spawn pool.", + "The first list represents the first checkpoint, the second the second checkpoint, etc", + "", + "Valid keys: the names of spawn pools as defined in the spawn-pools section." + ], + "items": { + "type": "LIST", + "description": [], + "items": { + "type": "LIST", + "description": [], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + } + } + }, + "spawnRules": { + "type": "MAP", + "description": [ + "The spawn rules used by the arena. These rules are used by many different components to link multiple spawns together with a set of items.", + "There are two special spawn rules that are required for the operation of the plugin. These are:", + "initial - Used by the plugin to do the initial round of spawning.", + "spectator - Used by the plugin to spawn the spectators." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "reuse-spawns": { + "type": "BOOLEAN", + "description": [ + "Whether or not to reuse the spawns for different players." + ], + "default": true + }, + "reuse-individual": { + "type": "BOOLEAN", + "description": [ + "Whether or not to reuse the spawns for individual players.", + "When this is set a player will always use the same spawn after spawning there once." + ], + "default": false + }, + "spawns": { + "type": "LIST", + "description": [ + "The list of spawns that this spawn rule can pick from.", + "", + "Valid values: any spawn name defined in the spawns section." + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "loadout": { + "type": "STRING", + "description": [ + "The loadout to use for players that are spawned using this spawn rule. Use none to not give them any items.", + "", + "Valid values: any loadout defined in the loadouts section or none." + ], + "default": "none" + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "features": { + "type": "LIST", + "description": [ + "The list of features that are enabled in the arena." + ], + "items": { + "type": "STRING", + "description": [], + "constraints": { + "enum": [ + "ALWAYS", + "RESPAWN", + "DEATH_MESSAGE", + "CHECKPOINTS", + "CHECKPOINT_SOUND", + "CHECKPOINT_MESSAGE", + "PVP", + "NO_FALL", + "SHOW_TIMER", + "RESTRICT_BUILDING", + "GAMEMODE_ADVENTURE", + "HORIZONTAL_BORDERS", + "NO_TILE_DROPS", + "ITEM_FIREBALL", + "ITEM_GRAPPLING_HOOK" + ] + } + } + }, + "borders": { + "type": "OBJECT", + "description": [ + "The different borders used by the arena. These are defined using border script. Below a short explanation of the different keyword:", + "CENTER - Set the center of the border to x,z. (ONLY AVAILABLE FOR VERTICAL BORDERS)", + "SET - On vertical borders set the with to i. On horizontal borders set the height to i.", + "TRANSITION - Same as SET , but over t seconds.", + "WAIT - Wait for t seconds." + ], + "children": { + "vertical": { + "type": "LIST", + "description": [ + "The vertical border of the world. This is the normal minecraft border." + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "top": { + "type": "LIST", + "description": [ + "A horizontal border that kills everyone that is above it. This border is indicated using particle effects." + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "bottom": { + "type": "LIST", + "description": [ + "A horizontal border that kills everyone that is below it. This border is indicated using particle effects." + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "end-conditions": { + "type": "OBJECT", + "description": [ + "The end conditions of the arena." + ], + "children": { + "players-left": { + "type": "INTEGER", + "description": [ + "End the game when there are this many players left alive. Set to -1 to disable." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -1 + } + }, + "time": { + "type": "INTEGER", + "description": [ + "End the game after this amount of seconds. Set to -1 to disable." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -1 + } + }, + "players-finished": { + "type": "INTEGER", + "description": [ + "End the game after this amount of players reach a finish checkpoint. Set to -1 to disable." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -1 + } + } + } + }, + "spawn-pools": { + "type": "MAP", + "description": [ + "The spawn pools that can be used by the arena. These are used to define groups of spawn rules that can be chosen at random by checkpoints." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "label": { + "type": "STRING", + "description": [ + "The name of the spawn pool." + ] + }, + "times": { + "type": "INTEGER", + "description": [ + "The amount of spawn rules that will be chosen before a player is considered finished." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "rules": { + "type": "LIST", + "description": [ + "The list of spawn rules that the pool can choose from.", + "", + "Valid values: any spawn rule defined in the spawn-rules section." + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "break-allowed": { + "type": "OBJECT", + "description": [ + "The blocks that players are allowed to break in the arena. Unless specified otherwise all blocks can be broken." + ], + "children": { + "ruleList": { + "type": "LIST", + "description": [ + "The list of rules. These rules support full regular expression. For example .*_wool will match all colors of wool." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "rule": { + "type": "STRING", + "description": [] + }, + "type": { + "type": "STRING", + "description": [], + "default": "BLOCK", + "constraints": { + "enum": [ + "ALLOW", + "BLOCK" + ] + } + } + } + } + } + } + }, + "place-allowed": { + "type": "OBJECT", + "description": [ + "The blocks that players are allowed to place in the arena. Unless specified otherwise all blocks can be broken." + ], + "children": { + "ruleList": { + "type": "LIST", + "description": [ + "The list of rules. These rules support full regular expression. For example .*_wool will match all colors of wool." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "rule": { + "type": "STRING", + "description": [] + }, + "type": { + "type": "STRING", + "description": [], + "default": "BLOCK", + "constraints": { + "enum": [ + "ALLOW", + "BLOCK" + ] + } + } + } + } + } + } + }, + "countdown": { + "type": "OBJECT", + "description": [ + "The different countdowns used by the arena." + ], + "children": { + "loading": { + "type": "INTEGER", + "description": [ + "The time to count down before teleport players into the map for spectating." + ], + "default": 10, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + }, + "spectator": { + "type": "INTEGER", + "description": [ + "The time players have in spectator mode before being moved to the staging area." + ], + "default": 10, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + }, + "before-start": { + "type": "INTEGER", + "description": [ + "The time to count down in the staging area before removing the area defined in the block-remove-zone section." + ], + "default": 10, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + } + } + }, + "block-remove-zone": { + "type": "OBJECT", + "description": [ + "A area of blocks to remove at the start of the game." + ], + "children": { + "lower": { + "type": "OBJECT", + "description": [ + "The lower corner of the area to remove." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "upper": { + "type": "OBJECT", + "description": [ + "The upper corner of the area to remove." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/index.html b/src/main/resources/index.html new file mode 100644 index 0000000..b5fc37b --- /dev/null +++ b/src/main/resources/index.html @@ -0,0 +1,12 @@ + + + + + JS Client + + + + +
+ +