├── .gitignore ├── src ├── bot │ ├── constants.ts │ ├── context.ts │ ├── handlers │ │ ├── webAppData.ts │ │ ├── index.ts │ │ └── commands.ts │ ├── session.ts │ └── index.ts ├── tgAuthHelper.ts └── index.ts ├── tsconfig.json ├── package.json ├── public ├── example │ ├── style.css │ ├── index.html │ └── main.js ├── index.html └── assets │ ├── index.90dadea5.css │ └── index.1b4446f7.js ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | .env -------------------------------------------------------------------------------- /src/bot/constants.ts: -------------------------------------------------------------------------------- 1 | export const APP_BASE_URL = `https://${process.env.HOST}/`; 2 | -------------------------------------------------------------------------------- /src/bot/context.ts: -------------------------------------------------------------------------------- 1 | import { Context as BaseContext, SessionFlavor } from 'grammy'; 2 | import { Session } from './session'; 3 | 4 | export type Context = BaseContext & SessionFlavor; 5 | -------------------------------------------------------------------------------- /src/bot/handlers/webAppData.ts: -------------------------------------------------------------------------------- 1 | import { Composer } from 'grammy'; 2 | import { Context } from '../context'; 3 | 4 | const composer = new Composer(); 5 | 6 | // Handle data from frontend 7 | composer.on(':web_app_data', (ctx) => { 8 | const data = ctx.message.web_app_data.data; 9 | return ctx.reply(data); 10 | }); 11 | 12 | export default composer; 13 | -------------------------------------------------------------------------------- /src/bot/session.ts: -------------------------------------------------------------------------------- 1 | import { session as session_ } from 'grammy'; 2 | import { Context } from './context'; 3 | 4 | export interface Session {} 5 | 6 | export const initial = (): Session => ({}); 7 | 8 | export function getSessionKey(ctx: Context): string | undefined { 9 | return ctx.from?.id.toString(); 10 | } 11 | 12 | export const session = session_({ initial, getSessionKey }); 13 | -------------------------------------------------------------------------------- /src/bot/handlers/index.ts: -------------------------------------------------------------------------------- 1 | import { Composer } from 'grammy'; 2 | import { Context } from '../context'; 3 | 4 | import commands from './commands'; 5 | import webAppData from './webAppData'; 6 | 7 | const composer = new Composer(); 8 | 9 | composer.use(webAppData); 10 | 11 | composer 12 | .on('message:text') 13 | .filter((ctx) => ctx.chat?.type === 'private') 14 | .use(commands); 15 | 16 | export default composer; 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "target": "es2020", 5 | "module": "commonjs", 6 | "declaration": true, 7 | "outDir": "./dist", 8 | "strict": false, 9 | "esModuleInterop": true, 10 | "inlineSourceMap": true, 11 | "experimentalDecorators": true, 12 | "emitDecoratorMetadata": true, 13 | "skipLibCheck": true 14 | }, 15 | "include": ["src"], 16 | "exclude": ["node_modules"] 17 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple-quiz", 3 | "version": "1.0.0", 4 | "author": "Shinkarenko Maxim", 5 | "description": "Telegram webapp example", 6 | "main": "index.js", 7 | "license": "MIT", 8 | "dependencies": { 9 | "@grammyjs/runner": "^1.0.3", 10 | "@grammyjs/transformer-throttler": "^1.1.2", 11 | "@peculiar/webcrypto": "^1.3.3", 12 | "body-parser": "^1.20.0", 13 | "dotenv": "^16.0.0", 14 | "express": "^4.18.1", 15 | "grammy": "^1.8.2" 16 | }, 17 | "scripts": { 18 | "clean": "rimraf dist/*", 19 | "serve": "nodemon dist/index.js", 20 | "bot": "node dist/bot/index.js", 21 | "build": "tsc --skipLibCheck", 22 | "watch": "tsc -w --skipLibCheck" 23 | }, 24 | "devDependencies": { 25 | "@types/express": "^4.17.13", 26 | "@types/node": "^17.0.30", 27 | "nodemon": "^2.0.16", 28 | "rimraf": "^3.0.2" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/bot/index.ts: -------------------------------------------------------------------------------- 1 | import 'dotenv/config'; 2 | import { Bot } from 'grammy'; 3 | import { run, sequentialize } from '@grammyjs/runner'; 4 | import { apiThrottler } from '@grammyjs/transformer-throttler'; 5 | 6 | import { getSessionKey, session } from './session'; 7 | import { Context } from './context'; 8 | import handlers from './handlers'; 9 | 10 | const bot = new Bot(process.env.BOT_TOKEN); 11 | const throttler = apiThrottler(); 12 | 13 | bot.api.config.use(throttler); 14 | 15 | bot.use(sequentialize(getSessionKey)); 16 | bot.use(session); 17 | bot.use(handlers); 18 | 19 | // Start bot with polling by default and Sequentialize runner 20 | const runner = run(bot); 21 | 22 | // Stopping the bot when Node process 23 | // is about to be terminated 24 | const stopRunner = () => runner.isRunning() && runner.stop(); 25 | 26 | process.once('SIGINT', stopRunner); 27 | process.once('SIGTERM', stopRunner); 28 | -------------------------------------------------------------------------------- /src/bot/handlers/commands.ts: -------------------------------------------------------------------------------- 1 | import { Composer, InlineKeyboard, Keyboard } from 'grammy'; 2 | 3 | import { APP_BASE_URL } from '../constants'; 4 | import { Context } from '../context'; 5 | 6 | const magicButton = (keyboard: any): Keyboard | InlineKeyboard => 7 | new keyboard().webApp('💫 Tap!', APP_BASE_URL + 'index.html'); 8 | 9 | const composer = new Composer(); 10 | 11 | composer.command(['start', 'help'], async (ctx) => { 12 | const msg = 13 | 'All available modes:\n\n/simple - simple mode with usual keyboard\n/inline - inline button mode'; 14 | 15 | await ctx.reply(msg, { 16 | parse_mode: 'HTML', 17 | }); 18 | }); 19 | 20 | composer.command('simple', async (ctx) => { 21 | const keyboard = magicButton(Keyboard) as Keyboard; 22 | 23 | await ctx.reply('Simple mode', { 24 | reply_markup: { 25 | keyboard: keyboard.build(), 26 | resize_keyboard: true, 27 | }, 28 | }); 29 | }); 30 | 31 | composer.command('inline', async (ctx) => { 32 | const keyboard = magicButton(InlineKeyboard); 33 | 34 | await ctx.reply('Inline mode', { 35 | reply_markup: keyboard, 36 | }); 37 | }); 38 | 39 | export default composer; 40 | -------------------------------------------------------------------------------- /public/example/style.css: -------------------------------------------------------------------------------- 1 | /* .wrapper { 2 | height: 100%; 3 | width: 100%; 4 | max-width: 640px; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } */ 8 | .tg-height { 9 | height: var(--tg-viewport-stable-height, 100vh); 10 | transition: height 0.35s linear; 11 | } 12 | 13 | .btn { 14 | -webkit-user-select: none; 15 | -moz-user-select: none; 16 | -ms-user-select: none; 17 | user-select: none; 18 | position: relative; 19 | margin: 10px 0; 20 | border-radius: 8px; 21 | color: #ffffff; 22 | border: none; 23 | background-color: #667eea; 24 | letter-spacing: 1px; 25 | font-weight: bold; 26 | text-transform: uppercase; 27 | cursor: pointer; 28 | -webkit-transition: all 150ms ease; 29 | transition: all 150ms ease; 30 | } 31 | 32 | .btn:active { 33 | -webkit-transform: translateY(-3%); 34 | transform: translateY(-3%); 35 | -webkit-box-shadow: 0 4px 8px rgba(255, 255, 255, 0.08); 36 | box-shadow: 0 4px 8px rgba(255, 255, 255, 0.08); 37 | } 38 | 39 | .btn:disabled, 40 | .btn[disabled] { 41 | background-color: rgb(229, 229, 229); 42 | color: rgb(175, 175, 175); 43 | } 44 | 45 | #progressbar-full { 46 | width: 0%; 47 | transition: width 0.55s linear; 48 | } 49 | -------------------------------------------------------------------------------- /src/tgAuthHelper.ts: -------------------------------------------------------------------------------- 1 | import { Crypto } from '@peculiar/webcrypto'; 2 | 3 | const crypto = new Crypto(); 4 | 5 | export function transformInitData(initData) { 6 | return Object.fromEntries(new URLSearchParams(initData)); 7 | } 8 | 9 | export async function validate(data, botToken) { 10 | const encoder = new TextEncoder(); 11 | 12 | const checkString = Object.keys(data) 13 | .filter((key) => key !== 'hash') 14 | .map((key) => `${key}=${data[key]}`) 15 | .sort() 16 | .join('\n'); 17 | 18 | const secretKey = await crypto.subtle.importKey( 19 | 'raw', 20 | encoder.encode('WebAppData'), 21 | { name: 'HMAC', hash: 'SHA-256' }, 22 | true, 23 | ['sign'] 24 | ); 25 | const secret = await crypto.subtle.sign( 26 | 'HMAC', 27 | secretKey, 28 | encoder.encode(botToken) 29 | ); 30 | const signatureKey = await crypto.subtle.importKey( 31 | 'raw', 32 | secret, 33 | { name: 'HMAC', hash: 'SHA-256' }, 34 | true, 35 | ['sign'] 36 | ); 37 | const signature = await crypto.subtle.sign( 38 | 'HMAC', 39 | signatureKey, 40 | encoder.encode(checkString) 41 | ); 42 | 43 | const hex = [...new Uint8Array(signature)] 44 | .map((b) => b.toString(16).padStart(2, '0')) 45 | .join(''); 46 | 47 | return data.hash === hex; 48 | } 49 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import 'dotenv/config'; 2 | import { Bot } from 'grammy'; 3 | import express, { urlencoded } from 'express'; 4 | import bodyParser from 'body-parser'; 5 | 6 | import { transformInitData, validate } from './tgAuthHelper'; 7 | 8 | const bot = new Bot(process.env.BOT_TOKEN); 9 | const app = express(); 10 | 11 | app.use(urlencoded({ extended: true })); 12 | app.use(bodyParser.json()); 13 | app.use(express.static('public')); 14 | 15 | app.post('/api/sendAnswer', async (req, res) => { 16 | const data = req.body; 17 | const COUNT_OF_QUESTIONS = 3; 18 | 19 | // If has not auth data - send Bad Request 20 | let initData = data._auth; 21 | if (!initData) { 22 | res.sendStatus(400).end(); 23 | return; 24 | } 25 | 26 | // Check authorization with Telegram 27 | initData = transformInitData(initData); 28 | const isValid = await validate(initData, process.env.BOT_TOKEN); 29 | if (!isValid) { 30 | res.status(403).end(); 31 | return; 32 | } 33 | 34 | // Reply to user 35 | await bot.api.answerWebAppQuery(initData.query_id, { 36 | type: 'article', 37 | id: '1', 38 | title: 'Title', // empty 39 | input_message_content: { 40 | message_text: `Right answers: ${data.result} of ${COUNT_OF_QUESTIONS}`, 41 | }, 42 | }); 43 | 44 | res.status(200).end(); 45 | }); 46 | 47 | app.listen(process.env.PORT, () => { 48 | console.log('Server started'); 49 | }); 50 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Quiz Bot 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 |
18 |
19 |
20 | 24 |
28 |
32 |
33 |
34 |
35 |
36 |

40 |
41 |
42 |
43 |
44 | 45 |
46 |
47 |
48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /public/example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Quiz Bot 5 | 6 | 7 | 8 | 9 | 10 | 17 | 18 | 19 |
20 |
21 |
22 | 23 |
24 |
25 |
26 |
27 |
28 |
29 |

30 |

31 |
32 |
33 |
34 | 35 |
36 |
37 |
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Simple quiz Telegram Web App example 2 | 3 | Inspired by 4 | [zubiden/tg-web-bot-demo](https://github.com/zubiden/tg-web-bot-demo). 5 | 6 | Demo bot: [@yaqb_bot](https://t.me/yaqb_bot) 7 | 8 | ## What this bot can do? 9 | 10 | This bot demonstrates how to develop Telegram bots with [WebApp feature](https://core.telegram.org/bots/webapps) and simple setup backend with `express.js` and `grammyjs` 11 | 12 | [webapp-vanilla](https://github.com/ShinkarenkoMaxim/webapp-vanilla) is used in the project. 13 | 14 | ## What is important? 15 | 16 | - [Keyboard Button](https://core.telegram.org/bots/webapps#keyboard-button-web-apps) use to additional Bot UI, because user data is [not passed](https://github.com/ShinkarenkoMaxim/simple-quiz/blob/main/public/example/main.js#L132) 17 | - [Inline Button](https://core.telegram.org/bots/webapps#inline-button-web-apps) use to handle **user data** like language and user id. It's useful for more loaded components like forms 18 | - It is advisable not to use `JQuery` and build the project with ``Vite``, ``Parcel`` or other modern bundlers. 19 | - Be sure to use dark and light themes. 20 | 21 | ## Installation and local launch in DEVELOPMENT mode 22 | 23 | 1. Clone this repo: `git clone https://github.com/ShinkarenkoMaxim/simple-quiz` 24 | 2. Create `.env` file with the environment variables listed below 25 | 3. Run `yarn` in the root folder 26 | 4. Run `yarn build` 27 | 5. Run `yarn serve` and `yarn bot` separately 28 | 29 | If you want to add several features then you can create directory `public/feature` and add to this directory your component and serve static file like in example: 30 | 31 | ```app.use('feature', express.static('feature'));``` 32 | 33 | 34 | 35 | ## Environment variables in `.env` file 36 | 37 | - `PORT` - port number for listen server 38 | - `HOST` - hostname or your server ip address. For local development use [Ngrok tunnel](https://ngrok.com/docs/secure-tunnels#http-tunnels-host-header) 39 | - `BOT_TOKEN` - telegram bot token -------------------------------------------------------------------------------- /public/example/main.js: -------------------------------------------------------------------------------- 1 | // Setup tailwind config 2 | tailwind.config = { 3 | darkMode: 'class', 4 | variants: { 5 | extend: { 6 | opacity: ['disabled'], 7 | textColor: ['dark'], 8 | }, 9 | }, 10 | }; 11 | 12 | // Set bot to ready state 13 | Telegram.WebApp.ready(); 14 | 15 | // Get personalized data from Telegram 16 | let initData = Telegram.WebApp.initData || ''; 17 | 18 | // Init state of button 19 | const sendBtn = document.getElementById('sendanswer'); 20 | sendBtn.disabled = true; 21 | 22 | let rightAsnwersCounter = 0; 23 | let questionCounter = 0; 24 | const MAX_QUESTIONS = 3; 25 | const questions = [ 26 | { 27 | question: 'What country has the highest life expectancy?', 28 | answers: ['Hong Kong', 'Switzerland', 'Singapore', 'Italy'], 29 | rightAnswer: 0, 30 | }, 31 | { 32 | question: 'The tallest building in the world is located in which city?', 33 | answers: ['Dubai', 'New York', 'Shanghai', 'None of the above'], 34 | rightAnswer: 0, 35 | }, 36 | { 37 | question: 'Which country do cities of Perth, Adelade & Brisbane belong to', 38 | answers: ['USA', 'Greece', 'Australia'], 39 | rightAnswer: 2, 40 | }, 41 | ]; 42 | 43 | const changeAnswer = (e) => { 44 | sendBtn.disabled = false; 45 | }; 46 | 47 | const disableForm = (isDisable) => { 48 | const answers = document.querySelector('#answers').children; 49 | 50 | for (const el of answers) { 51 | const inputs = el.getElementsByTagName('input'); 52 | const labels = el.getElementsByTagName('label'); 53 | 54 | for (const input of inputs) { 55 | input.disabled = isDisable; 56 | } 57 | 58 | for (const label of labels) { 59 | label.disabled = isDisable; 60 | label.classList.toggle('opacity-50'); 61 | } 62 | } 63 | }; 64 | 65 | const getNewQuestion = () => { 66 | questionCounter++; 67 | 68 | // If quiz is ended - return back 69 | if (questionCounter > MAX_QUESTIONS) { 70 | sendAnswer(); 71 | return; 72 | } 73 | 74 | const questionsIndex = questionCounter - 1; 75 | const currentQuestion = questions[questionsIndex]; 76 | 77 | // Update progress 78 | const progressText = document.getElementById('progress-text'); 79 | const progressBarFull = document.getElementById('progressbar-full'); 80 | progressText.innerText = `${questionCounter} of ${MAX_QUESTIONS}`; 81 | progressBarFull.style.width = `${(questionCounter / MAX_QUESTIONS) * 100}%`; 82 | 83 | // Update question and answers 84 | const answersContainer = document.getElementById('answers'); 85 | const question = document.getElementById('question'); 86 | 87 | question.innerText = currentQuestion.question; 88 | answersContainer.innerHTML = ''; 89 | 90 | currentQuestion.answers.map((answer, k) => { 91 | const answerId = `answer-${k + 1}`; 92 | const itemContainer = document.createElement('div'); 93 | 94 | const input = document.createElement('input'); 95 | input.name = 'answer'; 96 | input.type = 'radio'; 97 | input.id = `answer-${k + 1}`; 98 | input.dataset.id = k; 99 | input.classList.add( 100 | 'rounded-full', 101 | 'h-4', 102 | 'w-4', 103 | 'border', 104 | 'dark:border-white', 105 | 'border-gray-300', 106 | 'bg-white', 107 | 'dark:checked:bg-blue-500', 108 | 'dark:checked:border-blue-500', 109 | 'checked:bg-blue-600', 110 | 'checked:border-blue-600', 111 | 'focus:outline-none', 112 | 'transition', 113 | 'duration-200', 114 | 'mt-1', 115 | 'align-top', 116 | 'bg-no-repeat', 117 | 'bg-center', 118 | 'bg-contain', 119 | 'float-left', 120 | 'mr-2', 121 | 'cursor-pointer' 122 | ); 123 | 124 | const label = document.createElement('label'); 125 | label.htmlFor = answerId; 126 | label.innerText = answer; 127 | label.classList.add('inline-block', 'dark:text-white', 'text-gray-800'); 128 | 129 | itemContainer.appendChild(input); 130 | itemContainer.appendChild(label); 131 | 132 | answersContainer.appendChild(itemContainer); 133 | }); 134 | }; 135 | 136 | const sendAnswer = () => { 137 | // If user visited by not inline keyboard we can't reply him with backend 138 | if (!initData) { 139 | const result = `Right answers: ${rightAsnwersCounter} of ${MAX_QUESTIONS}`; 140 | Telegram.WebApp.sendData(result); 141 | Telegram.WebApp.close(); 142 | } else { 143 | const data = JSON.stringify({ 144 | _auth: initData, 145 | result: rightAsnwersCounter, 146 | }); 147 | 148 | fetch('/api/sendAnswer', { 149 | method: 'POST', 150 | headers: { 151 | Accept: 'application/json', 152 | 'Content-Type': 'application/json', 153 | }, 154 | body: data, 155 | }).then((res) => { 156 | const response = res.json(); 157 | }); 158 | } 159 | }; 160 | 161 | // When button is clicked check answer and send next question else send data to server 162 | sendBtn.addEventListener('click', (e) => { 163 | e.preventDefault(); 164 | 165 | const checkedAnswer = parseInt( 166 | document.querySelector('input[name=answer]:checked').dataset.id 167 | ); 168 | const currentQuestion = questions[questionCounter - 1]; 169 | if (checkedAnswer === currentQuestion.rightAnswer) { 170 | rightAsnwersCounter++; 171 | } 172 | 173 | disableForm(true); 174 | 175 | sendBtn.disabled = true; 176 | 177 | getNewQuestion(); 178 | }); 179 | 180 | window.addEventListener('load', (e) => { 181 | getNewQuestion(); 182 | }); 183 | -------------------------------------------------------------------------------- /public/assets/index.90dadea5.css: -------------------------------------------------------------------------------- 1 | *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.float-left{float:left}.mx-auto{margin-left:auto;margin-right:auto}.mt-0{margin-top:0}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.mr-2{margin-right:.5rem}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.h-2{height:.5rem}.h-full{height:100%}.h-10{height:2.5rem}.h-4{height:1rem}.w-full{width:100%}.w-9\/12{width:75%}.w-1\/2{width:50%}.w-4{width:1rem}.max-w-xs{max-width:20rem}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.rounded-full{border-radius:9999px}.border-0{border-width:0px}.border{border-width:1px}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-contain{background-size:contain}.bg-center{background-position:center}.bg-no-repeat{background-repeat:no-repeat}.px-6{padding-left:1.5rem;padding-right:1.5rem}.align-top{vertical-align:top}.text-base{font-size:1rem;line-height:1.5rem}.leading-relaxed{line-height:1.625}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.opacity-50{opacity:.5}.transition{transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.tg-movable-screen-height{height:var(--tg-viewport-stable-height, 100vh);transition:height .35s linear}.btn{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;margin:10px 0;border-radius:8px;color:#fff;border:none;background-color:#667eea;letter-spacing:1px;font-weight:700;text-transform:uppercase;cursor:pointer;transition:all .15s ease}.btn:active{transform:translateY(-3%);box-shadow:0 4px 8px #ffffff14}.btn:disabled,.btn[disabled]{background-color:#e5e5e5;color:#afafaf}.checked\:border-blue-600:checked{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.checked\:bg-blue-600:checked{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:opacity-5:disabled{opacity:.05}.dark .dark\:border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.dark .dark\:bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.dark .dark\:text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.dark .dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark .dark\:checked\:border-blue-500:checked{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark .dark\:checked\:bg-blue-500:checked{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))} 2 | -------------------------------------------------------------------------------- /public/assets/index.1b4446f7.js: -------------------------------------------------------------------------------- 1 | const ve=function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))f(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const g of s.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&f(g)}).observe(document,{childList:!0,subtree:!0});function w(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerpolicy&&(s.referrerPolicy=a.referrerpolicy),a.crossorigin==="use-credentials"?s.credentials="include":a.crossorigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function f(a){if(a.ep)return;a.ep=!0;const s=w(a);fetch(a.href,s)}};ve();function we(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}var re={};(function(u){u.__esModule=!0;var l={},w="";try{w=location.hash.toString()}catch{}var f=g(w),a=!1;try{a=window.parent!=null&&window!=window.parent,a&&window.addEventListener("message",function(e){if(e.source===window.parent){var t;try{t=JSON.parse(e.data)}catch{return}!t||!t.eventType||v(t.eventType,t.eventData)}})}catch{}function s(e){try{return e=e.replace(/\+/g,"%20"),decodeURIComponent(e)}catch{return e}}function g(e){e=e.replace(/^#/,"");var t={};if(!e.length)return t;if(e.indexOf("=")<0&&e.indexOf("?")<0)return t._path=s(e),t;var n=e.indexOf("?");if(n>=0){var o=e.substr(0,n);t._path=s(o),e=e.substr(n+1)}var c=x(e);for(var y in c)t[y]=c[y];return t}function x(e){var t={};if(!e.length)return t;for(var n=e.split("&"),o=0;o=0?e+"&"+t:o.length>0?e+"?"+t:e+t}function D(e,t,n){if(t||(t=function(){}),n===void 0&&(n=""),window.TelegramWebviewProxy!==void 0)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(n)),t();else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:n})),t();else if(a)try{var o="https://web.telegram.org";o="*",window.parent.postMessage(JSON.stringify({eventType:e,eventData:n}),o),f.tgWebAppDebug&&console.log("[Telegram.WebView] postEvent via postMessage",e,n),t()}catch(c){t(c)}else f.tgWebAppDebug&&console.log("[Telegram.WebView] postEvent",e,n),t({notAvailable:!0})}function v(e,t){E(e,function(n){n(e,t)})}function E(e,t){var n=l[e];if(!(n===void 0||!n.length))for(var o=0;o=0;n--){var o=e.charCodeAt(n);o>127&&o<=2047?t++:o>2047&&o<=65535&&(t+=2),o>=56320&&o<=57343&&n--}return t}var h=0,be=function(){var e=!1,t=!0,n=!1,o="CONTINUE",c=!1,y=!1,i={};Object.defineProperty(i,"text",{set:function(r){i.setParams({text:r})},get:function(){return o},enumerable:!0}),Object.defineProperty(i,"color",{set:function(r){i.setParams({color:r})},get:function(){return c||S.button_color||"#2481cc"},enumerable:!0}),Object.defineProperty(i,"textColor",{set:function(r){i.setParams({text_color:r})},get:function(){return y||S.button_text_color||"#ffffff"},enumerable:!0}),Object.defineProperty(i,"isVisible",{set:function(r){i.setParams({is_visible:r})},get:function(){return e},enumerable:!0}),Object.defineProperty(i,"isProgressVisible",{get:function(){return n},enumerable:!0}),Object.defineProperty(i,"isActive",{set:function(r){i.setParams({is_active:r})},get:function(){return t},enumerable:!0}),p.onEvent("main_button_pressed",te);var b;if(f.tgWebAppDebug){b=document.createElement("tg-main-button");var Z={font:"600 14px/18px sans-serif",display:"none",width:"100%",height:"48px",borderRadius:"0",background:"no-repeat right center",position:"fixed",left:"0",right:"0",bottom:"0",margin:"0",padding:"15px 20px",textAlign:"center",boxSizing:"border-box",zIndex:"10000"};for(var ee in Z)b.style[ee]=Z[ee];document.addEventListener("DOMContentLoaded",function r(m){document.removeEventListener("DOMContentLoaded",r),document.body.appendChild(b),b.addEventListener("click",te,!1)})}function te(){t&&I("mainButtonClicked")}function U(){var r=i.color,m=i.textColor;p.postEvent("web_app_setup_main_button",!1,e?{is_visible:!0,is_active:t,is_progress_visible:n,text:o,color:r,text_color:m}:{is_visible:!1}),f.tgWebAppDebug&&(b.style.display=e?"block":"none",b.style.opacity=t?"1":"0.8",b.style.cursor=t?"pointer":"auto",b.disabled=!t,b.innerText=o,b.style.backgroundImage=n?"url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewport%3D%220%200%2048%2048%22%20width%3D%2248px%22%20height%3D%2248px%22%3E%3Ccircle%20cx%3D%2250%25%22%20cy%3D%2250%25%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222.25%22%20stroke-linecap%3D%22round%22%20fill%3D%22none%22%20stroke-dashoffset%3D%22106%22%20r%3D%229%22%20stroke-dasharray%3D%2256.52%22%20rotate%3D%22-90%22%3E%3Canimate%20attributeName%3D%22stroke-dashoffset%22%20attributeType%3D%22XML%22%20dur%3D%22360s%22%20from%3D%220%22%20to%3D%2212500%22%20repeatCount%3D%22indefinite%22%3E%3C%2Fanimate%3E%3CanimateTransform%20attributeName%3D%22transform%22%20attributeType%3D%22XML%22%20type%3D%22rotate%22%20dur%3D%221s%22%20from%3D%22-90%2024%2024%22%20to%3D%22630%2024%2024%22%20repeatCount%3D%22indefinite%22%3E%3C%2FanimateTransform%3E%3C%2Fcircle%3E%3C%2Fsvg%3E')":"none",b.style.backgroundColor=r,b.style.color=m,h=e?48:0,document.documentElement&&(document.documentElement.style.boxSizing="border-box",document.documentElement.style.paddingBottom=h+"px"),H())}function me(r){var m=!1;if(typeof r.text!="undefined"){var O=r.text.toString().replace(/^\s+|\s+$/g,"");if(!O.length)throw console.error("[Telegram.WebApp] Main button text is required",r.text),Error("WebAppMainButtonParamInvalid");if(O.length>64)throw console.error("[Telegram.WebApp] Main button text is too long",O),Error("WebAppMainButtonParamInvalid");o!==O&&(m=!0),o=O}if(typeof r.color!="undefined")if(r.color===!1||r.color===null)c!==!1&&(m=!0),c=!1;else{var L=$(r.color);if(!L)throw console.error("[Telegram.WebApp] Main button color format is invalid",L),Error("WebAppMainButtonParamInvalid");c!==L&&(m=!0),c=L}if(typeof r.text_color!="undefined")if(r.text_color===!1||r.text_color===null)y!==!1&&(m=!0),y=!1;else{var M=$(r.text_color);if(!M)throw console.error("[Telegram.WebApp] Main button text color format is invalid",M),Error("WebAppMainButtonParamInvalid");y!==M&&(m=!0),y=M}if(typeof r.is_visible!="undefined"){if(r.is_visible&&!i.text.length)throw console.error("[Telegram.WebApp] Main button text is required"),Error("WebAppMainButtonParamInvalid");e!==!!r.is_visible&&(m=!0),e=!!r.is_visible}return typeof r.is_active!="undefined"&&(t!==!!r.is_active&&(m=!0),t=!!r.is_active),(m||r.force_update)&&U(),i}return i.setText=function(r){return i.setParams({text:r})},i.onClick=function(r){return G("mainButtonClicked",r),i},i.offClick=function(r){return X("mainButtonClicked",r),i},i.show=function(){return i.setParams({is_visible:!0})},i.hide=function(){return i.setParams({is_visible:!1})},i.enable=function(){return i.setParams({is_active:!0})},i.disable=function(){return i.setParams({is_active:!1})},i.showProgress=function(r){return t=!!r,n=!0,U(),i},i.hideProgress=function(){return i.isActive||(t=!0),n=!1,U(),i},i.setParams=me,i}();Object.defineProperty(d,"initData",{get:function(){return F},enumerable:!0}),Object.defineProperty(d,"initDataUnsafe",{get:function(){return C},enumerable:!0}),Object.defineProperty(d,"colorScheme",{get:function(){return V},enumerable:!0}),Object.defineProperty(d,"themeParams",{get:function(){return S},enumerable:!0}),Object.defineProperty(d,"isExpanded",{get:function(){return Y},enumerable:!0}),Object.defineProperty(d,"viewportHeight",{get:function(){return(W===!1?window.innerHeight:W)-h},enumerable:!0}),Object.defineProperty(d,"viewportStableHeight",{get:function(){return(T===!1?window.innerHeight:T)-h},enumerable:!0}),Object.defineProperty(d,"MainButton",{value:be,enumerable:!0}),d.onEvent=function(e,t){G(e,t)},d.offEvent=function(e,t){X(e,t)},d.sendData=function(e){if(!e||!e.length)throw console.error("[Telegram.WebApp] Data is required",e),Error("WebAppDataInvalid");if(ge(e)>4096)throw console.error("[Telegram.WebApp] Data is too long",e),Error("WebAppDataInvalid");p.postEvent("web_app_data_send",!1,{data:e})},d.ready=function(){p.postEvent("web_app_ready")},d.expand=function(){p.postEvent("web_app_expand")},d.close=function(){p.postEvent("web_app_close")},window.Telegram.WebApp=d,H(),window.addEventListener("resize",R),p.onEvent("theme_changed",ce),p.onEvent("viewport_changed",de),p.postEvent("web_app_request_theme"),p.postEvent("web_app_request_viewport"),u.default=d})(re);var A=we(re);A.ready();A.onEvent("themeChanged",()=>{document.documentElement.className=A.colorScheme});let ne=A.initData||"";const q=document.getElementById("sendanswer");q.disabled=!0;const he=document.getElementById("answers");let z=0,P=0;const N=3,ie=[{question:"What country has the highest life expectancy?",answers:["Hong Kong","Switzerland","Singapore","Italy"],rightAnswer:0},{question:"The tallest building in the world is located in which city?",answers:["Dubai","New York","Shanghai","None of the above"],rightAnswer:0},{question:"Which country do cities of Perth, Adelade & Brisbane belong to",answers:["USA","Greece","Australia"],rightAnswer:2}],ye=u=>{const w=document.querySelector("#answers").children;for(const f of w){const a=f.getElementsByTagName("input"),s=f.getElementsByTagName("label");for(const g of a)g.disabled=u;for(const g of s)g.classList.toggle("opacity-50")}},oe=()=>{if(P++,P>N){Ee();return}const u=P-1,l=ie[u],w=document.getElementById("progress-text"),f=document.getElementById("progressbar-full");w.innerText=`${P} of ${N}`,f.style.width=`${P/N*100}%`;const a=document.getElementById("question"),s=document.getElementById("answers");a.innerText=l.question,s.innerHTML="",l.answers.map((g,x)=>{const j=`answer-${x+1}`,D=document.createElement("div"),v=document.createElement("input");v.name="answer",v.type="radio",v.id=`answer-${x+1}`,v.dataset.id=x.toString(),v.classList.add("rounded-full","h-4","w-4","border","dark:border-white","border-gray-300","bg-white","dark:checked:bg-blue-500","dark:checked:border-blue-500","checked:bg-blue-600","checked:border-blue-600","focus:outline-none","transition","duration-200","mt-1","align-top","bg-no-repeat","bg-center","bg-contain","float-left","mr-2","cursor-pointer");const E=document.createElement("label");E.htmlFor=j,E.innerText=g,E.classList.add("inline-block","dark:text-white","text-gray-800"),D.appendChild(v),D.appendChild(E),s.appendChild(D)})},Ee=()=>{if(ne){const u=JSON.stringify({_auth:ne,result:z});fetch("/api/sendAnswer",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:u})}else{const u=`Right answers: ${z} of ${N}`;A.sendData(u),A.close()}};he.addEventListener("change",()=>{q.disabled=!1});q.addEventListener("click",u=>{u.preventDefault();const l=document.querySelector("input[name=answer]:checked"),w=parseInt(l.dataset.id),f=ie[P-1];w===f.rightAnswer&&z++,ye(!0),q.disabled=!0,oe()});window.addEventListener("load",()=>{oe()}); 2 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@grammyjs/runner@^1.0.3": 6 | version "1.0.3" 7 | resolved "https://registry.yarnpkg.com/@grammyjs/runner/-/runner-1.0.3.tgz#4f2d344774b3fc531a7c64ee97114da3faf342f3" 8 | integrity sha512-XFDnLDJbJdCcyj9UDvJ3zUvJD416t+zwx9uKKuDVvWVc819RVA6D6UuinxCIFZxVkr1YL9gPh/dm6MUeyjkqzw== 9 | dependencies: 10 | abort-controller "^3.0.0" 11 | 12 | "@grammyjs/transformer-throttler@^1.1.2": 13 | version "1.1.2" 14 | resolved "https://registry.yarnpkg.com/@grammyjs/transformer-throttler/-/transformer-throttler-1.1.2.tgz#c3e61501f7811d37abf8095713fde6f7f52f69bc" 15 | integrity sha512-BcDSa8hiMWIddAmI0cQe/RCoT0zF1UKevbV5zKSyDMH9xoSUWyF725LLmD6ivy52oeHRh8dPysThqlJn8PtHdQ== 16 | dependencies: 17 | bottleneck "^2.0.0" 18 | 19 | "@grammyjs/types@^2.7.0": 20 | version "2.7.1" 21 | resolved "https://registry.yarnpkg.com/@grammyjs/types/-/types-2.7.1.tgz#4071979d37bf37418ff07aeb25942e77d67e7b96" 22 | integrity sha512-6U6yeEXueDX82tf2JmCBo+MRpH6xMW3hieZS30LFfSiBonqOlQUVbwtIwqC47KZn28oD9eccORCj0dugmu5uAg== 23 | 24 | "@peculiar/asn1-schema@^2.1.0": 25 | version "2.1.0" 26 | resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.1.0.tgz#b1c185e1bd65c269d693c569534880cedc8aa5fa" 27 | integrity sha512-D6g4C5YRKC/iPujMAOXuZ7YGdaoMx8GsvWzfVSyx2LYeL38ECOKNywlYAuwbqQvON64lgsYdAujWQPX8hhoBLw== 28 | dependencies: 29 | "@types/asn1js" "^2.0.2" 30 | asn1js "^2.3.1" 31 | pvtsutils "^1.2.1" 32 | tslib "^2.3.1" 33 | 34 | "@peculiar/json-schema@^1.1.12": 35 | version "1.1.12" 36 | resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" 37 | integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== 38 | dependencies: 39 | tslib "^2.0.0" 40 | 41 | "@peculiar/webcrypto@^1.3.3": 42 | version "1.3.3" 43 | resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.3.3.tgz#ccca15d27d64a63df013e6575834563aa5df0dbc" 44 | integrity sha512-+jkp16Hp18HkphJlMtqsQKjyDWJBh0AhDuoB+vVakuIRbkBdaFb7v26Ldm25altjiYhCyQnR5NChHxwSTvbXJw== 45 | dependencies: 46 | "@peculiar/asn1-schema" "^2.1.0" 47 | "@peculiar/json-schema" "^1.1.12" 48 | pvtsutils "^1.2.2" 49 | tslib "^2.3.1" 50 | webcrypto-core "^1.7.2" 51 | 52 | "@sindresorhus/is@^0.14.0": 53 | version "0.14.0" 54 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 55 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 56 | 57 | "@szmarczak/http-timer@^1.1.2": 58 | version "1.1.2" 59 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 60 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 61 | dependencies: 62 | defer-to-connect "^1.0.1" 63 | 64 | "@types/asn1js@^2.0.2": 65 | version "2.0.2" 66 | resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-2.0.2.tgz#bb1992291381b5f06e22a829f2ae009267cdf8c5" 67 | integrity sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA== 68 | 69 | "@types/body-parser@*": 70 | version "1.19.2" 71 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 72 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 73 | dependencies: 74 | "@types/connect" "*" 75 | "@types/node" "*" 76 | 77 | "@types/connect@*": 78 | version "3.4.35" 79 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 80 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 81 | dependencies: 82 | "@types/node" "*" 83 | 84 | "@types/express-serve-static-core@^4.17.18": 85 | version "4.17.28" 86 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" 87 | integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== 88 | dependencies: 89 | "@types/node" "*" 90 | "@types/qs" "*" 91 | "@types/range-parser" "*" 92 | 93 | "@types/express@^4.17.13": 94 | version "4.17.13" 95 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" 96 | integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== 97 | dependencies: 98 | "@types/body-parser" "*" 99 | "@types/express-serve-static-core" "^4.17.18" 100 | "@types/qs" "*" 101 | "@types/serve-static" "*" 102 | 103 | "@types/mime@^1": 104 | version "1.3.2" 105 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 106 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 107 | 108 | "@types/node@*", "@types/node@^17.0.30": 109 | version "17.0.30" 110 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.30.tgz#2c6e8512acac70815e8176aa30c38025067880ef" 111 | integrity sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw== 112 | 113 | "@types/qs@*": 114 | version "6.9.7" 115 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 116 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 117 | 118 | "@types/range-parser@*": 119 | version "1.2.4" 120 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 121 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 122 | 123 | "@types/serve-static@*": 124 | version "1.13.10" 125 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" 126 | integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== 127 | dependencies: 128 | "@types/mime" "^1" 129 | "@types/node" "*" 130 | 131 | abbrev@1: 132 | version "1.1.1" 133 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 134 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 135 | 136 | abort-controller@^3.0.0: 137 | version "3.0.0" 138 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 139 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 140 | dependencies: 141 | event-target-shim "^5.0.0" 142 | 143 | accepts@~1.3.8: 144 | version "1.3.8" 145 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 146 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 147 | dependencies: 148 | mime-types "~2.1.34" 149 | negotiator "0.6.3" 150 | 151 | ansi-align@^3.0.0: 152 | version "3.0.1" 153 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" 154 | integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== 155 | dependencies: 156 | string-width "^4.1.0" 157 | 158 | ansi-regex@^5.0.1: 159 | version "5.0.1" 160 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 161 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 162 | 163 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 164 | version "4.3.0" 165 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 166 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 167 | dependencies: 168 | color-convert "^2.0.1" 169 | 170 | anymatch@~3.1.2: 171 | version "3.1.2" 172 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 173 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 174 | dependencies: 175 | normalize-path "^3.0.0" 176 | picomatch "^2.0.4" 177 | 178 | array-flatten@1.1.1: 179 | version "1.1.1" 180 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 181 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 182 | 183 | asn1js@^2.3.1, asn1js@^2.3.2: 184 | version "2.4.0" 185 | resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-2.4.0.tgz#9ca61dbdd7e4eb49b9ae95b36ab0615b77daff93" 186 | integrity sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ== 187 | dependencies: 188 | pvutils "^1.1.3" 189 | 190 | balanced-match@^1.0.0: 191 | version "1.0.2" 192 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 193 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 194 | 195 | binary-extensions@^2.0.0: 196 | version "2.2.0" 197 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 198 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 199 | 200 | body-parser@1.20.0, body-parser@^1.20.0: 201 | version "1.20.0" 202 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" 203 | integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== 204 | dependencies: 205 | bytes "3.1.2" 206 | content-type "~1.0.4" 207 | debug "2.6.9" 208 | depd "2.0.0" 209 | destroy "1.2.0" 210 | http-errors "2.0.0" 211 | iconv-lite "0.4.24" 212 | on-finished "2.4.1" 213 | qs "6.10.3" 214 | raw-body "2.5.1" 215 | type-is "~1.6.18" 216 | unpipe "1.0.0" 217 | 218 | bottleneck@^2.0.0: 219 | version "2.19.5" 220 | resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" 221 | integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== 222 | 223 | boxen@^5.0.0: 224 | version "5.1.2" 225 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" 226 | integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== 227 | dependencies: 228 | ansi-align "^3.0.0" 229 | camelcase "^6.2.0" 230 | chalk "^4.1.0" 231 | cli-boxes "^2.2.1" 232 | string-width "^4.2.2" 233 | type-fest "^0.20.2" 234 | widest-line "^3.1.0" 235 | wrap-ansi "^7.0.0" 236 | 237 | brace-expansion@^1.1.7: 238 | version "1.1.11" 239 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 240 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 241 | dependencies: 242 | balanced-match "^1.0.0" 243 | concat-map "0.0.1" 244 | 245 | braces@~3.0.2: 246 | version "3.0.2" 247 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 248 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 249 | dependencies: 250 | fill-range "^7.0.1" 251 | 252 | bytes@3.1.2: 253 | version "3.1.2" 254 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 255 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 256 | 257 | cacheable-request@^6.0.0: 258 | version "6.1.0" 259 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 260 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 261 | dependencies: 262 | clone-response "^1.0.2" 263 | get-stream "^5.1.0" 264 | http-cache-semantics "^4.0.0" 265 | keyv "^3.0.0" 266 | lowercase-keys "^2.0.0" 267 | normalize-url "^4.1.0" 268 | responselike "^1.0.2" 269 | 270 | call-bind@^1.0.0: 271 | version "1.0.2" 272 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 273 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 274 | dependencies: 275 | function-bind "^1.1.1" 276 | get-intrinsic "^1.0.2" 277 | 278 | camelcase@^6.2.0: 279 | version "6.3.0" 280 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 281 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 282 | 283 | chalk@^4.1.0: 284 | version "4.1.2" 285 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 286 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 287 | dependencies: 288 | ansi-styles "^4.1.0" 289 | supports-color "^7.1.0" 290 | 291 | chokidar@^3.5.2: 292 | version "3.5.3" 293 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 294 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 295 | dependencies: 296 | anymatch "~3.1.2" 297 | braces "~3.0.2" 298 | glob-parent "~5.1.2" 299 | is-binary-path "~2.1.0" 300 | is-glob "~4.0.1" 301 | normalize-path "~3.0.0" 302 | readdirp "~3.6.0" 303 | optionalDependencies: 304 | fsevents "~2.3.2" 305 | 306 | ci-info@^2.0.0: 307 | version "2.0.0" 308 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 309 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 310 | 311 | cli-boxes@^2.2.1: 312 | version "2.2.1" 313 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 314 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 315 | 316 | clone-response@^1.0.2: 317 | version "1.0.2" 318 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 319 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 320 | dependencies: 321 | mimic-response "^1.0.0" 322 | 323 | color-convert@^2.0.1: 324 | version "2.0.1" 325 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 326 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 327 | dependencies: 328 | color-name "~1.1.4" 329 | 330 | color-name@~1.1.4: 331 | version "1.1.4" 332 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 333 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 334 | 335 | concat-map@0.0.1: 336 | version "0.0.1" 337 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 338 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 339 | 340 | configstore@^5.0.1: 341 | version "5.0.1" 342 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 343 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 344 | dependencies: 345 | dot-prop "^5.2.0" 346 | graceful-fs "^4.1.2" 347 | make-dir "^3.0.0" 348 | unique-string "^2.0.0" 349 | write-file-atomic "^3.0.0" 350 | xdg-basedir "^4.0.0" 351 | 352 | content-disposition@0.5.4: 353 | version "0.5.4" 354 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 355 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 356 | dependencies: 357 | safe-buffer "5.2.1" 358 | 359 | content-type@~1.0.4: 360 | version "1.0.4" 361 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 362 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 363 | 364 | cookie-signature@1.0.6: 365 | version "1.0.6" 366 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 367 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 368 | 369 | cookie@0.5.0: 370 | version "0.5.0" 371 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 372 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 373 | 374 | crypto-random-string@^2.0.0: 375 | version "2.0.0" 376 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 377 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 378 | 379 | debug@2.6.9: 380 | version "2.6.9" 381 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 382 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 383 | dependencies: 384 | ms "2.0.0" 385 | 386 | debug@^3.2.7: 387 | version "3.2.7" 388 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 389 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 390 | dependencies: 391 | ms "^2.1.1" 392 | 393 | debug@^4.3.4: 394 | version "4.3.4" 395 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 396 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 397 | dependencies: 398 | ms "2.1.2" 399 | 400 | decompress-response@^3.3.0: 401 | version "3.3.0" 402 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 403 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 404 | dependencies: 405 | mimic-response "^1.0.0" 406 | 407 | deep-extend@^0.6.0: 408 | version "0.6.0" 409 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 410 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 411 | 412 | defer-to-connect@^1.0.1: 413 | version "1.1.3" 414 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 415 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 416 | 417 | depd@2.0.0: 418 | version "2.0.0" 419 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 420 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 421 | 422 | destroy@1.2.0: 423 | version "1.2.0" 424 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 425 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 426 | 427 | dot-prop@^5.2.0: 428 | version "5.3.0" 429 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 430 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 431 | dependencies: 432 | is-obj "^2.0.0" 433 | 434 | dotenv@^16.0.0: 435 | version "16.0.0" 436 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" 437 | integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== 438 | 439 | duplexer3@^0.1.4: 440 | version "0.1.4" 441 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 442 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 443 | 444 | ee-first@1.1.1: 445 | version "1.1.1" 446 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 447 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 448 | 449 | emoji-regex@^8.0.0: 450 | version "8.0.0" 451 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 452 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 453 | 454 | encodeurl@~1.0.2: 455 | version "1.0.2" 456 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 457 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 458 | 459 | end-of-stream@^1.1.0: 460 | version "1.4.4" 461 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 462 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 463 | dependencies: 464 | once "^1.4.0" 465 | 466 | escape-goat@^2.0.0: 467 | version "2.1.1" 468 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 469 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 470 | 471 | escape-html@~1.0.3: 472 | version "1.0.3" 473 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 474 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 475 | 476 | etag@~1.8.1: 477 | version "1.8.1" 478 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 479 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 480 | 481 | event-target-shim@^5.0.0: 482 | version "5.0.1" 483 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 484 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 485 | 486 | express@^4.18.1: 487 | version "4.18.1" 488 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" 489 | integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== 490 | dependencies: 491 | accepts "~1.3.8" 492 | array-flatten "1.1.1" 493 | body-parser "1.20.0" 494 | content-disposition "0.5.4" 495 | content-type "~1.0.4" 496 | cookie "0.5.0" 497 | cookie-signature "1.0.6" 498 | debug "2.6.9" 499 | depd "2.0.0" 500 | encodeurl "~1.0.2" 501 | escape-html "~1.0.3" 502 | etag "~1.8.1" 503 | finalhandler "1.2.0" 504 | fresh "0.5.2" 505 | http-errors "2.0.0" 506 | merge-descriptors "1.0.1" 507 | methods "~1.1.2" 508 | on-finished "2.4.1" 509 | parseurl "~1.3.3" 510 | path-to-regexp "0.1.7" 511 | proxy-addr "~2.0.7" 512 | qs "6.10.3" 513 | range-parser "~1.2.1" 514 | safe-buffer "5.2.1" 515 | send "0.18.0" 516 | serve-static "1.15.0" 517 | setprototypeof "1.2.0" 518 | statuses "2.0.1" 519 | type-is "~1.6.18" 520 | utils-merge "1.0.1" 521 | vary "~1.1.2" 522 | 523 | fill-range@^7.0.1: 524 | version "7.0.1" 525 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 526 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 527 | dependencies: 528 | to-regex-range "^5.0.1" 529 | 530 | finalhandler@1.2.0: 531 | version "1.2.0" 532 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 533 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 534 | dependencies: 535 | debug "2.6.9" 536 | encodeurl "~1.0.2" 537 | escape-html "~1.0.3" 538 | on-finished "2.4.1" 539 | parseurl "~1.3.3" 540 | statuses "2.0.1" 541 | unpipe "~1.0.0" 542 | 543 | forwarded@0.2.0: 544 | version "0.2.0" 545 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 546 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 547 | 548 | fresh@0.5.2: 549 | version "0.5.2" 550 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 551 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 552 | 553 | fs.realpath@^1.0.0: 554 | version "1.0.0" 555 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 556 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 557 | 558 | fsevents@~2.3.2: 559 | version "2.3.2" 560 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 561 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 562 | 563 | function-bind@^1.1.1: 564 | version "1.1.1" 565 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 566 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 567 | 568 | get-intrinsic@^1.0.2: 569 | version "1.1.1" 570 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 571 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 572 | dependencies: 573 | function-bind "^1.1.1" 574 | has "^1.0.3" 575 | has-symbols "^1.0.1" 576 | 577 | get-stream@^4.1.0: 578 | version "4.1.0" 579 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 580 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 581 | dependencies: 582 | pump "^3.0.0" 583 | 584 | get-stream@^5.1.0: 585 | version "5.2.0" 586 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 587 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 588 | dependencies: 589 | pump "^3.0.0" 590 | 591 | glob-parent@~5.1.2: 592 | version "5.1.2" 593 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 594 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 595 | dependencies: 596 | is-glob "^4.0.1" 597 | 598 | glob@^7.1.3: 599 | version "7.2.0" 600 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 601 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 602 | dependencies: 603 | fs.realpath "^1.0.0" 604 | inflight "^1.0.4" 605 | inherits "2" 606 | minimatch "^3.0.4" 607 | once "^1.3.0" 608 | path-is-absolute "^1.0.0" 609 | 610 | global-dirs@^3.0.0: 611 | version "3.0.0" 612 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" 613 | integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== 614 | dependencies: 615 | ini "2.0.0" 616 | 617 | got@^9.6.0: 618 | version "9.6.0" 619 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 620 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 621 | dependencies: 622 | "@sindresorhus/is" "^0.14.0" 623 | "@szmarczak/http-timer" "^1.1.2" 624 | cacheable-request "^6.0.0" 625 | decompress-response "^3.3.0" 626 | duplexer3 "^0.1.4" 627 | get-stream "^4.1.0" 628 | lowercase-keys "^1.0.1" 629 | mimic-response "^1.0.1" 630 | p-cancelable "^1.0.0" 631 | to-readable-stream "^1.0.0" 632 | url-parse-lax "^3.0.0" 633 | 634 | graceful-fs@^4.1.2: 635 | version "4.2.10" 636 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 637 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 638 | 639 | grammy@^1.8.2: 640 | version "1.8.2" 641 | resolved "https://registry.yarnpkg.com/grammy/-/grammy-1.8.2.tgz#f9c5b5acb77eff91064f6247873dac51c4afb7cc" 642 | integrity sha512-mD3E/QxYJYfT8jPxWDxJPszVQteMtPoLHAMvXT1EsjEBvxCbrFVg5U3TKaA6Xgl6fhinBcv2yFT6tWw3h+xJzQ== 643 | dependencies: 644 | "@grammyjs/types" "^2.7.0" 645 | abort-controller "^3.0.0" 646 | debug "^4.3.4" 647 | node-fetch "^2.6.7" 648 | 649 | has-flag@^3.0.0: 650 | version "3.0.0" 651 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 652 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 653 | 654 | has-flag@^4.0.0: 655 | version "4.0.0" 656 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 657 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 658 | 659 | has-symbols@^1.0.1: 660 | version "1.0.3" 661 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 662 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 663 | 664 | has-yarn@^2.1.0: 665 | version "2.1.0" 666 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 667 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 668 | 669 | has@^1.0.3: 670 | version "1.0.3" 671 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 672 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 673 | dependencies: 674 | function-bind "^1.1.1" 675 | 676 | http-cache-semantics@^4.0.0: 677 | version "4.1.0" 678 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 679 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 680 | 681 | http-errors@2.0.0: 682 | version "2.0.0" 683 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 684 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 685 | dependencies: 686 | depd "2.0.0" 687 | inherits "2.0.4" 688 | setprototypeof "1.2.0" 689 | statuses "2.0.1" 690 | toidentifier "1.0.1" 691 | 692 | iconv-lite@0.4.24: 693 | version "0.4.24" 694 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 695 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 696 | dependencies: 697 | safer-buffer ">= 2.1.2 < 3" 698 | 699 | ignore-by-default@^1.0.1: 700 | version "1.0.1" 701 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 702 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 703 | 704 | import-lazy@^2.1.0: 705 | version "2.1.0" 706 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 707 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 708 | 709 | imurmurhash@^0.1.4: 710 | version "0.1.4" 711 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 712 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 713 | 714 | inflight@^1.0.4: 715 | version "1.0.6" 716 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 717 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 718 | dependencies: 719 | once "^1.3.0" 720 | wrappy "1" 721 | 722 | inherits@2, inherits@2.0.4: 723 | version "2.0.4" 724 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 725 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 726 | 727 | ini@2.0.0: 728 | version "2.0.0" 729 | resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" 730 | integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== 731 | 732 | ini@~1.3.0: 733 | version "1.3.8" 734 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 735 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 736 | 737 | ipaddr.js@1.9.1: 738 | version "1.9.1" 739 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 740 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 741 | 742 | is-binary-path@~2.1.0: 743 | version "2.1.0" 744 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 745 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 746 | dependencies: 747 | binary-extensions "^2.0.0" 748 | 749 | is-ci@^2.0.0: 750 | version "2.0.0" 751 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 752 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 753 | dependencies: 754 | ci-info "^2.0.0" 755 | 756 | is-extglob@^2.1.1: 757 | version "2.1.1" 758 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 759 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 760 | 761 | is-fullwidth-code-point@^3.0.0: 762 | version "3.0.0" 763 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 764 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 765 | 766 | is-glob@^4.0.1, is-glob@~4.0.1: 767 | version "4.0.3" 768 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 769 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 770 | dependencies: 771 | is-extglob "^2.1.1" 772 | 773 | is-installed-globally@^0.4.0: 774 | version "0.4.0" 775 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" 776 | integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== 777 | dependencies: 778 | global-dirs "^3.0.0" 779 | is-path-inside "^3.0.2" 780 | 781 | is-npm@^5.0.0: 782 | version "5.0.0" 783 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" 784 | integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== 785 | 786 | is-number@^7.0.0: 787 | version "7.0.0" 788 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 789 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 790 | 791 | is-obj@^2.0.0: 792 | version "2.0.0" 793 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 794 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 795 | 796 | is-path-inside@^3.0.2: 797 | version "3.0.3" 798 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 799 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 800 | 801 | is-typedarray@^1.0.0: 802 | version "1.0.0" 803 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 804 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 805 | 806 | is-yarn-global@^0.3.0: 807 | version "0.3.0" 808 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 809 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 810 | 811 | json-buffer@3.0.0: 812 | version "3.0.0" 813 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 814 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 815 | 816 | keyv@^3.0.0: 817 | version "3.1.0" 818 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 819 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 820 | dependencies: 821 | json-buffer "3.0.0" 822 | 823 | latest-version@^5.1.0: 824 | version "5.1.0" 825 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 826 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 827 | dependencies: 828 | package-json "^6.3.0" 829 | 830 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 831 | version "1.0.1" 832 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 833 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 834 | 835 | lowercase-keys@^2.0.0: 836 | version "2.0.0" 837 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 838 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 839 | 840 | lru-cache@^6.0.0: 841 | version "6.0.0" 842 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 843 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 844 | dependencies: 845 | yallist "^4.0.0" 846 | 847 | make-dir@^3.0.0: 848 | version "3.1.0" 849 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 850 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 851 | dependencies: 852 | semver "^6.0.0" 853 | 854 | media-typer@0.3.0: 855 | version "0.3.0" 856 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 857 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 858 | 859 | merge-descriptors@1.0.1: 860 | version "1.0.1" 861 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 862 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 863 | 864 | methods@~1.1.2: 865 | version "1.1.2" 866 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 867 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 868 | 869 | mime-db@1.52.0: 870 | version "1.52.0" 871 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 872 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 873 | 874 | mime-types@~2.1.24, mime-types@~2.1.34: 875 | version "2.1.35" 876 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 877 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 878 | dependencies: 879 | mime-db "1.52.0" 880 | 881 | mime@1.6.0: 882 | version "1.6.0" 883 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 884 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 885 | 886 | mimic-response@^1.0.0, mimic-response@^1.0.1: 887 | version "1.0.1" 888 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 889 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 890 | 891 | minimatch@^3.0.4: 892 | version "3.1.2" 893 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 894 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 895 | dependencies: 896 | brace-expansion "^1.1.7" 897 | 898 | minimist@^1.2.0: 899 | version "1.2.6" 900 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 901 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 902 | 903 | ms@2.0.0: 904 | version "2.0.0" 905 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 906 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 907 | 908 | ms@2.1.2: 909 | version "2.1.2" 910 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 911 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 912 | 913 | ms@2.1.3, ms@^2.1.1: 914 | version "2.1.3" 915 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 916 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 917 | 918 | negotiator@0.6.3: 919 | version "0.6.3" 920 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 921 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 922 | 923 | node-fetch@^2.6.7: 924 | version "2.6.7" 925 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 926 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 927 | dependencies: 928 | whatwg-url "^5.0.0" 929 | 930 | nodemon@^2.0.16: 931 | version "2.0.16" 932 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.16.tgz#d71b31bfdb226c25de34afea53486c8ef225fdef" 933 | integrity sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w== 934 | dependencies: 935 | chokidar "^3.5.2" 936 | debug "^3.2.7" 937 | ignore-by-default "^1.0.1" 938 | minimatch "^3.0.4" 939 | pstree.remy "^1.1.8" 940 | semver "^5.7.1" 941 | supports-color "^5.5.0" 942 | touch "^3.1.0" 943 | undefsafe "^2.0.5" 944 | update-notifier "^5.1.0" 945 | 946 | nopt@~1.0.10: 947 | version "1.0.10" 948 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 949 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 950 | dependencies: 951 | abbrev "1" 952 | 953 | normalize-path@^3.0.0, normalize-path@~3.0.0: 954 | version "3.0.0" 955 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 956 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 957 | 958 | normalize-url@^4.1.0: 959 | version "4.5.1" 960 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 961 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 962 | 963 | object-inspect@^1.9.0: 964 | version "1.12.0" 965 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 966 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 967 | 968 | on-finished@2.4.1: 969 | version "2.4.1" 970 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 971 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 972 | dependencies: 973 | ee-first "1.1.1" 974 | 975 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 976 | version "1.4.0" 977 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 978 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 979 | dependencies: 980 | wrappy "1" 981 | 982 | p-cancelable@^1.0.0: 983 | version "1.1.0" 984 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 985 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 986 | 987 | package-json@^6.3.0: 988 | version "6.5.0" 989 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 990 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 991 | dependencies: 992 | got "^9.6.0" 993 | registry-auth-token "^4.0.0" 994 | registry-url "^5.0.0" 995 | semver "^6.2.0" 996 | 997 | parseurl@~1.3.3: 998 | version "1.3.3" 999 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1000 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1001 | 1002 | path-is-absolute@^1.0.0: 1003 | version "1.0.1" 1004 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1005 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1006 | 1007 | path-to-regexp@0.1.7: 1008 | version "0.1.7" 1009 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1010 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1011 | 1012 | picomatch@^2.0.4, picomatch@^2.2.1: 1013 | version "2.3.1" 1014 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1015 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1016 | 1017 | prepend-http@^2.0.0: 1018 | version "2.0.0" 1019 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 1020 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 1021 | 1022 | proxy-addr@~2.0.7: 1023 | version "2.0.7" 1024 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1025 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1026 | dependencies: 1027 | forwarded "0.2.0" 1028 | ipaddr.js "1.9.1" 1029 | 1030 | pstree.remy@^1.1.8: 1031 | version "1.1.8" 1032 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 1033 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 1034 | 1035 | pump@^3.0.0: 1036 | version "3.0.0" 1037 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1038 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1039 | dependencies: 1040 | end-of-stream "^1.1.0" 1041 | once "^1.3.1" 1042 | 1043 | pupa@^2.1.1: 1044 | version "2.1.1" 1045 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 1046 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== 1047 | dependencies: 1048 | escape-goat "^2.0.0" 1049 | 1050 | pvtsutils@^1.2.1, pvtsutils@^1.2.2: 1051 | version "1.2.2" 1052 | resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.2.2.tgz#62ef6bc0513cbc255ee02574dedeaa41272d6101" 1053 | integrity sha512-OALo5ZEdqiI127i64+CXwkCOyFHUA+tCQgaUO/MvRDFXWPr53f2sx28ECNztUEzuyu5xvuuD1EB/szg9mwJoGA== 1054 | dependencies: 1055 | tslib "^2.3.1" 1056 | 1057 | pvutils@^1.1.3: 1058 | version "1.1.3" 1059 | resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" 1060 | integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== 1061 | 1062 | qs@6.10.3: 1063 | version "6.10.3" 1064 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" 1065 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== 1066 | dependencies: 1067 | side-channel "^1.0.4" 1068 | 1069 | range-parser@~1.2.1: 1070 | version "1.2.1" 1071 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1072 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1073 | 1074 | raw-body@2.5.1: 1075 | version "2.5.1" 1076 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1077 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1078 | dependencies: 1079 | bytes "3.1.2" 1080 | http-errors "2.0.0" 1081 | iconv-lite "0.4.24" 1082 | unpipe "1.0.0" 1083 | 1084 | rc@^1.2.8: 1085 | version "1.2.8" 1086 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1087 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1088 | dependencies: 1089 | deep-extend "^0.6.0" 1090 | ini "~1.3.0" 1091 | minimist "^1.2.0" 1092 | strip-json-comments "~2.0.1" 1093 | 1094 | readdirp@~3.6.0: 1095 | version "3.6.0" 1096 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1097 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1098 | dependencies: 1099 | picomatch "^2.2.1" 1100 | 1101 | registry-auth-token@^4.0.0: 1102 | version "4.2.1" 1103 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" 1104 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== 1105 | dependencies: 1106 | rc "^1.2.8" 1107 | 1108 | registry-url@^5.0.0: 1109 | version "5.1.0" 1110 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 1111 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 1112 | dependencies: 1113 | rc "^1.2.8" 1114 | 1115 | responselike@^1.0.2: 1116 | version "1.0.2" 1117 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 1118 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 1119 | dependencies: 1120 | lowercase-keys "^1.0.0" 1121 | 1122 | rimraf@^3.0.2: 1123 | version "3.0.2" 1124 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1125 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1126 | dependencies: 1127 | glob "^7.1.3" 1128 | 1129 | safe-buffer@5.2.1: 1130 | version "5.2.1" 1131 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1132 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1133 | 1134 | "safer-buffer@>= 2.1.2 < 3": 1135 | version "2.1.2" 1136 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1137 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1138 | 1139 | semver-diff@^3.1.1: 1140 | version "3.1.1" 1141 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 1142 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 1143 | dependencies: 1144 | semver "^6.3.0" 1145 | 1146 | semver@^5.7.1: 1147 | version "5.7.1" 1148 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1149 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1150 | 1151 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 1152 | version "6.3.0" 1153 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1154 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1155 | 1156 | semver@^7.3.4: 1157 | version "7.3.7" 1158 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 1159 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 1160 | dependencies: 1161 | lru-cache "^6.0.0" 1162 | 1163 | send@0.18.0: 1164 | version "0.18.0" 1165 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1166 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1167 | dependencies: 1168 | debug "2.6.9" 1169 | depd "2.0.0" 1170 | destroy "1.2.0" 1171 | encodeurl "~1.0.2" 1172 | escape-html "~1.0.3" 1173 | etag "~1.8.1" 1174 | fresh "0.5.2" 1175 | http-errors "2.0.0" 1176 | mime "1.6.0" 1177 | ms "2.1.3" 1178 | on-finished "2.4.1" 1179 | range-parser "~1.2.1" 1180 | statuses "2.0.1" 1181 | 1182 | serve-static@1.15.0: 1183 | version "1.15.0" 1184 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1185 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1186 | dependencies: 1187 | encodeurl "~1.0.2" 1188 | escape-html "~1.0.3" 1189 | parseurl "~1.3.3" 1190 | send "0.18.0" 1191 | 1192 | setprototypeof@1.2.0: 1193 | version "1.2.0" 1194 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1195 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1196 | 1197 | side-channel@^1.0.4: 1198 | version "1.0.4" 1199 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1200 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1201 | dependencies: 1202 | call-bind "^1.0.0" 1203 | get-intrinsic "^1.0.2" 1204 | object-inspect "^1.9.0" 1205 | 1206 | signal-exit@^3.0.2: 1207 | version "3.0.7" 1208 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 1209 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 1210 | 1211 | statuses@2.0.1: 1212 | version "2.0.1" 1213 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1214 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1215 | 1216 | string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: 1217 | version "4.2.3" 1218 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1219 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1220 | dependencies: 1221 | emoji-regex "^8.0.0" 1222 | is-fullwidth-code-point "^3.0.0" 1223 | strip-ansi "^6.0.1" 1224 | 1225 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1226 | version "6.0.1" 1227 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1228 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1229 | dependencies: 1230 | ansi-regex "^5.0.1" 1231 | 1232 | strip-json-comments@~2.0.1: 1233 | version "2.0.1" 1234 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1235 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1236 | 1237 | supports-color@^5.5.0: 1238 | version "5.5.0" 1239 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1240 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1241 | dependencies: 1242 | has-flag "^3.0.0" 1243 | 1244 | supports-color@^7.1.0: 1245 | version "7.2.0" 1246 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1247 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1248 | dependencies: 1249 | has-flag "^4.0.0" 1250 | 1251 | to-readable-stream@^1.0.0: 1252 | version "1.0.0" 1253 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1254 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1255 | 1256 | to-regex-range@^5.0.1: 1257 | version "5.0.1" 1258 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1259 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1260 | dependencies: 1261 | is-number "^7.0.0" 1262 | 1263 | toidentifier@1.0.1: 1264 | version "1.0.1" 1265 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1266 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1267 | 1268 | touch@^3.1.0: 1269 | version "3.1.0" 1270 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1271 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1272 | dependencies: 1273 | nopt "~1.0.10" 1274 | 1275 | tr46@~0.0.3: 1276 | version "0.0.3" 1277 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1278 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 1279 | 1280 | tslib@^2.0.0, tslib@^2.3.1: 1281 | version "2.4.0" 1282 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" 1283 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1284 | 1285 | type-fest@^0.20.2: 1286 | version "0.20.2" 1287 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1288 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1289 | 1290 | type-is@~1.6.18: 1291 | version "1.6.18" 1292 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1293 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1294 | dependencies: 1295 | media-typer "0.3.0" 1296 | mime-types "~2.1.24" 1297 | 1298 | typedarray-to-buffer@^3.1.5: 1299 | version "3.1.5" 1300 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1301 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1302 | dependencies: 1303 | is-typedarray "^1.0.0" 1304 | 1305 | undefsafe@^2.0.5: 1306 | version "2.0.5" 1307 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 1308 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 1309 | 1310 | unique-string@^2.0.0: 1311 | version "2.0.0" 1312 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1313 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1314 | dependencies: 1315 | crypto-random-string "^2.0.0" 1316 | 1317 | unpipe@1.0.0, unpipe@~1.0.0: 1318 | version "1.0.0" 1319 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1320 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1321 | 1322 | update-notifier@^5.1.0: 1323 | version "5.1.0" 1324 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" 1325 | integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== 1326 | dependencies: 1327 | boxen "^5.0.0" 1328 | chalk "^4.1.0" 1329 | configstore "^5.0.1" 1330 | has-yarn "^2.1.0" 1331 | import-lazy "^2.1.0" 1332 | is-ci "^2.0.0" 1333 | is-installed-globally "^0.4.0" 1334 | is-npm "^5.0.0" 1335 | is-yarn-global "^0.3.0" 1336 | latest-version "^5.1.0" 1337 | pupa "^2.1.1" 1338 | semver "^7.3.4" 1339 | semver-diff "^3.1.1" 1340 | xdg-basedir "^4.0.0" 1341 | 1342 | url-parse-lax@^3.0.0: 1343 | version "3.0.0" 1344 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1345 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1346 | dependencies: 1347 | prepend-http "^2.0.0" 1348 | 1349 | utils-merge@1.0.1: 1350 | version "1.0.1" 1351 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1352 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1353 | 1354 | vary@~1.1.2: 1355 | version "1.1.2" 1356 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1357 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1358 | 1359 | webcrypto-core@^1.7.2: 1360 | version "1.7.3" 1361 | resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.3.tgz#58252c182c5fa88fd6b607b02b5246d087dbc6e3" 1362 | integrity sha512-8TnMtwwC/hQOyvElAOJ26lJKGgcErUG02KnKS1+QhjV4mDvQetVWU1EUEeLF8ICOrdc42+GypocyBJKRqo2kQg== 1363 | dependencies: 1364 | "@peculiar/asn1-schema" "^2.1.0" 1365 | "@peculiar/json-schema" "^1.1.12" 1366 | asn1js "^2.3.2" 1367 | pvtsutils "^1.2.2" 1368 | tslib "^2.3.1" 1369 | 1370 | webidl-conversions@^3.0.0: 1371 | version "3.0.1" 1372 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1373 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 1374 | 1375 | whatwg-url@^5.0.0: 1376 | version "5.0.0" 1377 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1378 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 1379 | dependencies: 1380 | tr46 "~0.0.3" 1381 | webidl-conversions "^3.0.0" 1382 | 1383 | widest-line@^3.1.0: 1384 | version "3.1.0" 1385 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1386 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1387 | dependencies: 1388 | string-width "^4.0.0" 1389 | 1390 | wrap-ansi@^7.0.0: 1391 | version "7.0.0" 1392 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1393 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1394 | dependencies: 1395 | ansi-styles "^4.0.0" 1396 | string-width "^4.1.0" 1397 | strip-ansi "^6.0.0" 1398 | 1399 | wrappy@1: 1400 | version "1.0.2" 1401 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1402 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1403 | 1404 | write-file-atomic@^3.0.0: 1405 | version "3.0.3" 1406 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1407 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1408 | dependencies: 1409 | imurmurhash "^0.1.4" 1410 | is-typedarray "^1.0.0" 1411 | signal-exit "^3.0.2" 1412 | typedarray-to-buffer "^3.1.5" 1413 | 1414 | xdg-basedir@^4.0.0: 1415 | version "4.0.0" 1416 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1417 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1418 | 1419 | yallist@^4.0.0: 1420 | version "4.0.0" 1421 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1422 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1423 | --------------------------------------------------------------------------------