├── .eslintrc.json ├── public ├── favicon.ico └── vercel.svg ├── pages ├── _app.js ├── api │ └── hello.js ├── face-landmark-detection │ └── index.js ├── index.js └── hand-pose-detection │ └── index.js ├── next.config.js ├── README.md ├── .gitignore ├── styles ├── globals.css └── Home.module.css ├── components ├── FpsCounter.js └── FaceLandmarksDetections.js ├── lib ├── hooks │ └── useAnimationFrame.js └── utils.js ├── .devcontainer ├── Dockerfile ├── devcontainer.json └── base.Dockerfile ├── package.json └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felicksLindgren/ml-app/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import '../styles/globals.css' 2 | 3 | function MyApp({ Component, pageProps }) { 4 | return 5 | } 6 | 7 | export default MyApp 8 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | swcMinify: true, 5 | } 6 | 7 | module.exports = nextConfig 8 | -------------------------------------------------------------------------------- /pages/api/hello.js: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | 3 | export default function handler(req, res) { 4 | res.status(200).json({ name: 'John Doe' }) 5 | } 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Try it out here 2 | [ml-app](https://ml-app-felickslindgren.vercel.app/) 3 | 4 | ## Getting Started 5 | 6 | First, run the development server: 7 | 8 | ```bash 9 | npm run dev 10 | # or 11 | yarn dev 12 | ``` 13 | 14 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | padding: 0; 4 | margin: 0; 5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 7 | } 8 | 9 | a { 10 | color: inherit; 11 | text-decoration: none; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | } 17 | 18 | @media (prefers-color-scheme: dark) { 19 | html { 20 | /* color-scheme: dark; */ 21 | } 22 | body { 23 | /* color: rgb(178, 186, 194); 24 | background: rgb(0 30 60); */ 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /components/FpsCounter.js: -------------------------------------------------------------------------------- 1 | import { useState } from "react" 2 | import { useAnimationFrame } from "../lib/hooks/useAnimationFrame"; 3 | 4 | export default function FpsCounter() { 5 | const [fps, setFps] = useState(0); 6 | const [count, setCount] = useState(0); 7 | const [animate, setAnimate] = useState(false); 8 | 9 | useAnimationFrame(delta => { 10 | setFps(() => Math.floor(1000 / delta)); 11 | setCount(prev => prev + 1); 12 | }, animate); 13 | 14 | return ( 15 | <> 16 | {fps} FPS, {count} 17 | 18 | 19 | ) 20 | } -------------------------------------------------------------------------------- /lib/hooks/useAnimationFrame.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react" 2 | 3 | export const useAnimationFrame = (callback, shouldAnimate = false) => { 4 | const frameRef = useRef(0); 5 | const timeRef = useRef(); 6 | 7 | const animate = time => { 8 | if (timeRef.current != undefined) { 9 | const deltaTime = time - timeRef.current; 10 | callback(deltaTime); 11 | } 12 | 13 | timeRef.current = time; 14 | frameRef.current = requestAnimationFrame(animate); 15 | }; 16 | 17 | useEffect(() => { 18 | if (shouldAnimate) { 19 | frameRef.current = requestAnimationFrame(animate); 20 | } else { 21 | cancelAnimationFrame(frameRef.current); 22 | } 23 | 24 | return () => cancelAnimationFrame(frameRef.current); 25 | }, [shouldAnimate]); 26 | } -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | # [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster 2 | ARG VARIANT=16-bullseye 3 | FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT} 4 | 5 | # [Optional] Uncomment this section to install additional OS packages. 6 | # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 7 | # && apt-get -y install --no-install-recommends 8 | 9 | # [Optional] Uncomment if you want to install an additional version of node using nvm 10 | # ARG EXTRA_NODE_VERSION=10 11 | # RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" 12 | 13 | # [Optional] Uncomment if you want to install more global node modules 14 | # RUN su node -c "npm install -g " 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ml-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@mediapipe/face_detection": "^0.4.1646425229", 13 | "@mediapipe/face_mesh": "^0.4.1633559619", 14 | "@mediapipe/hands": "^0.4.1646424915", 15 | "@tensorflow-models/face-detection": "^1.0.1", 16 | "@tensorflow-models/face-landmarks-detection": "^1.0.2", 17 | "@tensorflow-models/hand-pose-detection": "^2.0.0", 18 | "@tensorflow/tfjs-backend-wasm": "^4.0.0", 19 | "@tensorflow/tfjs-backend-webgl": "^4.0.0", 20 | "@tensorflow/tfjs-converter": "^4.0.0", 21 | "@tensorflow/tfjs-core": "^4.0.0", 22 | "next": "13.0.0", 23 | "react": "18.2.0", 24 | "react-dom": "18.2.0" 25 | }, 26 | "devDependencies": { 27 | "eslint": "8.26.0", 28 | "eslint-config-next": "13.0.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /pages/face-landmark-detection/index.js: -------------------------------------------------------------------------------- 1 | import styles from '../../styles/Home.module.css' 2 | import Link from 'next/link'; 3 | import dynamic from 'next/dynamic'; 4 | 5 | const FaceLandmarksDetection = dynamic(() => import('../../components/FaceLandmarksDetections'), { 6 | ssr: false 7 | }) 8 | 9 | export default function FaceLandmarkDetection() { 10 | return ( 11 |
12 |
13 |

17 | Home / Face Landmark Detection 🤓 18 |

19 | Work in progress... 20 | {/* */} 21 | 22 |
23 |
24 | ) 25 | } -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | import Head from 'next/head' 2 | import Image from 'next/image' 3 | import Link from 'next/link'; 4 | import FpsCounter from '../components/FpsCounter'; 5 | import styles from '../styles/Home.module.css' 6 | 7 | export default function Home() { 8 | return ( 9 |
10 | 11 | ml-app 12 | 13 | 14 | 15 | 16 |
17 |

18 | Welcome to ml-app! 19 |

20 | {/* */} 21 | 22 |
23 | 24 |

Hand Detection →

25 |

Hand pose detection by TensorFlow 👋

26 | 27 | 28 |

Face Detection →

29 |

Face landmark detection by TensorFlow 🤓

30 | 31 |
32 |
33 |
34 | ) 35 | } 36 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: 2 | // https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/javascript-node 3 | { 4 | "name": "Node.js", 5 | "build": { 6 | "dockerfile": "Dockerfile", 7 | // Update 'VARIANT' to pick a Node version: 18, 16, 14. 8 | // Append -bullseye or -buster to pin to an OS version. 9 | // Use -bullseye variants on local arm64/Apple Silicon. 10 | "args": { "VARIANT": "18-bullseye" } 11 | }, 12 | 13 | // Configure tool-specific properties. 14 | "customizations": { 15 | // Configure properties specific to VS Code. 16 | "vscode": { 17 | // Add the IDs of extensions you want installed when the container is created. 18 | "extensions": [ 19 | "dbaeumer.vscode-eslint", 20 | "astro-build.astro-vscode" 21 | ] 22 | } 23 | }, 24 | 25 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 26 | // "forwardPorts": [], 27 | 28 | // Use 'postCreateCommand' to run commands after the container is created. 29 | // "postCreateCommand": "yarn install", 30 | 31 | // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. 32 | "remoteUser": "node", 33 | "features": { 34 | "git": "latest" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /styles/Home.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | padding: 0 2rem; 3 | } 4 | 5 | .main { 6 | min-height: 100vh; 7 | padding: 2rem 0; 8 | flex: 1; 9 | display: flex; 10 | flex-direction: column; 11 | /* justify-content: center; */ 12 | align-items: center; 13 | } 14 | 15 | .footer { 16 | display: flex; 17 | flex: 1; 18 | padding: 2rem 0; 19 | border-top: 1px solid #eaeaea; 20 | justify-content: center; 21 | align-items: center; 22 | } 23 | 24 | .footer a { 25 | display: flex; 26 | justify-content: center; 27 | align-items: center; 28 | flex-grow: 1; 29 | } 30 | 31 | .title a { 32 | color: #0070f3; 33 | text-decoration: none; 34 | } 35 | 36 | .title a:hover, 37 | .title a:focus, 38 | .title a:active { 39 | text-decoration: underline; 40 | } 41 | 42 | .title { 43 | margin: 0; 44 | line-height: 1.15; 45 | font-size: 4rem; 46 | } 47 | 48 | .title, 49 | .description { 50 | text-align: center; 51 | } 52 | 53 | .description { 54 | margin: 4rem 0; 55 | line-height: 1.5; 56 | font-size: 1.5rem; 57 | } 58 | 59 | .code { 60 | background: #fafafa; 61 | border-radius: 5px; 62 | padding: 0.75rem; 63 | font-size: 1.1rem; 64 | font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, 65 | Bitstream Vera Sans Mono, Courier New, monospace; 66 | } 67 | 68 | .grid { 69 | display: flex; 70 | align-items: center; 71 | justify-content: center; 72 | flex-wrap: wrap; 73 | max-width: 800px; 74 | } 75 | 76 | .card { 77 | margin: 1rem; 78 | padding: 1.5rem; 79 | text-align: left; 80 | color: inherit; 81 | text-decoration: none; 82 | border: 1px solid #eaeaea; 83 | border-radius: 10px; 84 | transition: color 0.15s ease, border-color 0.15s ease; 85 | max-width: 300px; 86 | } 87 | 88 | .card:hover, 89 | .card:focus, 90 | .card:active { 91 | color: #0070f3; 92 | border-color: #0070f3; 93 | } 94 | 95 | .card h2 { 96 | margin: 0 0 1rem 0; 97 | font-size: 1.5rem; 98 | } 99 | 100 | .card p { 101 | margin: 0; 102 | font-size: 1.25rem; 103 | line-height: 1.5; 104 | } 105 | 106 | .logo { 107 | height: 1em; 108 | margin-left: 0.5rem; 109 | } 110 | 111 | @media (max-width: 600px) { 112 | .grid { 113 | width: 100%; 114 | flex-direction: column; 115 | } 116 | } 117 | 118 | @media (prefers-color-scheme: dark) { 119 | /* .card, 120 | .footer { 121 | border-color: #222; 122 | } 123 | .code { 124 | background: rgb(0 30 60); 125 | } 126 | .logo img { 127 | filter: invert(1); 128 | } */ 129 | } 130 | -------------------------------------------------------------------------------- /.devcontainer/base.Dockerfile: -------------------------------------------------------------------------------- 1 | # [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster 2 | ARG VARIANT=16-bullseye 3 | FROM node:${VARIANT} 4 | 5 | # [Option] Install zsh 6 | ARG INSTALL_ZSH="true" 7 | # [Option] Upgrade OS packages to their latest versions 8 | ARG UPGRADE_PACKAGES="true" 9 | 10 | # Install needed packages, yarn, nvm and setup non-root user. Use a separate RUN statement to add your own dependencies. 11 | ARG USERNAME=node 12 | ARG USER_UID=1000 13 | ARG USER_GID=$USER_UID 14 | ARG NPM_GLOBAL=/usr/local/share/npm-global 15 | ENV NVM_DIR=/usr/local/share/nvm 16 | ENV NVM_SYMLINK_CURRENT=true \ 17 | PATH=${NPM_GLOBAL}/bin:${NVM_DIR}/current/bin:${PATH} 18 | COPY library-scripts/*.sh library-scripts/*.env /tmp/library-scripts/ 19 | RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 20 | # Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131 21 | && apt-get purge -y imagemagick imagemagick-6-common \ 22 | # Install common packages, non-root user, update yarn and install nvm 23 | && bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" "true" "true" \ 24 | # Install yarn, nvm 25 | && rm -rf /opt/yarn-* /usr/local/bin/yarn /usr/local/bin/yarnpkg \ 26 | && bash /tmp/library-scripts/node-debian.sh "${NVM_DIR}" "none" "${USERNAME}" \ 27 | # Configure global npm install location, use group to adapt to UID/GID changes 28 | && if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi \ 29 | && usermod -a -G npm ${USERNAME} \ 30 | && umask 0002 \ 31 | && mkdir -p ${NPM_GLOBAL} \ 32 | && touch /usr/local/etc/npmrc \ 33 | && chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc \ 34 | && chmod g+s ${NPM_GLOBAL} \ 35 | && npm config -g set prefix ${NPM_GLOBAL} \ 36 | && sudo -u ${USERNAME} npm config -g set prefix ${NPM_GLOBAL} \ 37 | # Install eslint 38 | && su ${USERNAME} -c "umask 0002 && npm install -g eslint" \ 39 | && npm cache clean --force > /dev/null 2>&1 \ 40 | # Install python-is-python3 on bullseye to prevent node-gyp regressions 41 | && . /etc/os-release \ 42 | && if [ "${VERSION_CODENAME}" = "bullseye" ]; then apt-get -y install --no-install-recommends python-is-python3; fi \ 43 | # Clean up 44 | && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /root/.gnupg /tmp/library-scripts 45 | 46 | # [Optional] Uncomment this section to install additional OS packages. 47 | # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 48 | # && apt-get -y install --no-install-recommends 49 | 50 | # [Optional] Uncomment if you want to install an additional version of node using nvm 51 | # ARG EXTRA_NODE_VERSION=10 52 | # RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" 53 | 54 | # [Optional] Uncomment if you want to install more global node modules 55 | # RUN su node -c "npm install -g "" -------------------------------------------------------------------------------- /components/FaceLandmarksDetections.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef, useState } from 'react'; 2 | import { useAnimationFrame } from '../lib/hooks/useAnimationFrame'; 3 | import '@tensorflow/tfjs-backend-webgl'; 4 | import * as tfjsWasm from '@tensorflow/tfjs-backend-wasm'; 5 | import { drawFaces } from '../lib/utils'; 6 | import * as faceLandmarksDetection from '@tensorflow-models/face-landmarks-detection'; 7 | import * as faceMesh from '@mediapipe/face_mesh'; 8 | import '@tensorflow-models/face-detection'; 9 | import { LABEL_TO_COLOR } from '../lib/utils'; 10 | 11 | tfjsWasm.setWasmPaths( 12 | `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm`); 13 | 14 | async function setupDetector() { 15 | const model = faceLandmarksDetection.SupportedModels.MediaPipeFaceMesh; 16 | const detector = await faceLandmarksDetection.createDetector(model, { 17 | runtime: 'mediapipe', 18 | solutionPath: `https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@${faceMesh.VERSION}`, 19 | maxFaces: 2, 20 | refineLandmarks: true 21 | }); 22 | 23 | return detector; 24 | } 25 | 26 | async function setupVideo() { 27 | const video = document.getElementById('video'); 28 | const stream = await window.navigator.mediaDevices.getUserMedia({ video: true }); 29 | 30 | video.srcObject = stream; 31 | await new Promise((resolve) => { 32 | video.onloadedmetadata = () => { 33 | resolve(); 34 | } 35 | }); 36 | video.play(); 37 | 38 | video.width = video.videoWidth; 39 | video.height = video.videoHeight; 40 | 41 | return video; 42 | } 43 | 44 | async function setupCanvas(video) { 45 | const canvas = document.getElementById('canvas'); 46 | const ctx = canvas.getContext('2d'); 47 | 48 | canvas.width = video.width; 49 | canvas.height = video.height; 50 | 51 | return ctx; 52 | } 53 | 54 | export default function FaceLandmarksDetection() { 55 | const detectorRef = useRef(); 56 | const videoRef = useRef(); 57 | const [ctx, setCtx] = useState(); 58 | const contours = faceLandmarksDetection.util.getKeypointIndexByContour(faceLandmarksDetection.SupportedModels.MediaPipeFaceMesh); 59 | 60 | useEffect(() => { 61 | async function initialize() { 62 | videoRef.current = await setupVideo(); 63 | const ctx = await setupCanvas(videoRef.current); 64 | detectorRef.current = await setupDetector(); 65 | 66 | setCtx(ctx); 67 | } 68 | 69 | initialize(); 70 | }, []); 71 | 72 | useAnimationFrame(async delta => { 73 | const faces = await detectorRef.current.estimateFaces(videoRef.current); 74 | 75 | ctx.clearRect(0, 0, videoRef.current.videoWidth, videoRef.current.videoHeight); 76 | ctx.drawImage(videoRef.current, 0, 0); 77 | drawFaces(faces, ctx, contours); 78 | 79 | 80 | 81 | }, !!(detectorRef.current && videoRef.current && ctx)) 82 | 83 | return ( 84 | <> 85 | 94 | 95 | 108 | ) 109 | } -------------------------------------------------------------------------------- /pages/hand-pose-detection/index.js: -------------------------------------------------------------------------------- 1 | import styles from "../../styles/Home.module.css"; 2 | import { useEffect, useRef, useState } from 'react'; 3 | import { createDetector, SupportedModels } from "@tensorflow-models/hand-pose-detection"; 4 | import '@tensorflow/tfjs-backend-webgl'; 5 | import { drawHands } from "../../lib/utils"; 6 | import Link from "next/link"; 7 | import { useAnimationFrame } from "../../lib/hooks/useAnimationFrame"; 8 | import * as tfjsWasm from '@tensorflow/tfjs-backend-wasm'; 9 | 10 | tfjsWasm.setWasmPaths( 11 | `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm`); 12 | 13 | async function setupVideo() { 14 | const video = document.getElementById('video'); 15 | const stream = await window.navigator.mediaDevices.getUserMedia({ video: true }); 16 | 17 | video.srcObject = stream; 18 | await new Promise((resolve) => { 19 | video.onloadedmetadata = () => { 20 | resolve(); 21 | } 22 | }); 23 | video.play(); 24 | 25 | video.width = video.videoWidth; 26 | video.height = video.videoHeight; 27 | 28 | return video; 29 | } 30 | 31 | async function setupDetector() { 32 | const model = SupportedModels.MediaPipeHands; 33 | const detector = await createDetector( 34 | model, 35 | { 36 | runtime: "mediapipe", 37 | maxHands: 2, 38 | solutionPath: 'https://cdn.jsdelivr.net/npm/@mediapipe/hands' 39 | } 40 | ); 41 | 42 | return detector; 43 | } 44 | 45 | async function setupCanvas(video) { 46 | const canvas = document.getElementById('canvas'); 47 | const ctx = canvas.getContext('2d'); 48 | 49 | canvas.width = video.width; 50 | canvas.height = video.height; 51 | 52 | return ctx; 53 | } 54 | 55 | export default function HandPoseDetection() { 56 | const detectorRef = useRef(); 57 | const videoRef = useRef(); 58 | const [ctx, setCtx] = useState(); 59 | 60 | useEffect(() => { 61 | async function initialize() { 62 | videoRef.current = await setupVideo(); 63 | const ctx = await setupCanvas(videoRef.current); 64 | detectorRef.current = await setupDetector(); 65 | 66 | setCtx(ctx); 67 | } 68 | 69 | initialize(); 70 | }, []); 71 | 72 | useAnimationFrame(async delta => { 73 | const hands = await detectorRef.current.estimateHands( 74 | video, 75 | { 76 | flipHorizontal: false 77 | } 78 | ); 79 | 80 | ctx.clearRect(0, 0, videoRef.current.videoWidth, videoRef.current.videoHeight); 81 | ctx.drawImage(videoRef.current, 0, 0, videoRef.current.videoWidth, videoRef.current.videoHeight); 82 | drawHands(hands, ctx); 83 | }, !!(detectorRef.current && videoRef.current && ctx)); 84 | 85 | return ( 86 |
87 |
88 |

92 | Home / Hand Pose Detection 👋 93 |

94 | Work in progress... 95 | 104 | 105 | 118 |
119 |
120 | ) 121 | } -------------------------------------------------------------------------------- /lib/utils.js: -------------------------------------------------------------------------------- 1 | export const LABEL_TO_COLOR = { 2 | lips: '#E0E0E0', 3 | leftEye: '#30FF30', 4 | leftEyebrow: '#30FF30', 5 | leftIris: '#30FF30', 6 | rightEye: '#FF3030', 7 | rightEyebrow: '#FF3030', 8 | rightIris: '#FF3030', 9 | faceOval: '#E0E0E0', 10 | }; 11 | 12 | const FINGER_LOOKUP_INDICES = { 13 | thumb: [0, 1, 2, 3, 4], 14 | indexFinger: [0, 5, 6, 7, 8], 15 | middleFinger: [0, 9, 10, 11, 12], 16 | ringFinger: [0, 13, 14, 15, 16], 17 | pinky: [0, 17, 18, 19, 20], 18 | }; 19 | 20 | const TRIANGULATION = [ 21 | 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 22 | 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9, 23 | 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 24 | 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56, 25 | 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 26 | 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91, 27 | 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 28 | 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117, 29 | 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 30 | 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211, 31 | 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 32 | 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173, 33 | 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 34 | 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28, 35 | 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 36 | 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49, 37 | 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 38 | 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89, 39 | 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 40 | 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122, 41 | 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 42 | 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110, 43 | 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 44 | 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246, 45 | 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 46 | 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162, 47 | 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 48 | 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13, 49 | 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 50 | 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214, 51 | 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 52 | 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61, 53 | 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 54 | 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59, 55 | 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 56 | 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56, 57 | 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 58 | 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213, 59 | 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 60 | 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228, 61 | 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 62 | 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347, 63 | 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 64 | 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313, 65 | 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 66 | 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320, 67 | 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 68 | 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258, 69 | 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 70 | 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256, 71 | 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 72 | 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467, 73 | 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 74 | 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436, 75 | 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 76 | 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424, 77 | 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 78 | 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432, 79 | 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 80 | 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330, 81 | 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 82 | 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419, 83 | 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 84 | 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445, 85 | 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 86 | 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355, 87 | 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 88 | 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368, 89 | 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 90 | 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461, 91 | 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 92 | 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391, 93 | 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 94 | 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314, 95 | 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 96 | 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309, 97 | 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 98 | 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254, 99 | 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 100 | 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259, 101 | 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 102 | 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453, 103 | 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 104 | 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133, 105 | 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 106 | 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60, 107 | 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 108 | 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155, 109 | 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 110 | 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17, 111 | 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 112 | 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83, 113 | 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 114 | 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196, 115 | 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 116 | 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47, 117 | 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 118 | 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95, 119 | 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 120 | 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43, 121 | 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 122 | 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203, 123 | 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 124 | 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96, 125 | 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 126 | 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22, 127 | 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 128 | 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38, 129 | 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 130 | 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111, 131 | 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 132 | 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145, 133 | 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 134 | 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70, 135 | 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 136 | 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32, 137 | 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 138 | 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212, 139 | 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 140 | 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2, 141 | 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 142 | 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221, 143 | 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 144 | 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245, 145 | 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 146 | 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267, 147 | 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 148 | 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337, 149 | 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 150 | 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260, 151 | 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 152 | 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406, 153 | 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 154 | 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8, 155 | 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 156 | 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283, 157 | 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 158 | 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325, 159 | 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 160 | 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329, 161 | 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 162 | 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345, 163 | 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 164 | 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299, 165 | 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 166 | 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279, 167 | 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 168 | 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310, 169 | 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 170 | 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337, 171 | 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 172 | 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285, 173 | 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 174 | 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387, 175 | 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 176 | 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330, 177 | 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 178 | 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315, 179 | 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 180 | 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264, 181 | 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 182 | 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339, 183 | 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 184 | 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257, 185 | 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 186 | 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357, 187 | 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 188 | 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255]; 189 | 190 | const NUM_KEYPOINTS = 100; 191 | 192 | export const drawFaces = (faces, ctx, contours) => { 193 | for (let i = 0; i < faces.length; i++) { 194 | const face = faces[i]; 195 | ctx.strokeStyle = '#32EEDB'; 196 | ctx.fillStyle = '#000'; 197 | 198 | for (let y = 0; y < TRIANGULATION.length / 3; y++) { 199 | const points = [ 200 | TRIANGULATION[y * 3], 201 | TRIANGULATION[y * 3 + 1], 202 | TRIANGULATION[y * 3 + 2] 203 | ].map((index) => face.keypoints[index]); 204 | 205 | drawPath(points, ctx, true); 206 | } 207 | 208 | for (const [label, contour] of Object.entries(contours)) { 209 | ctx.strokeStyle = LABEL_TO_COLOR[label]; 210 | 211 | const path = contour.map((index) => face.keypoints[index]); 212 | if (path.every(value => value != undefined)) { 213 | drawPath(path, ctx, false); 214 | } 215 | } 216 | } 217 | } 218 | 219 | export const drawHands = (hands, ctx, showNames = false) => { 220 | if (hands.length <= 0) { return; } 221 | 222 | hands.sort((hand1, hand2) => { 223 | if (hand1.handedness < hand2.handedness) return 1; 224 | if (hand1.handedness > hand2.handedness) return -1; 225 | return 0; 226 | }); 227 | 228 | // while (hands.length < 2) { hands.push(); } 229 | 230 | for (let i = 0; i < hands.length; i++) { 231 | ctx.fillStyle = hands[i].handedness === 'Left' ? 'black' : 'Blue'; 232 | ctx.strokeStyle = 'White'; 233 | ctx.lineWidth = 2; 234 | 235 | for (let y = 0; y < hands[i].keypoints.length; y++) { 236 | const keypoint = hands[i].keypoints[y]; 237 | ctx.beginPath(); 238 | ctx.arc( 239 | keypoint.x, 240 | keypoint.y, 241 | 4, 242 | 0, 243 | 2 * Math.PI 244 | ); 245 | ctx.fill(); 246 | 247 | if (showNames) { 248 | drawInvertedText(keypoint, ctx); 249 | } 250 | } 251 | 252 | const fingers = Object.keys(FINGER_LOOKUP_INDICES); 253 | for (let z = 0; z < fingers.length; z++) { 254 | const finger = fingers[z]; 255 | const points = FINGER_LOOKUP_INDICES[finger].map(idx => hands[i].keypoints[idx]); 256 | drawPath(points, ctx); 257 | } 258 | } 259 | } 260 | 261 | const drawInvertedText = (keypoint, ctx) => { 262 | ctx.save(); 263 | ctx.translate(keypoint.x - 10, keypoint.y); 264 | ctx.rotate(-Math.PI / 1); 265 | ctx.scale(1, -1); 266 | ctx.fillText(keypoint.name, 0, 0); 267 | ctx.restore(); 268 | } 269 | 270 | const drawPath = (points, ctx, closePath = false) => { 271 | const region = new Path2D(); 272 | region.moveTo(points[0]?.x, points[0]?.y); 273 | for (let i = 1; i < points.length; i++) { 274 | const point = points[i]; 275 | region.lineTo(point?.x, point?.y); 276 | } 277 | 278 | if (closePath) { region.closePath(); } 279 | 280 | ctx.stroke(region); 281 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime-corejs3@^7.10.2": 6 | version "7.20.0" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz#56ef7af3cd23d1570969809a5a8782e774e0141a" 8 | integrity sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA== 9 | dependencies: 10 | core-js-pure "^3.25.1" 11 | regenerator-runtime "^0.13.10" 12 | 13 | "@babel/runtime@^7.10.2", "@babel/runtime@^7.18.9": 14 | version "7.20.0" 15 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a" 16 | integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== 17 | dependencies: 18 | regenerator-runtime "^0.13.10" 19 | 20 | "@eslint/eslintrc@^1.3.3": 21 | version "1.3.3" 22 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" 23 | integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== 24 | dependencies: 25 | ajv "^6.12.4" 26 | debug "^4.3.2" 27 | espree "^9.4.0" 28 | globals "^13.15.0" 29 | ignore "^5.2.0" 30 | import-fresh "^3.2.1" 31 | js-yaml "^4.1.0" 32 | minimatch "^3.1.2" 33 | strip-json-comments "^3.1.1" 34 | 35 | "@humanwhocodes/config-array@^0.11.6": 36 | version "0.11.7" 37 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" 38 | integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== 39 | dependencies: 40 | "@humanwhocodes/object-schema" "^1.2.1" 41 | debug "^4.1.1" 42 | minimatch "^3.0.5" 43 | 44 | "@humanwhocodes/module-importer@^1.0.1": 45 | version "1.0.1" 46 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 47 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 48 | 49 | "@humanwhocodes/object-schema@^1.2.1": 50 | version "1.2.1" 51 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 52 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 53 | 54 | "@mediapipe/face_detection@^0.4.1646425229": 55 | version "0.4.1646425229" 56 | resolved "https://registry.yarnpkg.com/@mediapipe/face_detection/-/face_detection-0.4.1646425229.tgz#76cd4b4938d5a641dfdad2951ff9f37dcf18e636" 57 | integrity sha512-aeCN+fRAojv9ch3NXorP6r5tcGVLR3/gC1HmtqB0WEZBRXrdP6/3W/sGR0dHr1iT6ueiK95G9PVjbzFosf/hrg== 58 | 59 | "@mediapipe/face_mesh@^0.4.1633559619": 60 | version "0.4.1633559619" 61 | resolved "https://registry.yarnpkg.com/@mediapipe/face_mesh/-/face_mesh-0.4.1633559619.tgz#f917e4448e25bc375a905d1d910f1bca450c5e23" 62 | integrity sha512-Vc8cdjxS5+O2gnjWH9KncYpUCVXT0h714KlWAsyqJvJbIgUJBqpppbIx8yWcAzBDxm/5cYSuBI5p5ySIPxzcEg== 63 | 64 | "@mediapipe/hands@^0.4.1646424915": 65 | version "0.4.1646424915" 66 | resolved "https://registry.yarnpkg.com/@mediapipe/hands/-/hands-0.4.1646424915.tgz#faaa1798dea931044b09dabd1fa845cadb009554" 67 | integrity sha512-R1VM3DRCKTA49nVvkprInYUXx8cKisi86y6/9clvYA0vApmLqTjIHQFibJDHwSdy4Rykn2CjWywQAWw5+mGw8w== 68 | 69 | "@next/env@13.0.0": 70 | version "13.0.0" 71 | resolved "https://registry.yarnpkg.com/@next/env/-/env-13.0.0.tgz#38527956680693c90b4522ab4ab9a2fbe3a17f67" 72 | integrity sha512-65v9BVuah2Mplohm4+efsKEnoEuhmlGm8B2w6vD1geeEP2wXtlSJCvR/cCRJ3fD8wzCQBV41VcMBQeYET6MRkg== 73 | 74 | "@next/eslint-plugin-next@13.0.0": 75 | version "13.0.0" 76 | resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.0.tgz#cf3d799b21671554c1f5889c01d2513afb9973cd" 77 | integrity sha512-z+gnX4Zizatqatc6f4CQrcC9oN8Us3Vrq/OLyc98h7K/eWctrnV91zFZodmJHUjx0cITY8uYM7LXD7IdYkg3kg== 78 | dependencies: 79 | glob "7.1.7" 80 | 81 | "@next/swc-android-arm-eabi@13.0.0": 82 | version "13.0.0" 83 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.0.tgz#15cd89d19d3c00d123fdfe367bab38c362f6c515" 84 | integrity sha512-+DUQkYF93gxFjWY+CYWE1QDX6gTgnUiWf+W4UqZjM1Jcef8U97fS6xYh+i+8rH4MM0AXHm7OSakvfOMzmjU6VA== 85 | 86 | "@next/swc-android-arm64@13.0.0": 87 | version "13.0.0" 88 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.0.0.tgz#9410365bb07097268d4773a46b02cfe6b3fe3ab7" 89 | integrity sha512-RW9Uy3bMSc0zVGCa11klFuwfP/jdcdkhdruqnrJ7v+7XHm6OFKkSRzX6ee7yGR1rdDZvTnP4GZSRSpzjLv/N0g== 90 | 91 | "@next/swc-darwin-arm64@13.0.0": 92 | version "13.0.0" 93 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.0.tgz#caf262fb5cb8bb335f6f344fd67a44dc8bf6a084" 94 | integrity sha512-APA26nps1j4qyhOIzkclW/OmgotVHj1jBxebSpMCPw2rXfiNvKNY9FA0TcuwPmUCNqaTnm703h6oW4dvp73A4Q== 95 | 96 | "@next/swc-darwin-x64@13.0.0": 97 | version "13.0.0" 98 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.0.tgz#6b214753410e1d8512a1491045acea1e188df7d6" 99 | integrity sha512-qsUhUdoFuRJiaJ7LnvTQ6GZv1QnMDcRXCIjxaN0FNVXwrjkq++U7KjBUaxXkRzLV4C7u0NHLNOp0iZwNNE7ypw== 100 | 101 | "@next/swc-freebsd-x64@13.0.0": 102 | version "13.0.0" 103 | resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.0.tgz#eeb176bdb585f48882bdac1d04271b918ca87590" 104 | integrity sha512-sCdyCbboS7CwdnevKH9J6hkJI76LUw1jVWt4eV7kISuLiPba3JmehZSWm80oa4ADChRVAwzhLAo2zJaYRrInbg== 105 | 106 | "@next/swc-linux-arm-gnueabihf@13.0.0": 107 | version "13.0.0" 108 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.0.tgz#2c2a9622c93f87a8baca94e068f674da4cae6018" 109 | integrity sha512-/X/VxfFA41C9jrEv+sUsPLQ5vbDPVIgG0CJrzKvrcc+b+4zIgPgtfsaWq9ockjHFQi3ycvlZK4TALOXO8ovQ6Q== 110 | 111 | "@next/swc-linux-arm64-gnu@13.0.0": 112 | version "13.0.0" 113 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.0.tgz#69505827e2928fb18034150fd4d754d54c4a1c4b" 114 | integrity sha512-x6Oxr1GIi0ZtNiT6jbw+JVcbEi3UQgF7mMmkrgfL4mfchOwXtWSHKTSSPnwoJWJfXYa0Vy1n8NElWNTGAqoWFw== 115 | 116 | "@next/swc-linux-arm64-musl@13.0.0": 117 | version "13.0.0" 118 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.0.tgz#487a88f2583a046e882328fe0665b37eca4fd0f6" 119 | integrity sha512-SnMH9ngI+ipGh3kqQ8+mDtWunirwmhQnQeZkEq9e/9Xsgjf04OetqrqRHKM1HmJtG2qMUJbyXFJ0F81TPuT+3g== 120 | 121 | "@next/swc-linux-x64-gnu@13.0.0": 122 | version "13.0.0" 123 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.0.tgz#29e89c7e4fd2e2b16ad059076f6261998aee53df" 124 | integrity sha512-VSQwTX9EmdbotArtA1J67X8964oQfe0xHb32x4tu+JqTR+wOHyG6wGzPMdXH2oKAp6rdd7BzqxUXXf0J+ypHlw== 125 | 126 | "@next/swc-linux-x64-musl@13.0.0": 127 | version "13.0.0" 128 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.0.tgz#2f63aae922d2b2829aec21bf8f9adda8b6c16365" 129 | integrity sha512-xBCP0nnpO0q4tsytXkvIwWFINtbFRyVY5gxa1zB0vlFtqYR9lNhrOwH3CBrks3kkeaePOXd611+8sjdUtrLnXA== 130 | 131 | "@next/swc-win32-arm64-msvc@13.0.0": 132 | version "13.0.0" 133 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.0.tgz#4117bad96c2a6775f70294fba45c63951a8a21ac" 134 | integrity sha512-NutwDafqhGxqPj/eiUixJq9ImS/0sgx6gqlD7jRndCvQ2Q8AvDdu1+xKcGWGNnhcDsNM/n1avf1e62OG1GaqJg== 135 | 136 | "@next/swc-win32-ia32-msvc@13.0.0": 137 | version "13.0.0" 138 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.0.tgz#5914eb86f9ea92a00d76cb094dd9734b3bf2012c" 139 | integrity sha512-zNaxaO+Kl/xNz02E9QlcVz0pT4MjkXGDLb25qxtAzyJL15aU0+VjjbIZAYWctG59dvggNIUNDWgoBeVTKB9xLg== 140 | 141 | "@next/swc-win32-x64-msvc@13.0.0": 142 | version "13.0.0" 143 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.0.tgz#c54a5a739dee04b20338d305226a2acdf701f67f" 144 | integrity sha512-FFOGGWwTCRMu9W7MF496Urefxtuo2lttxF1vwS+1rIRsKvuLrWhVaVTj3T8sf2EBL6gtJbmh4TYlizS+obnGKA== 145 | 146 | "@nodelib/fs.scandir@2.1.5": 147 | version "2.1.5" 148 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 149 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 150 | dependencies: 151 | "@nodelib/fs.stat" "2.0.5" 152 | run-parallel "^1.1.9" 153 | 154 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 155 | version "2.0.5" 156 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 157 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 158 | 159 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 160 | version "1.2.8" 161 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 162 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 163 | dependencies: 164 | "@nodelib/fs.scandir" "2.1.5" 165 | fastq "^1.6.0" 166 | 167 | "@rushstack/eslint-patch@^1.1.3": 168 | version "1.2.0" 169 | resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" 170 | integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== 171 | 172 | "@swc/helpers@0.4.11": 173 | version "0.4.11" 174 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" 175 | integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== 176 | dependencies: 177 | tslib "^2.4.0" 178 | 179 | "@tensorflow-models/face-detection@^1.0.1": 180 | version "1.0.1" 181 | resolved "https://registry.yarnpkg.com/@tensorflow-models/face-detection/-/face-detection-1.0.1.tgz#f0b68f5c8ebf38d588ae2c9c6eb7517e7faad2b5" 182 | integrity sha512-oIEEqHy4qbkGn5xT1ldzwxK5s948+t7ts0+WoIfTPKwScpNa8YY4GJf+fpyhtOxUGGAZymXx25jrvF9YlAt9dg== 183 | dependencies: 184 | rimraf "^3.0.2" 185 | 186 | "@tensorflow-models/face-landmarks-detection@^1.0.2": 187 | version "1.0.2" 188 | resolved "https://registry.yarnpkg.com/@tensorflow-models/face-landmarks-detection/-/face-landmarks-detection-1.0.2.tgz#b34b993afb0aa862e8c15d2f9d776ad2640481ab" 189 | integrity sha512-e10xKlBssv2nYg8hV93rNg7ne8NIJVT9Y1d/bpUCcBpPLJpykLw2DQ3nfPnoBpqhKDykFtKDGQVmeXvqc7H+KA== 190 | dependencies: 191 | rimraf "^3.0.2" 192 | 193 | "@tensorflow-models/hand-pose-detection@^2.0.0": 194 | version "2.0.0" 195 | resolved "https://registry.yarnpkg.com/@tensorflow-models/hand-pose-detection/-/hand-pose-detection-2.0.0.tgz#967b26d17d26454d0625c2af2264fd7aad8fdc35" 196 | integrity sha512-wAiu/SpigjKuhlEdIvPp84FyzIH0v8kHn/jB/VslUn/pV75Kpsv8Jk0S55oC/Jj54B/fLDZU19+zYN7lQMBCxg== 197 | dependencies: 198 | rimraf "^3.0.2" 199 | 200 | "@tensorflow/tfjs-backend-cpu@4.0.0": 201 | version "4.0.0" 202 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.0.0.tgz#ed957eedca558d5b0ce9caa129f180b88039501b" 203 | integrity sha512-Y9ok6VBMir1MVbkcK+h34hF4ZzHZKOrdjAOeE5eFbSuegJHY/AXWcZEU589VTnEE4AU+SUdjjfp6yvAtU17GAA== 204 | dependencies: 205 | "@types/seedrandom" "^2.4.28" 206 | seedrandom "^3.0.5" 207 | 208 | "@tensorflow/tfjs-backend-wasm@^4.0.0": 209 | version "4.0.0" 210 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-wasm/-/tfjs-backend-wasm-4.0.0.tgz#195c976335487767fe95763d5790d3af7d28d15c" 211 | integrity sha512-Z5gqdmqywauB2ZrWFduvFc82aMMTBFN7EtWEhGAGRXVcVH2L4nIXx0bs/5aUBA0Qs9B7hiy83b+NquWrDdBeGQ== 212 | dependencies: 213 | "@tensorflow/tfjs-backend-cpu" "4.0.0" 214 | "@types/emscripten" "~0.0.34" 215 | 216 | "@tensorflow/tfjs-backend-webgl@^4.0.0": 217 | version "4.0.0" 218 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.0.0.tgz#df21ff8786e17035744d6425286a506c57068004" 219 | integrity sha512-JfTtmdwlnJbV4CRxXLJr5MM0Yzj6WfMXAwM/bjTuDKQsyYdNzq75E72A4B0c+XwSIZb7MnVyUmRkZYeGTCqwtg== 220 | dependencies: 221 | "@tensorflow/tfjs-backend-cpu" "4.0.0" 222 | "@types/offscreencanvas" "~2019.3.0" 223 | "@types/seedrandom" "^2.4.28" 224 | "@types/webgl-ext" "0.0.30" 225 | "@types/webgl2" "0.0.6" 226 | seedrandom "^3.0.5" 227 | 228 | "@tensorflow/tfjs-converter@^4.0.0": 229 | version "4.0.0" 230 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-4.0.0.tgz#c3182f8e7b1a246e294951ce6df2e36ebb324a2d" 231 | integrity sha512-VU53ZB9blQyF1geB0xbloedYI6d52yQ0U56uPSS9AcjexrAShnN7VIjfNtCFYeLDmVe3M/frkAuIZmWAv66iMw== 232 | 233 | "@tensorflow/tfjs-core@^4.0.0": 234 | version "4.0.0" 235 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-4.0.0.tgz#80a8a45afb74c81ecb906100008125a3702b9140" 236 | integrity sha512-RrTgHPT8Xo6vsBvaRkee1YOoH3lv0lEtS3ISGRcHsUy8mkT8ZIMNou4zaJuIBQ7bVPXOeOFFeTbjDvWVtYypxQ== 237 | dependencies: 238 | "@types/long" "^4.0.1" 239 | "@types/offscreencanvas" "~2019.7.0" 240 | "@types/seedrandom" "^2.4.28" 241 | "@types/webgl-ext" "0.0.30" 242 | "@webgpu/types" "0.1.21" 243 | long "4.0.0" 244 | node-fetch "~2.6.1" 245 | seedrandom "^3.0.5" 246 | 247 | "@types/emscripten@~0.0.34": 248 | version "0.0.34" 249 | resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-0.0.34.tgz#12b4a344274fb102ff2f6c877b37587bc3e46008" 250 | integrity sha512-QSb9ojDincskc+uKMI0KXp8e1NALFINCrMlp8VGKGcTSxeEyRTTKyjWw75NYrCZHUsVEEEpr1tYHpbtaC++/sQ== 251 | 252 | "@types/json5@^0.0.29": 253 | version "0.0.29" 254 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 255 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== 256 | 257 | "@types/long@^4.0.1": 258 | version "4.0.2" 259 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" 260 | integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== 261 | 262 | "@types/offscreencanvas@~2019.3.0": 263 | version "2019.3.0" 264 | resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz#3336428ec7e9180cf4566dfea5da04eb586a6553" 265 | integrity sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q== 266 | 267 | "@types/offscreencanvas@~2019.7.0": 268 | version "2019.7.0" 269 | resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz#e4a932069db47bb3eabeb0b305502d01586fa90d" 270 | integrity sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg== 271 | 272 | "@types/seedrandom@^2.4.28": 273 | version "2.4.30" 274 | resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.30.tgz#d2efe425869b84163c2d56e779dddadb9372cbfa" 275 | integrity sha512-AnxLHewubLVzoF/A4qdxBGHCKifw8cY32iro3DQX9TPcetE95zBeVt3jnsvtvAUf1vwzMfwzp4t/L2yqPlnjkQ== 276 | 277 | "@types/webgl-ext@0.0.30": 278 | version "0.0.30" 279 | resolved "https://registry.yarnpkg.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz#0ce498c16a41a23d15289e0b844d945b25f0fb9d" 280 | integrity sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg== 281 | 282 | "@types/webgl2@0.0.6": 283 | version "0.0.6" 284 | resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.6.tgz#1ea2db791362bd8521548d664dbd3c5311cdf4b6" 285 | integrity sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ== 286 | 287 | "@typescript-eslint/parser@^5.21.0": 288 | version "5.41.0" 289 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.41.0.tgz#0414a6405007e463dc527b459af1f19430382d67" 290 | integrity sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA== 291 | dependencies: 292 | "@typescript-eslint/scope-manager" "5.41.0" 293 | "@typescript-eslint/types" "5.41.0" 294 | "@typescript-eslint/typescript-estree" "5.41.0" 295 | debug "^4.3.4" 296 | 297 | "@typescript-eslint/scope-manager@5.41.0": 298 | version "5.41.0" 299 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz#28e3a41d626288d0628be14cf9de8d49fc30fadf" 300 | integrity sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ== 301 | dependencies: 302 | "@typescript-eslint/types" "5.41.0" 303 | "@typescript-eslint/visitor-keys" "5.41.0" 304 | 305 | "@typescript-eslint/types@5.41.0": 306 | version "5.41.0" 307 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.41.0.tgz#6800abebc4e6abaf24cdf220fb4ce28f4ab09a85" 308 | integrity sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA== 309 | 310 | "@typescript-eslint/typescript-estree@5.41.0": 311 | version "5.41.0" 312 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz#bf5c6b3138adbdc73ba4871d060ae12c59366c61" 313 | integrity sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg== 314 | dependencies: 315 | "@typescript-eslint/types" "5.41.0" 316 | "@typescript-eslint/visitor-keys" "5.41.0" 317 | debug "^4.3.4" 318 | globby "^11.1.0" 319 | is-glob "^4.0.3" 320 | semver "^7.3.7" 321 | tsutils "^3.21.0" 322 | 323 | "@typescript-eslint/visitor-keys@5.41.0": 324 | version "5.41.0" 325 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz#d3510712bc07d5540160ed3c0f8f213b73e3bcd9" 326 | integrity sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw== 327 | dependencies: 328 | "@typescript-eslint/types" "5.41.0" 329 | eslint-visitor-keys "^3.3.0" 330 | 331 | "@webgpu/types@0.1.21": 332 | version "0.1.21" 333 | resolved "https://registry.yarnpkg.com/@webgpu/types/-/types-0.1.21.tgz#b181202daec30d66ccd67264de23814cfd176d3a" 334 | integrity sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow== 335 | 336 | acorn-jsx@^5.3.2: 337 | version "5.3.2" 338 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 339 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 340 | 341 | acorn@^8.8.0: 342 | version "8.8.1" 343 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" 344 | integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== 345 | 346 | ajv@^6.10.0, ajv@^6.12.4: 347 | version "6.12.6" 348 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 349 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 350 | dependencies: 351 | fast-deep-equal "^3.1.1" 352 | fast-json-stable-stringify "^2.0.0" 353 | json-schema-traverse "^0.4.1" 354 | uri-js "^4.2.2" 355 | 356 | ansi-regex@^5.0.1: 357 | version "5.0.1" 358 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 359 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 360 | 361 | ansi-styles@^4.1.0: 362 | version "4.3.0" 363 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 364 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 365 | dependencies: 366 | color-convert "^2.0.1" 367 | 368 | argparse@^2.0.1: 369 | version "2.0.1" 370 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 371 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 372 | 373 | aria-query@^4.2.2: 374 | version "4.2.2" 375 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" 376 | integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== 377 | dependencies: 378 | "@babel/runtime" "^7.10.2" 379 | "@babel/runtime-corejs3" "^7.10.2" 380 | 381 | array-includes@^3.1.4, array-includes@^3.1.5: 382 | version "3.1.5" 383 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" 384 | integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== 385 | dependencies: 386 | call-bind "^1.0.2" 387 | define-properties "^1.1.4" 388 | es-abstract "^1.19.5" 389 | get-intrinsic "^1.1.1" 390 | is-string "^1.0.7" 391 | 392 | array-union@^2.1.0: 393 | version "2.1.0" 394 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 395 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 396 | 397 | array.prototype.flat@^1.2.5: 398 | version "1.3.0" 399 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" 400 | integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== 401 | dependencies: 402 | call-bind "^1.0.2" 403 | define-properties "^1.1.3" 404 | es-abstract "^1.19.2" 405 | es-shim-unscopables "^1.0.0" 406 | 407 | array.prototype.flatmap@^1.3.0: 408 | version "1.3.0" 409 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" 410 | integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== 411 | dependencies: 412 | call-bind "^1.0.2" 413 | define-properties "^1.1.3" 414 | es-abstract "^1.19.2" 415 | es-shim-unscopables "^1.0.0" 416 | 417 | ast-types-flow@^0.0.7: 418 | version "0.0.7" 419 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" 420 | integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== 421 | 422 | axe-core@^4.4.3: 423 | version "4.5.0" 424 | resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.0.tgz#6efe2ecdba205fcc9d7ddb3d48c2cf630f70eb5e" 425 | integrity sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A== 426 | 427 | axobject-query@^2.2.0: 428 | version "2.2.0" 429 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" 430 | integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== 431 | 432 | balanced-match@^1.0.0: 433 | version "1.0.2" 434 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 435 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 436 | 437 | brace-expansion@^1.1.7: 438 | version "1.1.11" 439 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 440 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 441 | dependencies: 442 | balanced-match "^1.0.0" 443 | concat-map "0.0.1" 444 | 445 | braces@^3.0.2: 446 | version "3.0.2" 447 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 448 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 449 | dependencies: 450 | fill-range "^7.0.1" 451 | 452 | call-bind@^1.0.0, call-bind@^1.0.2: 453 | version "1.0.2" 454 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 455 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 456 | dependencies: 457 | function-bind "^1.1.1" 458 | get-intrinsic "^1.0.2" 459 | 460 | callsites@^3.0.0: 461 | version "3.1.0" 462 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 463 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 464 | 465 | caniuse-lite@^1.0.30001406: 466 | version "1.0.30001427" 467 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz#d3a749f74be7ae0671fbec3a4eea18576e8ad646" 468 | integrity sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ== 469 | 470 | chalk@^4.0.0: 471 | version "4.1.2" 472 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 473 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 474 | dependencies: 475 | ansi-styles "^4.1.0" 476 | supports-color "^7.1.0" 477 | 478 | client-only@0.0.1: 479 | version "0.0.1" 480 | resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" 481 | integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== 482 | 483 | color-convert@^2.0.1: 484 | version "2.0.1" 485 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 486 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 487 | dependencies: 488 | color-name "~1.1.4" 489 | 490 | color-name@~1.1.4: 491 | version "1.1.4" 492 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 493 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 494 | 495 | concat-map@0.0.1: 496 | version "0.0.1" 497 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 498 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 499 | 500 | core-js-pure@^3.25.1: 501 | version "3.26.0" 502 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.0.tgz#7ad8a5dd7d910756f3124374b50026e23265ca9a" 503 | integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA== 504 | 505 | cross-spawn@^7.0.2: 506 | version "7.0.3" 507 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 508 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 509 | dependencies: 510 | path-key "^3.1.0" 511 | shebang-command "^2.0.0" 512 | which "^2.0.1" 513 | 514 | damerau-levenshtein@^1.0.8: 515 | version "1.0.8" 516 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" 517 | integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== 518 | 519 | debug@^2.6.9: 520 | version "2.6.9" 521 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 522 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 523 | dependencies: 524 | ms "2.0.0" 525 | 526 | debug@^3.2.7: 527 | version "3.2.7" 528 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 529 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 530 | dependencies: 531 | ms "^2.1.1" 532 | 533 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 534 | version "4.3.4" 535 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 536 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 537 | dependencies: 538 | ms "2.1.2" 539 | 540 | deep-is@^0.1.3: 541 | version "0.1.4" 542 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 543 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 544 | 545 | define-properties@^1.1.3, define-properties@^1.1.4: 546 | version "1.1.4" 547 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" 548 | integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== 549 | dependencies: 550 | has-property-descriptors "^1.0.0" 551 | object-keys "^1.1.1" 552 | 553 | dir-glob@^3.0.1: 554 | version "3.0.1" 555 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 556 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 557 | dependencies: 558 | path-type "^4.0.0" 559 | 560 | doctrine@^2.1.0: 561 | version "2.1.0" 562 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 563 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 564 | dependencies: 565 | esutils "^2.0.2" 566 | 567 | doctrine@^3.0.0: 568 | version "3.0.0" 569 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 570 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 571 | dependencies: 572 | esutils "^2.0.2" 573 | 574 | emoji-regex@^9.2.2: 575 | version "9.2.2" 576 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 577 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 578 | 579 | es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: 580 | version "1.20.4" 581 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" 582 | integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== 583 | dependencies: 584 | call-bind "^1.0.2" 585 | es-to-primitive "^1.2.1" 586 | function-bind "^1.1.1" 587 | function.prototype.name "^1.1.5" 588 | get-intrinsic "^1.1.3" 589 | get-symbol-description "^1.0.0" 590 | has "^1.0.3" 591 | has-property-descriptors "^1.0.0" 592 | has-symbols "^1.0.3" 593 | internal-slot "^1.0.3" 594 | is-callable "^1.2.7" 595 | is-negative-zero "^2.0.2" 596 | is-regex "^1.1.4" 597 | is-shared-array-buffer "^1.0.2" 598 | is-string "^1.0.7" 599 | is-weakref "^1.0.2" 600 | object-inspect "^1.12.2" 601 | object-keys "^1.1.1" 602 | object.assign "^4.1.4" 603 | regexp.prototype.flags "^1.4.3" 604 | safe-regex-test "^1.0.0" 605 | string.prototype.trimend "^1.0.5" 606 | string.prototype.trimstart "^1.0.5" 607 | unbox-primitive "^1.0.2" 608 | 609 | es-shim-unscopables@^1.0.0: 610 | version "1.0.0" 611 | resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" 612 | integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== 613 | dependencies: 614 | has "^1.0.3" 615 | 616 | es-to-primitive@^1.2.1: 617 | version "1.2.1" 618 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 619 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 620 | dependencies: 621 | is-callable "^1.1.4" 622 | is-date-object "^1.0.1" 623 | is-symbol "^1.0.2" 624 | 625 | escape-string-regexp@^4.0.0: 626 | version "4.0.0" 627 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 628 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 629 | 630 | eslint-config-next@13.0.0: 631 | version "13.0.0" 632 | resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.0.0.tgz#d533ee1dbd6576fd3759ba4db4d5a6c4e039c242" 633 | integrity sha512-y2nqWS2tycWySdVhb+rhp6CuDmDazGySqkzzQZf3UTyfHyC7og1m5m/AtMFwCo5mtvDqvw1BENin52kV9733lg== 634 | dependencies: 635 | "@next/eslint-plugin-next" "13.0.0" 636 | "@rushstack/eslint-patch" "^1.1.3" 637 | "@typescript-eslint/parser" "^5.21.0" 638 | eslint-import-resolver-node "^0.3.6" 639 | eslint-import-resolver-typescript "^2.7.1" 640 | eslint-plugin-import "^2.26.0" 641 | eslint-plugin-jsx-a11y "^6.5.1" 642 | eslint-plugin-react "^7.31.7" 643 | eslint-plugin-react-hooks "^4.5.0" 644 | 645 | eslint-import-resolver-node@^0.3.6: 646 | version "0.3.6" 647 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" 648 | integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== 649 | dependencies: 650 | debug "^3.2.7" 651 | resolve "^1.20.0" 652 | 653 | eslint-import-resolver-typescript@^2.7.1: 654 | version "2.7.1" 655 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" 656 | integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== 657 | dependencies: 658 | debug "^4.3.4" 659 | glob "^7.2.0" 660 | is-glob "^4.0.3" 661 | resolve "^1.22.0" 662 | tsconfig-paths "^3.14.1" 663 | 664 | eslint-module-utils@^2.7.3: 665 | version "2.7.4" 666 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" 667 | integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== 668 | dependencies: 669 | debug "^3.2.7" 670 | 671 | eslint-plugin-import@^2.26.0: 672 | version "2.26.0" 673 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" 674 | integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== 675 | dependencies: 676 | array-includes "^3.1.4" 677 | array.prototype.flat "^1.2.5" 678 | debug "^2.6.9" 679 | doctrine "^2.1.0" 680 | eslint-import-resolver-node "^0.3.6" 681 | eslint-module-utils "^2.7.3" 682 | has "^1.0.3" 683 | is-core-module "^2.8.1" 684 | is-glob "^4.0.3" 685 | minimatch "^3.1.2" 686 | object.values "^1.1.5" 687 | resolve "^1.22.0" 688 | tsconfig-paths "^3.14.1" 689 | 690 | eslint-plugin-jsx-a11y@^6.5.1: 691 | version "6.6.1" 692 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" 693 | integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== 694 | dependencies: 695 | "@babel/runtime" "^7.18.9" 696 | aria-query "^4.2.2" 697 | array-includes "^3.1.5" 698 | ast-types-flow "^0.0.7" 699 | axe-core "^4.4.3" 700 | axobject-query "^2.2.0" 701 | damerau-levenshtein "^1.0.8" 702 | emoji-regex "^9.2.2" 703 | has "^1.0.3" 704 | jsx-ast-utils "^3.3.2" 705 | language-tags "^1.0.5" 706 | minimatch "^3.1.2" 707 | semver "^6.3.0" 708 | 709 | eslint-plugin-react-hooks@^4.5.0: 710 | version "4.6.0" 711 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" 712 | integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== 713 | 714 | eslint-plugin-react@^7.31.7: 715 | version "7.31.10" 716 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" 717 | integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== 718 | dependencies: 719 | array-includes "^3.1.5" 720 | array.prototype.flatmap "^1.3.0" 721 | doctrine "^2.1.0" 722 | estraverse "^5.3.0" 723 | jsx-ast-utils "^2.4.1 || ^3.0.0" 724 | minimatch "^3.1.2" 725 | object.entries "^1.1.5" 726 | object.fromentries "^2.0.5" 727 | object.hasown "^1.1.1" 728 | object.values "^1.1.5" 729 | prop-types "^15.8.1" 730 | resolve "^2.0.0-next.3" 731 | semver "^6.3.0" 732 | string.prototype.matchall "^4.0.7" 733 | 734 | eslint-scope@^7.1.1: 735 | version "7.1.1" 736 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 737 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 738 | dependencies: 739 | esrecurse "^4.3.0" 740 | estraverse "^5.2.0" 741 | 742 | eslint-utils@^3.0.0: 743 | version "3.0.0" 744 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 745 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 746 | dependencies: 747 | eslint-visitor-keys "^2.0.0" 748 | 749 | eslint-visitor-keys@^2.0.0: 750 | version "2.1.0" 751 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 752 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 753 | 754 | eslint-visitor-keys@^3.3.0: 755 | version "3.3.0" 756 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 757 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 758 | 759 | eslint@8.26.0: 760 | version "8.26.0" 761 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.26.0.tgz#2bcc8836e6c424c4ac26a5674a70d44d84f2181d" 762 | integrity sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg== 763 | dependencies: 764 | "@eslint/eslintrc" "^1.3.3" 765 | "@humanwhocodes/config-array" "^0.11.6" 766 | "@humanwhocodes/module-importer" "^1.0.1" 767 | "@nodelib/fs.walk" "^1.2.8" 768 | ajv "^6.10.0" 769 | chalk "^4.0.0" 770 | cross-spawn "^7.0.2" 771 | debug "^4.3.2" 772 | doctrine "^3.0.0" 773 | escape-string-regexp "^4.0.0" 774 | eslint-scope "^7.1.1" 775 | eslint-utils "^3.0.0" 776 | eslint-visitor-keys "^3.3.0" 777 | espree "^9.4.0" 778 | esquery "^1.4.0" 779 | esutils "^2.0.2" 780 | fast-deep-equal "^3.1.3" 781 | file-entry-cache "^6.0.1" 782 | find-up "^5.0.0" 783 | glob-parent "^6.0.2" 784 | globals "^13.15.0" 785 | grapheme-splitter "^1.0.4" 786 | ignore "^5.2.0" 787 | import-fresh "^3.0.0" 788 | imurmurhash "^0.1.4" 789 | is-glob "^4.0.0" 790 | is-path-inside "^3.0.3" 791 | js-sdsl "^4.1.4" 792 | js-yaml "^4.1.0" 793 | json-stable-stringify-without-jsonify "^1.0.1" 794 | levn "^0.4.1" 795 | lodash.merge "^4.6.2" 796 | minimatch "^3.1.2" 797 | natural-compare "^1.4.0" 798 | optionator "^0.9.1" 799 | regexpp "^3.2.0" 800 | strip-ansi "^6.0.1" 801 | strip-json-comments "^3.1.0" 802 | text-table "^0.2.0" 803 | 804 | espree@^9.4.0: 805 | version "9.4.0" 806 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" 807 | integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== 808 | dependencies: 809 | acorn "^8.8.0" 810 | acorn-jsx "^5.3.2" 811 | eslint-visitor-keys "^3.3.0" 812 | 813 | esquery@^1.4.0: 814 | version "1.4.0" 815 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 816 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 817 | dependencies: 818 | estraverse "^5.1.0" 819 | 820 | esrecurse@^4.3.0: 821 | version "4.3.0" 822 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 823 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 824 | dependencies: 825 | estraverse "^5.2.0" 826 | 827 | estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: 828 | version "5.3.0" 829 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 830 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 831 | 832 | esutils@^2.0.2: 833 | version "2.0.3" 834 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 835 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 836 | 837 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 838 | version "3.1.3" 839 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 840 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 841 | 842 | fast-glob@^3.2.9: 843 | version "3.2.12" 844 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" 845 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 846 | dependencies: 847 | "@nodelib/fs.stat" "^2.0.2" 848 | "@nodelib/fs.walk" "^1.2.3" 849 | glob-parent "^5.1.2" 850 | merge2 "^1.3.0" 851 | micromatch "^4.0.4" 852 | 853 | fast-json-stable-stringify@^2.0.0: 854 | version "2.1.0" 855 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 856 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 857 | 858 | fast-levenshtein@^2.0.6: 859 | version "2.0.6" 860 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 861 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 862 | 863 | fastq@^1.6.0: 864 | version "1.13.0" 865 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 866 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 867 | dependencies: 868 | reusify "^1.0.4" 869 | 870 | file-entry-cache@^6.0.1: 871 | version "6.0.1" 872 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 873 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 874 | dependencies: 875 | flat-cache "^3.0.4" 876 | 877 | fill-range@^7.0.1: 878 | version "7.0.1" 879 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 880 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 881 | dependencies: 882 | to-regex-range "^5.0.1" 883 | 884 | find-up@^5.0.0: 885 | version "5.0.0" 886 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 887 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 888 | dependencies: 889 | locate-path "^6.0.0" 890 | path-exists "^4.0.0" 891 | 892 | flat-cache@^3.0.4: 893 | version "3.0.4" 894 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 895 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 896 | dependencies: 897 | flatted "^3.1.0" 898 | rimraf "^3.0.2" 899 | 900 | flatted@^3.1.0: 901 | version "3.2.7" 902 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 903 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 904 | 905 | fs.realpath@^1.0.0: 906 | version "1.0.0" 907 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 908 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 909 | 910 | function-bind@^1.1.1: 911 | version "1.1.1" 912 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 913 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 914 | 915 | function.prototype.name@^1.1.5: 916 | version "1.1.5" 917 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" 918 | integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== 919 | dependencies: 920 | call-bind "^1.0.2" 921 | define-properties "^1.1.3" 922 | es-abstract "^1.19.0" 923 | functions-have-names "^1.2.2" 924 | 925 | functions-have-names@^1.2.2: 926 | version "1.2.3" 927 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" 928 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== 929 | 930 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: 931 | version "1.1.3" 932 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" 933 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== 934 | dependencies: 935 | function-bind "^1.1.1" 936 | has "^1.0.3" 937 | has-symbols "^1.0.3" 938 | 939 | get-symbol-description@^1.0.0: 940 | version "1.0.0" 941 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 942 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 943 | dependencies: 944 | call-bind "^1.0.2" 945 | get-intrinsic "^1.1.1" 946 | 947 | glob-parent@^5.1.2: 948 | version "5.1.2" 949 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 950 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 951 | dependencies: 952 | is-glob "^4.0.1" 953 | 954 | glob-parent@^6.0.2: 955 | version "6.0.2" 956 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 957 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 958 | dependencies: 959 | is-glob "^4.0.3" 960 | 961 | glob@7.1.7: 962 | version "7.1.7" 963 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 964 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 965 | dependencies: 966 | fs.realpath "^1.0.0" 967 | inflight "^1.0.4" 968 | inherits "2" 969 | minimatch "^3.0.4" 970 | once "^1.3.0" 971 | path-is-absolute "^1.0.0" 972 | 973 | glob@^7.1.3, glob@^7.2.0: 974 | version "7.2.3" 975 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 976 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 977 | dependencies: 978 | fs.realpath "^1.0.0" 979 | inflight "^1.0.4" 980 | inherits "2" 981 | minimatch "^3.1.1" 982 | once "^1.3.0" 983 | path-is-absolute "^1.0.0" 984 | 985 | globals@^13.15.0: 986 | version "13.17.0" 987 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" 988 | integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== 989 | dependencies: 990 | type-fest "^0.20.2" 991 | 992 | globby@^11.1.0: 993 | version "11.1.0" 994 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 995 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 996 | dependencies: 997 | array-union "^2.1.0" 998 | dir-glob "^3.0.1" 999 | fast-glob "^3.2.9" 1000 | ignore "^5.2.0" 1001 | merge2 "^1.4.1" 1002 | slash "^3.0.0" 1003 | 1004 | grapheme-splitter@^1.0.4: 1005 | version "1.0.4" 1006 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" 1007 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== 1008 | 1009 | has-bigints@^1.0.1, has-bigints@^1.0.2: 1010 | version "1.0.2" 1011 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" 1012 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== 1013 | 1014 | has-flag@^4.0.0: 1015 | version "4.0.0" 1016 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1017 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1018 | 1019 | has-property-descriptors@^1.0.0: 1020 | version "1.0.0" 1021 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" 1022 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== 1023 | dependencies: 1024 | get-intrinsic "^1.1.1" 1025 | 1026 | has-symbols@^1.0.2, has-symbols@^1.0.3: 1027 | version "1.0.3" 1028 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 1029 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 1030 | 1031 | has-tostringtag@^1.0.0: 1032 | version "1.0.0" 1033 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 1034 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 1035 | dependencies: 1036 | has-symbols "^1.0.2" 1037 | 1038 | has@^1.0.3: 1039 | version "1.0.3" 1040 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1041 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1042 | dependencies: 1043 | function-bind "^1.1.1" 1044 | 1045 | ignore@^5.2.0: 1046 | version "5.2.0" 1047 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1048 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1049 | 1050 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1051 | version "3.3.0" 1052 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1053 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1054 | dependencies: 1055 | parent-module "^1.0.0" 1056 | resolve-from "^4.0.0" 1057 | 1058 | imurmurhash@^0.1.4: 1059 | version "0.1.4" 1060 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1061 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1062 | 1063 | inflight@^1.0.4: 1064 | version "1.0.6" 1065 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1066 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1067 | dependencies: 1068 | once "^1.3.0" 1069 | wrappy "1" 1070 | 1071 | inherits@2: 1072 | version "2.0.4" 1073 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1074 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1075 | 1076 | internal-slot@^1.0.3: 1077 | version "1.0.3" 1078 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 1079 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 1080 | dependencies: 1081 | get-intrinsic "^1.1.0" 1082 | has "^1.0.3" 1083 | side-channel "^1.0.4" 1084 | 1085 | is-bigint@^1.0.1: 1086 | version "1.0.4" 1087 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 1088 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 1089 | dependencies: 1090 | has-bigints "^1.0.1" 1091 | 1092 | is-boolean-object@^1.1.0: 1093 | version "1.1.2" 1094 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 1095 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 1096 | dependencies: 1097 | call-bind "^1.0.2" 1098 | has-tostringtag "^1.0.0" 1099 | 1100 | is-callable@^1.1.4, is-callable@^1.2.7: 1101 | version "1.2.7" 1102 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 1103 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 1104 | 1105 | is-core-module@^2.8.1, is-core-module@^2.9.0: 1106 | version "2.11.0" 1107 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 1108 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 1109 | dependencies: 1110 | has "^1.0.3" 1111 | 1112 | is-date-object@^1.0.1: 1113 | version "1.0.5" 1114 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 1115 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 1116 | dependencies: 1117 | has-tostringtag "^1.0.0" 1118 | 1119 | is-extglob@^2.1.1: 1120 | version "2.1.1" 1121 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1122 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1123 | 1124 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1125 | version "4.0.3" 1126 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1127 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1128 | dependencies: 1129 | is-extglob "^2.1.1" 1130 | 1131 | is-negative-zero@^2.0.2: 1132 | version "2.0.2" 1133 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 1134 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 1135 | 1136 | is-number-object@^1.0.4: 1137 | version "1.0.7" 1138 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" 1139 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== 1140 | dependencies: 1141 | has-tostringtag "^1.0.0" 1142 | 1143 | is-number@^7.0.0: 1144 | version "7.0.0" 1145 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1146 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1147 | 1148 | is-path-inside@^3.0.3: 1149 | version "3.0.3" 1150 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1151 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 1152 | 1153 | is-regex@^1.1.4: 1154 | version "1.1.4" 1155 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 1156 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 1157 | dependencies: 1158 | call-bind "^1.0.2" 1159 | has-tostringtag "^1.0.0" 1160 | 1161 | is-shared-array-buffer@^1.0.2: 1162 | version "1.0.2" 1163 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" 1164 | integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== 1165 | dependencies: 1166 | call-bind "^1.0.2" 1167 | 1168 | is-string@^1.0.5, is-string@^1.0.7: 1169 | version "1.0.7" 1170 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 1171 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 1172 | dependencies: 1173 | has-tostringtag "^1.0.0" 1174 | 1175 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1176 | version "1.0.4" 1177 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 1178 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 1179 | dependencies: 1180 | has-symbols "^1.0.2" 1181 | 1182 | is-weakref@^1.0.2: 1183 | version "1.0.2" 1184 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 1185 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 1186 | dependencies: 1187 | call-bind "^1.0.2" 1188 | 1189 | isexe@^2.0.0: 1190 | version "2.0.0" 1191 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1192 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1193 | 1194 | js-sdsl@^4.1.4: 1195 | version "4.1.5" 1196 | resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" 1197 | integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== 1198 | 1199 | "js-tokens@^3.0.0 || ^4.0.0": 1200 | version "4.0.0" 1201 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1202 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1203 | 1204 | js-yaml@^4.1.0: 1205 | version "4.1.0" 1206 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1207 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1208 | dependencies: 1209 | argparse "^2.0.1" 1210 | 1211 | json-schema-traverse@^0.4.1: 1212 | version "0.4.1" 1213 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1214 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1215 | 1216 | json-stable-stringify-without-jsonify@^1.0.1: 1217 | version "1.0.1" 1218 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1219 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1220 | 1221 | json5@^1.0.1: 1222 | version "1.0.1" 1223 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 1224 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 1225 | dependencies: 1226 | minimist "^1.2.0" 1227 | 1228 | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: 1229 | version "3.3.3" 1230 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" 1231 | integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== 1232 | dependencies: 1233 | array-includes "^3.1.5" 1234 | object.assign "^4.1.3" 1235 | 1236 | language-subtag-registry@~0.3.2: 1237 | version "0.3.22" 1238 | resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" 1239 | integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== 1240 | 1241 | language-tags@^1.0.5: 1242 | version "1.0.5" 1243 | resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" 1244 | integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== 1245 | dependencies: 1246 | language-subtag-registry "~0.3.2" 1247 | 1248 | levn@^0.4.1: 1249 | version "0.4.1" 1250 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1251 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1252 | dependencies: 1253 | prelude-ls "^1.2.1" 1254 | type-check "~0.4.0" 1255 | 1256 | locate-path@^6.0.0: 1257 | version "6.0.0" 1258 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1259 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1260 | dependencies: 1261 | p-locate "^5.0.0" 1262 | 1263 | lodash.merge@^4.6.2: 1264 | version "4.6.2" 1265 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1266 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1267 | 1268 | long@4.0.0: 1269 | version "4.0.0" 1270 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 1271 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 1272 | 1273 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1274 | version "1.4.0" 1275 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1276 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1277 | dependencies: 1278 | js-tokens "^3.0.0 || ^4.0.0" 1279 | 1280 | lru-cache@^6.0.0: 1281 | version "6.0.0" 1282 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1283 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1284 | dependencies: 1285 | yallist "^4.0.0" 1286 | 1287 | merge2@^1.3.0, merge2@^1.4.1: 1288 | version "1.4.1" 1289 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1290 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1291 | 1292 | micromatch@^4.0.4: 1293 | version "4.0.5" 1294 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1295 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1296 | dependencies: 1297 | braces "^3.0.2" 1298 | picomatch "^2.3.1" 1299 | 1300 | minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 1301 | version "3.1.2" 1302 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1303 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1304 | dependencies: 1305 | brace-expansion "^1.1.7" 1306 | 1307 | minimist@^1.2.0, minimist@^1.2.6: 1308 | version "1.2.7" 1309 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 1310 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 1311 | 1312 | ms@2.0.0: 1313 | version "2.0.0" 1314 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1315 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1316 | 1317 | ms@2.1.2: 1318 | version "2.1.2" 1319 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1320 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1321 | 1322 | ms@^2.1.1: 1323 | version "2.1.3" 1324 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1325 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1326 | 1327 | nanoid@^3.3.4: 1328 | version "3.3.4" 1329 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 1330 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 1331 | 1332 | natural-compare@^1.4.0: 1333 | version "1.4.0" 1334 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1335 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1336 | 1337 | next@13.0.0: 1338 | version "13.0.0" 1339 | resolved "https://registry.yarnpkg.com/next/-/next-13.0.0.tgz#6f07064a4f374562cf58677bef4dd06326ca648b" 1340 | integrity sha512-puH1WGM6rGeFOoFdXXYfUxN9Sgi4LMytCV5HkQJvVUOhHfC1DoVqOfvzaEteyp6P04IW+gbtK2Q9pInVSrltPA== 1341 | dependencies: 1342 | "@next/env" "13.0.0" 1343 | "@swc/helpers" "0.4.11" 1344 | caniuse-lite "^1.0.30001406" 1345 | postcss "8.4.14" 1346 | styled-jsx "5.1.0" 1347 | use-sync-external-store "1.2.0" 1348 | optionalDependencies: 1349 | "@next/swc-android-arm-eabi" "13.0.0" 1350 | "@next/swc-android-arm64" "13.0.0" 1351 | "@next/swc-darwin-arm64" "13.0.0" 1352 | "@next/swc-darwin-x64" "13.0.0" 1353 | "@next/swc-freebsd-x64" "13.0.0" 1354 | "@next/swc-linux-arm-gnueabihf" "13.0.0" 1355 | "@next/swc-linux-arm64-gnu" "13.0.0" 1356 | "@next/swc-linux-arm64-musl" "13.0.0" 1357 | "@next/swc-linux-x64-gnu" "13.0.0" 1358 | "@next/swc-linux-x64-musl" "13.0.0" 1359 | "@next/swc-win32-arm64-msvc" "13.0.0" 1360 | "@next/swc-win32-ia32-msvc" "13.0.0" 1361 | "@next/swc-win32-x64-msvc" "13.0.0" 1362 | 1363 | node-fetch@~2.6.1: 1364 | version "2.6.7" 1365 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 1366 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 1367 | dependencies: 1368 | whatwg-url "^5.0.0" 1369 | 1370 | object-assign@^4.1.1: 1371 | version "4.1.1" 1372 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1373 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1374 | 1375 | object-inspect@^1.12.2, object-inspect@^1.9.0: 1376 | version "1.12.2" 1377 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 1378 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 1379 | 1380 | object-keys@^1.1.1: 1381 | version "1.1.1" 1382 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1383 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1384 | 1385 | object.assign@^4.1.3, object.assign@^4.1.4: 1386 | version "4.1.4" 1387 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" 1388 | integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== 1389 | dependencies: 1390 | call-bind "^1.0.2" 1391 | define-properties "^1.1.4" 1392 | has-symbols "^1.0.3" 1393 | object-keys "^1.1.1" 1394 | 1395 | object.entries@^1.1.5: 1396 | version "1.1.5" 1397 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" 1398 | integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== 1399 | dependencies: 1400 | call-bind "^1.0.2" 1401 | define-properties "^1.1.3" 1402 | es-abstract "^1.19.1" 1403 | 1404 | object.fromentries@^2.0.5: 1405 | version "2.0.5" 1406 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" 1407 | integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== 1408 | dependencies: 1409 | call-bind "^1.0.2" 1410 | define-properties "^1.1.3" 1411 | es-abstract "^1.19.1" 1412 | 1413 | object.hasown@^1.1.1: 1414 | version "1.1.1" 1415 | resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" 1416 | integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== 1417 | dependencies: 1418 | define-properties "^1.1.4" 1419 | es-abstract "^1.19.5" 1420 | 1421 | object.values@^1.1.5: 1422 | version "1.1.5" 1423 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" 1424 | integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== 1425 | dependencies: 1426 | call-bind "^1.0.2" 1427 | define-properties "^1.1.3" 1428 | es-abstract "^1.19.1" 1429 | 1430 | once@^1.3.0: 1431 | version "1.4.0" 1432 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1433 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1434 | dependencies: 1435 | wrappy "1" 1436 | 1437 | optionator@^0.9.1: 1438 | version "0.9.1" 1439 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1440 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1441 | dependencies: 1442 | deep-is "^0.1.3" 1443 | fast-levenshtein "^2.0.6" 1444 | levn "^0.4.1" 1445 | prelude-ls "^1.2.1" 1446 | type-check "^0.4.0" 1447 | word-wrap "^1.2.3" 1448 | 1449 | p-limit@^3.0.2: 1450 | version "3.1.0" 1451 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1452 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1453 | dependencies: 1454 | yocto-queue "^0.1.0" 1455 | 1456 | p-locate@^5.0.0: 1457 | version "5.0.0" 1458 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1459 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1460 | dependencies: 1461 | p-limit "^3.0.2" 1462 | 1463 | parent-module@^1.0.0: 1464 | version "1.0.1" 1465 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1466 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1467 | dependencies: 1468 | callsites "^3.0.0" 1469 | 1470 | path-exists@^4.0.0: 1471 | version "4.0.0" 1472 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1473 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1474 | 1475 | path-is-absolute@^1.0.0: 1476 | version "1.0.1" 1477 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1478 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1479 | 1480 | path-key@^3.1.0: 1481 | version "3.1.1" 1482 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1483 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1484 | 1485 | path-parse@^1.0.7: 1486 | version "1.0.7" 1487 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1488 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1489 | 1490 | path-type@^4.0.0: 1491 | version "4.0.0" 1492 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1493 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1494 | 1495 | picocolors@^1.0.0: 1496 | version "1.0.0" 1497 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1498 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1499 | 1500 | picomatch@^2.3.1: 1501 | version "2.3.1" 1502 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1503 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1504 | 1505 | postcss@8.4.14: 1506 | version "8.4.14" 1507 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" 1508 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== 1509 | dependencies: 1510 | nanoid "^3.3.4" 1511 | picocolors "^1.0.0" 1512 | source-map-js "^1.0.2" 1513 | 1514 | prelude-ls@^1.2.1: 1515 | version "1.2.1" 1516 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1517 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1518 | 1519 | prop-types@^15.8.1: 1520 | version "15.8.1" 1521 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" 1522 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1523 | dependencies: 1524 | loose-envify "^1.4.0" 1525 | object-assign "^4.1.1" 1526 | react-is "^16.13.1" 1527 | 1528 | punycode@^2.1.0: 1529 | version "2.1.1" 1530 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1531 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1532 | 1533 | queue-microtask@^1.2.2: 1534 | version "1.2.3" 1535 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1536 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1537 | 1538 | react-dom@18.2.0: 1539 | version "18.2.0" 1540 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 1541 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 1542 | dependencies: 1543 | loose-envify "^1.1.0" 1544 | scheduler "^0.23.0" 1545 | 1546 | react-is@^16.13.1: 1547 | version "16.13.1" 1548 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1549 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1550 | 1551 | react@18.2.0: 1552 | version "18.2.0" 1553 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 1554 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 1555 | dependencies: 1556 | loose-envify "^1.1.0" 1557 | 1558 | regenerator-runtime@^0.13.10: 1559 | version "0.13.10" 1560 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" 1561 | integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== 1562 | 1563 | regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: 1564 | version "1.4.3" 1565 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" 1566 | integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== 1567 | dependencies: 1568 | call-bind "^1.0.2" 1569 | define-properties "^1.1.3" 1570 | functions-have-names "^1.2.2" 1571 | 1572 | regexpp@^3.2.0: 1573 | version "3.2.0" 1574 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1575 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1576 | 1577 | resolve-from@^4.0.0: 1578 | version "4.0.0" 1579 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1580 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1581 | 1582 | resolve@^1.20.0, resolve@^1.22.0: 1583 | version "1.22.1" 1584 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1585 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1586 | dependencies: 1587 | is-core-module "^2.9.0" 1588 | path-parse "^1.0.7" 1589 | supports-preserve-symlinks-flag "^1.0.0" 1590 | 1591 | resolve@^2.0.0-next.3: 1592 | version "2.0.0-next.4" 1593 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" 1594 | integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== 1595 | dependencies: 1596 | is-core-module "^2.9.0" 1597 | path-parse "^1.0.7" 1598 | supports-preserve-symlinks-flag "^1.0.0" 1599 | 1600 | reusify@^1.0.4: 1601 | version "1.0.4" 1602 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1603 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1604 | 1605 | rimraf@^3.0.2: 1606 | version "3.0.2" 1607 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1608 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1609 | dependencies: 1610 | glob "^7.1.3" 1611 | 1612 | run-parallel@^1.1.9: 1613 | version "1.2.0" 1614 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1615 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1616 | dependencies: 1617 | queue-microtask "^1.2.2" 1618 | 1619 | safe-regex-test@^1.0.0: 1620 | version "1.0.0" 1621 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" 1622 | integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== 1623 | dependencies: 1624 | call-bind "^1.0.2" 1625 | get-intrinsic "^1.1.3" 1626 | is-regex "^1.1.4" 1627 | 1628 | scheduler@^0.23.0: 1629 | version "0.23.0" 1630 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 1631 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 1632 | dependencies: 1633 | loose-envify "^1.1.0" 1634 | 1635 | seedrandom@^3.0.5: 1636 | version "3.0.5" 1637 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" 1638 | integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== 1639 | 1640 | semver@^6.3.0: 1641 | version "6.3.0" 1642 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1643 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1644 | 1645 | semver@^7.3.7: 1646 | version "7.3.8" 1647 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" 1648 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== 1649 | dependencies: 1650 | lru-cache "^6.0.0" 1651 | 1652 | shebang-command@^2.0.0: 1653 | version "2.0.0" 1654 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1655 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1656 | dependencies: 1657 | shebang-regex "^3.0.0" 1658 | 1659 | shebang-regex@^3.0.0: 1660 | version "3.0.0" 1661 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1662 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1663 | 1664 | side-channel@^1.0.4: 1665 | version "1.0.4" 1666 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1667 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1668 | dependencies: 1669 | call-bind "^1.0.0" 1670 | get-intrinsic "^1.0.2" 1671 | object-inspect "^1.9.0" 1672 | 1673 | slash@^3.0.0: 1674 | version "3.0.0" 1675 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1676 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1677 | 1678 | source-map-js@^1.0.2: 1679 | version "1.0.2" 1680 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1681 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1682 | 1683 | string.prototype.matchall@^4.0.7: 1684 | version "4.0.7" 1685 | resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" 1686 | integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== 1687 | dependencies: 1688 | call-bind "^1.0.2" 1689 | define-properties "^1.1.3" 1690 | es-abstract "^1.19.1" 1691 | get-intrinsic "^1.1.1" 1692 | has-symbols "^1.0.3" 1693 | internal-slot "^1.0.3" 1694 | regexp.prototype.flags "^1.4.1" 1695 | side-channel "^1.0.4" 1696 | 1697 | string.prototype.trimend@^1.0.5: 1698 | version "1.0.5" 1699 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" 1700 | integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== 1701 | dependencies: 1702 | call-bind "^1.0.2" 1703 | define-properties "^1.1.4" 1704 | es-abstract "^1.19.5" 1705 | 1706 | string.prototype.trimstart@^1.0.5: 1707 | version "1.0.5" 1708 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" 1709 | integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== 1710 | dependencies: 1711 | call-bind "^1.0.2" 1712 | define-properties "^1.1.4" 1713 | es-abstract "^1.19.5" 1714 | 1715 | strip-ansi@^6.0.1: 1716 | version "6.0.1" 1717 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1718 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1719 | dependencies: 1720 | ansi-regex "^5.0.1" 1721 | 1722 | strip-bom@^3.0.0: 1723 | version "3.0.0" 1724 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1725 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 1726 | 1727 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1728 | version "3.1.1" 1729 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1730 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1731 | 1732 | styled-jsx@5.1.0: 1733 | version "5.1.0" 1734 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.0.tgz#4a5622ab9714bd3fcfaeec292aa555871f057563" 1735 | integrity sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ== 1736 | dependencies: 1737 | client-only "0.0.1" 1738 | 1739 | supports-color@^7.1.0: 1740 | version "7.2.0" 1741 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1742 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1743 | dependencies: 1744 | has-flag "^4.0.0" 1745 | 1746 | supports-preserve-symlinks-flag@^1.0.0: 1747 | version "1.0.0" 1748 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1749 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1750 | 1751 | text-table@^0.2.0: 1752 | version "0.2.0" 1753 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1754 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1755 | 1756 | to-regex-range@^5.0.1: 1757 | version "5.0.1" 1758 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1759 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1760 | dependencies: 1761 | is-number "^7.0.0" 1762 | 1763 | tr46@~0.0.3: 1764 | version "0.0.3" 1765 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1766 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1767 | 1768 | tsconfig-paths@^3.14.1: 1769 | version "3.14.1" 1770 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" 1771 | integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== 1772 | dependencies: 1773 | "@types/json5" "^0.0.29" 1774 | json5 "^1.0.1" 1775 | minimist "^1.2.6" 1776 | strip-bom "^3.0.0" 1777 | 1778 | tslib@^1.8.1: 1779 | version "1.14.1" 1780 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1781 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1782 | 1783 | tslib@^2.4.0: 1784 | version "2.4.0" 1785 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" 1786 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1787 | 1788 | tsutils@^3.21.0: 1789 | version "3.21.0" 1790 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1791 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1792 | dependencies: 1793 | tslib "^1.8.1" 1794 | 1795 | type-check@^0.4.0, type-check@~0.4.0: 1796 | version "0.4.0" 1797 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1798 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1799 | dependencies: 1800 | prelude-ls "^1.2.1" 1801 | 1802 | type-fest@^0.20.2: 1803 | version "0.20.2" 1804 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1805 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1806 | 1807 | unbox-primitive@^1.0.2: 1808 | version "1.0.2" 1809 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" 1810 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== 1811 | dependencies: 1812 | call-bind "^1.0.2" 1813 | has-bigints "^1.0.2" 1814 | has-symbols "^1.0.3" 1815 | which-boxed-primitive "^1.0.2" 1816 | 1817 | uri-js@^4.2.2: 1818 | version "4.4.1" 1819 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1820 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1821 | dependencies: 1822 | punycode "^2.1.0" 1823 | 1824 | use-sync-external-store@1.2.0: 1825 | version "1.2.0" 1826 | resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" 1827 | integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== 1828 | 1829 | webidl-conversions@^3.0.0: 1830 | version "3.0.1" 1831 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1832 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1833 | 1834 | whatwg-url@^5.0.0: 1835 | version "5.0.0" 1836 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1837 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1838 | dependencies: 1839 | tr46 "~0.0.3" 1840 | webidl-conversions "^3.0.0" 1841 | 1842 | which-boxed-primitive@^1.0.2: 1843 | version "1.0.2" 1844 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1845 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1846 | dependencies: 1847 | is-bigint "^1.0.1" 1848 | is-boolean-object "^1.1.0" 1849 | is-number-object "^1.0.4" 1850 | is-string "^1.0.5" 1851 | is-symbol "^1.0.3" 1852 | 1853 | which@^2.0.1: 1854 | version "2.0.2" 1855 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1856 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1857 | dependencies: 1858 | isexe "^2.0.0" 1859 | 1860 | word-wrap@^1.2.3: 1861 | version "1.2.3" 1862 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1863 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1864 | 1865 | wrappy@1: 1866 | version "1.0.2" 1867 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1868 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1869 | 1870 | yallist@^4.0.0: 1871 | version "4.0.0" 1872 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1873 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1874 | 1875 | yocto-queue@^0.1.0: 1876 | version "0.1.0" 1877 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1878 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1879 | --------------------------------------------------------------------------------