From 217ff3cce9935215b8d34125402f2bcc9a99086a Mon Sep 17 00:00:00 2001 From: Vanessa Barreiros Date: Sun, 12 Nov 2023 12:17:44 -0300 Subject: [PATCH] Initial commit --- .eslintignore | 2 + .eslintrc | 50 + .github/actions/release-beta/action.yml | 5 + .github/actions/release-beta/dist/index.mjs | 17 + .github/actions/release-beta/package.json | 16 + .github/actions/release-beta/pnpm-lock.yaml | 232 + .github/actions/release-beta/src/index.mjs | 61 + .github/dependabot.yml | 11 + .github/img/banner.png | Bin 0 -> 124583 bytes .github/workflows/release-beta.yml | 50 + .github/workflows/release.yml | 47 + .github/workflows/test.yml | 22 + .github/workflows/update-assignees.yml | 17 + .gitignore | 24 + .husky/pre-commit | 4 + .npmrc | 1 + .nvmrc | 1 + .prettierignore | 10 + .prettierrc | 14 + LICENSE | 21 + LICENSE-GPL | 674 ++ README.md | 170 + jest.config.js | 206 + manifest.ts | 39 + package.json | 93 + pnpm-lock.yaml | 6815 +++++++++++++++++ postcss.config.js | 6 + public/icon-128.png | Bin 0 -> 666 bytes public/icon-34.png | Bin 0 -> 838 bytes public/icon-beta-128.png | Bin 0 -> 1911 bytes public/icon-beta-34.png | Bin 0 -> 678 bytes src/assets/img/logo.svg | 4 + src/assets/style/theme.scss | 17 + src/components/Check.tsx | 13 + src/components/ErrorBoundary.tsx | 19 + src/components/ErrorMessage.tsx | 7 + src/components/Footer.tsx | 21 + src/components/Progress.tsx | 16 + src/components/Section.tsx | 22 + src/components/Spinner.tsx | 24 + src/components/SpinnerWithText.tsx | 23 + src/components/Text.tsx | 21 + src/components/button/AsyncButton.tsx | 46 + src/components/button/DefaultButton.tsx | 49 + src/components/button/PrimaryButton.tsx | 10 + src/components/popup/DownloadBalances.tsx | 87 + src/components/popup/DownloadTransactions.tsx | 49 + src/components/popup/OtherResources.tsx | 15 + src/components/popup/PopupContainer.tsx | 155 + src/environment.d.ts | 10 + src/global.d.ts | 37 + src/pages/background/index.ts | 206 + src/pages/popup/Popup.tsx | 140 + src/pages/popup/context.ts | 20 + src/pages/popup/index.css | 16 + src/pages/popup/index.html | 14 + src/pages/popup/index.tsx | 18 + src/shared/constants/error.ts | 4 + src/shared/hoc/withErrorBoundary.tsx | 44 + src/shared/hoc/withSuspense.tsx | 14 + src/shared/hooks/useMessage.ts | 62 + src/shared/hooks/useStorage.tsx | 49 + src/shared/lib/__tests__/accounts.test.ts | 92 + src/shared/lib/__tests__/csv.test.ts | 15 + src/shared/lib/__tests__/promises.test.ts | 17 + src/shared/lib/__tests__/retry.test.ts | 43 + src/shared/lib/__tests__/transactions.test.ts | 46 + src/shared/lib/accounts.ts | 320 + src/shared/lib/auth.ts | 46 + src/shared/lib/constants.ts | 16 + src/shared/lib/csv.ts | 11 + src/shared/lib/delay.ts | 9 + src/shared/lib/events.ts | 27 + src/shared/lib/promises.ts | 42 + src/shared/lib/retry.ts | 42 + src/shared/lib/transactions.ts | 118 + src/shared/storages/apiKeyStorage.ts | 9 + src/shared/storages/base.ts | 96 + src/shared/storages/stateStorage.ts | 36 + src/vite-env.d.ts | 1 + tailwind.config.js | 95 + test-utils/jest.setup.js | 7 + tsconfig.json | 55 + utils/check-ext-status.cjs | 42 + utils/log.ts | 52 + utils/manifest-parser/index.ts | 35 + utils/plugins/add-hmr.ts | 47 + utils/plugins/custom-dynamic-import.ts | 19 + utils/plugins/make-manifest.ts | 61 + utils/plugins/watch-rebuild.ts | 16 + utils/reload/constant.ts | 5 + utils/reload/initReloadClient.ts | 52 + utils/reload/initReloadServer.ts | 65 + utils/reload/injections/script.ts | 12 + utils/reload/injections/view.ts | 29 + utils/reload/interpreter/index.ts | 13 + utils/reload/interpreter/types.ts | 15 + utils/reload/rollup.config.ts | 28 + utils/reload/utils.ts | 9 + vite.config.ts | 91 + 100 files changed, 11574 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .github/actions/release-beta/action.yml create mode 100644 .github/actions/release-beta/dist/index.mjs create mode 100644 .github/actions/release-beta/package.json create mode 100644 .github/actions/release-beta/pnpm-lock.yaml create mode 100644 .github/actions/release-beta/src/index.mjs create mode 100644 .github/dependabot.yml create mode 100644 .github/img/banner.png create mode 100644 .github/workflows/release-beta.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml create mode 100644 .github/workflows/update-assignees.yml create mode 100644 .gitignore create mode 100755 .husky/pre-commit create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 LICENSE create mode 100644 LICENSE-GPL create mode 100755 README.md create mode 100644 jest.config.js create mode 100755 manifest.ts create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 public/icon-128.png create mode 100644 public/icon-34.png create mode 100644 public/icon-beta-128.png create mode 100644 public/icon-beta-34.png create mode 100644 src/assets/img/logo.svg create mode 100644 src/assets/style/theme.scss create mode 100644 src/components/Check.tsx create mode 100644 src/components/ErrorBoundary.tsx create mode 100644 src/components/ErrorMessage.tsx create mode 100644 src/components/Footer.tsx create mode 100644 src/components/Progress.tsx create mode 100644 src/components/Section.tsx create mode 100644 src/components/Spinner.tsx create mode 100644 src/components/SpinnerWithText.tsx create mode 100644 src/components/Text.tsx create mode 100644 src/components/button/AsyncButton.tsx create mode 100644 src/components/button/DefaultButton.tsx create mode 100644 src/components/button/PrimaryButton.tsx create mode 100644 src/components/popup/DownloadBalances.tsx create mode 100644 src/components/popup/DownloadTransactions.tsx create mode 100644 src/components/popup/OtherResources.tsx create mode 100644 src/components/popup/PopupContainer.tsx create mode 100644 src/environment.d.ts create mode 100644 src/global.d.ts create mode 100644 src/pages/background/index.ts create mode 100644 src/pages/popup/Popup.tsx create mode 100644 src/pages/popup/context.ts create mode 100644 src/pages/popup/index.css create mode 100644 src/pages/popup/index.html create mode 100644 src/pages/popup/index.tsx create mode 100644 src/shared/constants/error.ts create mode 100644 src/shared/hoc/withErrorBoundary.tsx create mode 100644 src/shared/hoc/withSuspense.tsx create mode 100644 src/shared/hooks/useMessage.ts create mode 100644 src/shared/hooks/useStorage.tsx create mode 100644 src/shared/lib/__tests__/accounts.test.ts create mode 100644 src/shared/lib/__tests__/csv.test.ts create mode 100644 src/shared/lib/__tests__/promises.test.ts create mode 100644 src/shared/lib/__tests__/retry.test.ts create mode 100644 src/shared/lib/__tests__/transactions.test.ts create mode 100644 src/shared/lib/accounts.ts create mode 100644 src/shared/lib/auth.ts create mode 100644 src/shared/lib/constants.ts create mode 100644 src/shared/lib/csv.ts create mode 100644 src/shared/lib/delay.ts create mode 100644 src/shared/lib/events.ts create mode 100644 src/shared/lib/promises.ts create mode 100644 src/shared/lib/retry.ts create mode 100644 src/shared/lib/transactions.ts create mode 100644 src/shared/storages/apiKeyStorage.ts create mode 100644 src/shared/storages/base.ts create mode 100644 src/shared/storages/stateStorage.ts create mode 100644 src/vite-env.d.ts create mode 100644 tailwind.config.js create mode 100644 test-utils/jest.setup.js create mode 100644 tsconfig.json create mode 100644 utils/check-ext-status.cjs create mode 100644 utils/log.ts create mode 100644 utils/manifest-parser/index.ts create mode 100644 utils/plugins/add-hmr.ts create mode 100644 utils/plugins/custom-dynamic-import.ts create mode 100644 utils/plugins/make-manifest.ts create mode 100644 utils/plugins/watch-rebuild.ts create mode 100644 utils/reload/constant.ts create mode 100644 utils/reload/initReloadClient.ts create mode 100644 utils/reload/initReloadServer.ts create mode 100644 utils/reload/injections/script.ts create mode 100644 utils/reload/injections/view.ts create mode 100644 utils/reload/interpreter/index.ts create mode 100644 utils/reload/interpreter/types.ts create mode 100644 utils/reload/rollup.config.ts create mode 100644 utils/reload/utils.ts create mode 100644 vite.config.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..de4d1f0 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..ae4bd55 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,50 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended", + "plugin:import/recommended", + "plugin:jsx-a11y/recommended", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "react", + "@typescript-eslint", + "react-hooks", + "import", + "jsx-a11y", + "prettier" + ], + "settings": { + "react": { + "version": "detect" + } + }, + "rules": { + "react/react-in-jsx-scope": "off", + "import/no-unresolved": "off", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/ban-ts-comment": "warn" + }, + "globals": { + "chrome": "readonly" + }, + "ignorePatterns": [ + "watch.js", + "dist/**" + ] +} \ No newline at end of file diff --git a/.github/actions/release-beta/action.yml b/.github/actions/release-beta/action.yml new file mode 100644 index 0000000..dd5f51b --- /dev/null +++ b/.github/actions/release-beta/action.yml @@ -0,0 +1,5 @@ +name: Send Beta Version to Slack +description: This uploads the packed extension to a channel in Slack. +runs: + using: "node20" + main: "dist/index.mjs" \ No newline at end of file diff --git a/.github/actions/release-beta/dist/index.mjs b/.github/actions/release-beta/dist/index.mjs new file mode 100644 index 0000000..f334f76 --- /dev/null +++ b/.github/actions/release-beta/dist/index.mjs @@ -0,0 +1,17 @@ +import{createRequire as __WEBPACK_EXTERNAL_createRequire}from"module";var __webpack_modules__={1513:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;Object.defineProperty(e,i,{enumerable:true,get:function(){return t[A]}})}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.issue=t.issueCommand=void 0;const o=s(A(2037));const r=A(1120);function issueCommand(e,t,A){const i=new Command(e,t,A);process.stdout.write(i.toString()+o.EOL)}t.issueCommand=issueCommand;function issue(e,t=""){issueCommand(e,{},t)}t.issue=issue;const a="::";class Command{constructor(e,t,A){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=A}toString(){let e=a+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let t=true;for(const A in this.properties){if(this.properties.hasOwnProperty(A)){const i=this.properties[A];if(i){if(t){t=false}else{e+=","}e+=`${A}=${escapeProperty(i)}`}}}}e+=`${a}${escapeData(this.message)}`;return e}}function escapeData(e){return r.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return r.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},9093:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;Object.defineProperty(e,i,{enumerable:true,get:function(){return t[A]}})}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};var o=this&&this.__awaiter||function(e,t,A,i){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.getIDToken=t.getState=t.saveState=t.group=t.endGroup=t.startGroup=t.info=t.notice=t.warning=t.error=t.debug=t.isDebug=t.setFailed=t.setCommandEcho=t.setOutput=t.getBooleanInput=t.getMultilineInput=t.getInput=t.addPath=t.setSecret=t.exportVariable=t.ExitCode=void 0;const r=A(1513);const a=A(9017);const c=A(1120);const l=s(A(2037));const u=s(A(1017));const p=A(9141);var g;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(g=t.ExitCode||(t.ExitCode={}));function exportVariable(e,t){const A=c.toCommandValue(t);process.env[e]=A;const i=process.env["GITHUB_ENV"]||"";if(i){return a.issueFileCommand("ENV",a.prepareKeyValueMessage(e,t))}r.issueCommand("set-env",{name:e},A)}t.exportVariable=exportVariable;function setSecret(e){r.issueCommand("add-mask",{},e)}t.setSecret=setSecret;function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){a.issueFileCommand("PATH",e)}else{r.issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${u.delimiter}${process.env["PATH"]}`}t.addPath=addPath;function getInput(e,t){const A=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!A){throw new Error(`Input required and not supplied: ${e}`)}if(t&&t.trimWhitespace===false){return A}return A.trim()}t.getInput=getInput;function getMultilineInput(e,t){const A=getInput(e,t).split("\n").filter((e=>e!==""));if(t&&t.trimWhitespace===false){return A}return A.map((e=>e.trim()))}t.getMultilineInput=getMultilineInput;function getBooleanInput(e,t){const A=["true","True","TRUE"];const i=["false","False","FALSE"];const n=getInput(e,t);if(A.includes(n))return true;if(i.includes(n))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}t.getBooleanInput=getBooleanInput;function setOutput(e,t){const A=process.env["GITHUB_OUTPUT"]||"";if(A){return a.issueFileCommand("OUTPUT",a.prepareKeyValueMessage(e,t))}process.stdout.write(l.EOL);r.issueCommand("set-output",{name:e},c.toCommandValue(t))}t.setOutput=setOutput;function setCommandEcho(e){r.issue("echo",e?"on":"off")}t.setCommandEcho=setCommandEcho;function setFailed(e){process.exitCode=g.Failure;error(e)}t.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}t.isDebug=isDebug;function debug(e){r.issueCommand("debug",{},e)}t.debug=debug;function error(e,t={}){r.issueCommand("error",c.toCommandProperties(t),e instanceof Error?e.toString():e)}t.error=error;function warning(e,t={}){r.issueCommand("warning",c.toCommandProperties(t),e instanceof Error?e.toString():e)}t.warning=warning;function notice(e,t={}){r.issueCommand("notice",c.toCommandProperties(t),e instanceof Error?e.toString():e)}t.notice=notice;function info(e){process.stdout.write(e+l.EOL)}t.info=info;function startGroup(e){r.issue("group",e)}t.startGroup=startGroup;function endGroup(){r.issue("endgroup")}t.endGroup=endGroup;function group(e,t){return o(this,void 0,void 0,(function*(){startGroup(e);let A;try{A=yield t()}finally{endGroup()}return A}))}t.group=group;function saveState(e,t){const A=process.env["GITHUB_STATE"]||"";if(A){return a.issueFileCommand("STATE",a.prepareKeyValueMessage(e,t))}r.issueCommand("save-state",{name:e},c.toCommandValue(t))}t.saveState=saveState;function getState(e){return process.env[`STATE_${e}`]||""}t.getState=getState;function getIDToken(e){return o(this,void 0,void 0,(function*(){return yield p.OidcClient.getIDToken(e)}))}t.getIDToken=getIDToken;var d=A(5276);Object.defineProperty(t,"summary",{enumerable:true,get:function(){return d.summary}});var h=A(5276);Object.defineProperty(t,"markdownSummary",{enumerable:true,get:function(){return h.markdownSummary}});var E=A(670);Object.defineProperty(t,"toPosixPath",{enumerable:true,get:function(){return E.toPosixPath}});Object.defineProperty(t,"toWin32Path",{enumerable:true,get:function(){return E.toWin32Path}});Object.defineProperty(t,"toPlatformPath",{enumerable:true,get:function(){return E.toPlatformPath}})},9017:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;Object.defineProperty(e,i,{enumerable:true,get:function(){return t[A]}})}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.prepareKeyValueMessage=t.issueFileCommand=void 0;const o=s(A(7147));const r=s(A(2037));const a=A(7338);const c=A(1120);function issueFileCommand(e,t){const A=process.env[`GITHUB_${e}`];if(!A){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!o.existsSync(A)){throw new Error(`Missing file at path: ${A}`)}o.appendFileSync(A,`${c.toCommandValue(t)}${r.EOL}`,{encoding:"utf8"})}t.issueFileCommand=issueFileCommand;function prepareKeyValueMessage(e,t){const A=`ghadelimiter_${a.v4()}`;const i=c.toCommandValue(t);if(e.includes(A)){throw new Error(`Unexpected input: name should not contain the delimiter "${A}"`)}if(i.includes(A)){throw new Error(`Unexpected input: value should not contain the delimiter "${A}"`)}return`${e}<<${A}${r.EOL}${i}${r.EOL}${A}`}t.prepareKeyValueMessage=prepareKeyValueMessage},9141:function(e,t,A){var i=this&&this.__awaiter||function(e,t,A,i){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.OidcClient=void 0;const n=A(1759);const s=A(1366);const o=A(9093);class OidcClient{static createHttpClient(e=true,t=10){const A={allowRetries:e,maxRetries:t};return new n.HttpClient("actions/oidc-client",[new s.BearerCredentialHandler(OidcClient.getRequestToken())],A)}static getRequestToken(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable")}return e}static getIDTokenUrl(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable")}return e}static getCall(e){var t;return i(this,void 0,void 0,(function*(){const A=OidcClient.createHttpClient();const i=yield A.getJson(e).catch((e=>{throw new Error(`Failed to get ID Token. \n \n Error Code : ${e.statusCode}\n \n Error Message: ${e.message}`)}));const n=(t=i.result)===null||t===void 0?void 0:t.value;if(!n){throw new Error("Response json body do not have ID Token field")}return n}))}static getIDToken(e){return i(this,void 0,void 0,(function*(){try{let t=OidcClient.getIDTokenUrl();if(e){const A=encodeURIComponent(e);t=`${t}&audience=${A}`}o.debug(`ID token url is ${t}`);const A=yield OidcClient.getCall(t);o.setSecret(A);return A}catch(e){throw new Error(`Error message: ${e.message}`)}}))}}t.OidcClient=OidcClient},670:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;Object.defineProperty(e,i,{enumerable:true,get:function(){return t[A]}})}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.toPlatformPath=t.toWin32Path=t.toPosixPath=void 0;const o=s(A(1017));function toPosixPath(e){return e.replace(/[\\]/g,"/")}t.toPosixPath=toPosixPath;function toWin32Path(e){return e.replace(/[/]/g,"\\")}t.toWin32Path=toWin32Path;function toPlatformPath(e){return e.replace(/[/\\]/g,o.sep)}t.toPlatformPath=toPlatformPath},5276:function(e,t,A){var i=this&&this.__awaiter||function(e,t,A,i){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.summary=t.markdownSummary=t.SUMMARY_DOCS_URL=t.SUMMARY_ENV_VAR=void 0;const n=A(2037);const s=A(7147);const{access:o,appendFile:r,writeFile:a}=s.promises;t.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";t.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return i(this,void 0,void 0,(function*(){if(this._filePath){return this._filePath}const e=process.env[t.SUMMARY_ENV_VAR];if(!e){throw new Error(`Unable to find environment variable for $${t.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`)}try{yield o(e,s.constants.R_OK|s.constants.W_OK)}catch(t){throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}this._filePath=e;return this._filePath}))}wrap(e,t,A={}){const i=Object.entries(A).map((([e,t])=>` ${e}="${t}"`)).join("");if(!t){return`<${e}${i}>`}return`<${e}${i}>${t}`}write(e){return i(this,void 0,void 0,(function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const A=yield this.filePath();const i=t?a:r;yield i(A,this._buffer,{encoding:"utf8"});return this.emptyBuffer()}))}clear(){return i(this,void 0,void 0,(function*(){return this.emptyBuffer().write({overwrite:true})}))}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){this._buffer="";return this}addRaw(e,t=false){this._buffer+=e;return t?this.addEOL():this}addEOL(){return this.addRaw(n.EOL)}addCodeBlock(e,t){const A=Object.assign({},t&&{lang:t});const i=this.wrap("pre",this.wrap("code",e),A);return this.addRaw(i).addEOL()}addList(e,t=false){const A=t?"ol":"ul";const i=e.map((e=>this.wrap("li",e))).join("");const n=this.wrap(A,i);return this.addRaw(n).addEOL()}addTable(e){const t=e.map((e=>{const t=e.map((e=>{if(typeof e==="string"){return this.wrap("td",e)}const{header:t,data:A,colspan:i,rowspan:n}=e;const s=t?"th":"td";const o=Object.assign(Object.assign({},i&&{colspan:i}),n&&{rowspan:n});return this.wrap(s,A,o)})).join("");return this.wrap("tr",t)})).join("");const A=this.wrap("table",t);return this.addRaw(A).addEOL()}addDetails(e,t){const A=this.wrap("details",this.wrap("summary",e)+t);return this.addRaw(A).addEOL()}addImage(e,t,A){const{width:i,height:n}=A||{};const s=Object.assign(Object.assign({},i&&{width:i}),n&&{height:n});const o=this.wrap("img",null,Object.assign({src:e,alt:t},s));return this.addRaw(o).addEOL()}addHeading(e,t){const A=`h${t}`;const i=["h1","h2","h3","h4","h5","h6"].includes(A)?A:"h1";const n=this.wrap(i,e);return this.addRaw(n).addEOL()}addSeparator(){const e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){const e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,t){const A=Object.assign({},t&&{cite:t});const i=this.wrap("blockquote",e,A);return this.addRaw(i).addEOL()}addLink(e,t){const A=this.wrap("a",e,{href:t});return this.addRaw(A).addEOL()}}const c=new Summary;t.markdownSummary=c;t.summary=c},1120:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.toCommandProperties=t.toCommandValue=void 0;function toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}t.toCommandValue=toCommandValue;function toCommandProperties(e){if(!Object.keys(e).length){return{}}return{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}}t.toCommandProperties=toCommandProperties},1366:function(e,t){var A=this&&this.__awaiter||function(e,t,A,i){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.PersonalAccessTokenCredentialHandler=t.BearerCredentialHandler=t.BasicCredentialHandler=void 0;class BasicCredentialHandler{constructor(e,t){this.username=e;this.password=t}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return A(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BasicCredentialHandler=BasicCredentialHandler;class BearerCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Bearer ${this.token}`}canHandleAuthentication(){return false}handleAuthentication(){return A(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BearerCredentialHandler=BearerCredentialHandler;class PersonalAccessTokenCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return A(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.PersonalAccessTokenCredentialHandler=PersonalAccessTokenCredentialHandler},1759:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,i,n)}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.prototype.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};var o=this&&this.__awaiter||function(e,t,A,i){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.HttpClient=t.isHttps=t.HttpClientResponse=t.HttpClientError=t.getProxyUrl=t.MediaTypes=t.Headers=t.HttpCodes=void 0;const r=s(A(3685));const a=s(A(5687));const c=s(A(9379));const l=s(A(4225));const u=A(1663);var p;(function(e){e[e["OK"]=200]="OK";e[e["MultipleChoices"]=300]="MultipleChoices";e[e["MovedPermanently"]=301]="MovedPermanently";e[e["ResourceMoved"]=302]="ResourceMoved";e[e["SeeOther"]=303]="SeeOther";e[e["NotModified"]=304]="NotModified";e[e["UseProxy"]=305]="UseProxy";e[e["SwitchProxy"]=306]="SwitchProxy";e[e["TemporaryRedirect"]=307]="TemporaryRedirect";e[e["PermanentRedirect"]=308]="PermanentRedirect";e[e["BadRequest"]=400]="BadRequest";e[e["Unauthorized"]=401]="Unauthorized";e[e["PaymentRequired"]=402]="PaymentRequired";e[e["Forbidden"]=403]="Forbidden";e[e["NotFound"]=404]="NotFound";e[e["MethodNotAllowed"]=405]="MethodNotAllowed";e[e["NotAcceptable"]=406]="NotAcceptable";e[e["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";e[e["RequestTimeout"]=408]="RequestTimeout";e[e["Conflict"]=409]="Conflict";e[e["Gone"]=410]="Gone";e[e["TooManyRequests"]=429]="TooManyRequests";e[e["InternalServerError"]=500]="InternalServerError";e[e["NotImplemented"]=501]="NotImplemented";e[e["BadGateway"]=502]="BadGateway";e[e["ServiceUnavailable"]=503]="ServiceUnavailable";e[e["GatewayTimeout"]=504]="GatewayTimeout"})(p||(t.HttpCodes=p={}));var g;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(g||(t.Headers=g={}));var d;(function(e){e["ApplicationJson"]="application/json"})(d||(t.MediaTypes=d={}));function getProxyUrl(e){const t=c.getProxyUrl(new URL(e));return t?t.href:""}t.getProxyUrl=getProxyUrl;const h=[p.MovedPermanently,p.ResourceMoved,p.SeeOther,p.TemporaryRedirect,p.PermanentRedirect];const E=[p.BadGateway,p.ServiceUnavailable,p.GatewayTimeout];const C=["OPTIONS","GET","DELETE","HEAD"];const Q=10;const f=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}t.HttpClientError=HttpClientError;class HttpClientResponse{constructor(e){this.message=e}readBody(){return o(this,void 0,void 0,(function*(){return new Promise((e=>o(this,void 0,void 0,(function*(){let t=Buffer.alloc(0);this.message.on("data",(e=>{t=Buffer.concat([t,e])}));this.message.on("end",(()=>{e(t.toString())}))}))))}))}readBodyBuffer(){return o(this,void 0,void 0,(function*(){return new Promise((e=>o(this,void 0,void 0,(function*(){const t=[];this.message.on("data",(e=>{t.push(e)}));this.message.on("end",(()=>{e(Buffer.concat(t))}))}))))}))}}t.HttpClientResponse=HttpClientResponse;function isHttps(e){const t=new URL(e);return t.protocol==="https:"}t.isHttps=isHttps;class HttpClient{constructor(e,t,A){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=e;this.handlers=t||[];this.requestOptions=A;if(A){if(A.ignoreSslError!=null){this._ignoreSslError=A.ignoreSslError}this._socketTimeout=A.socketTimeout;if(A.allowRedirects!=null){this._allowRedirects=A.allowRedirects}if(A.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=A.allowRedirectDowngrade}if(A.maxRedirects!=null){this._maxRedirects=Math.max(A.maxRedirects,0)}if(A.keepAlive!=null){this._keepAlive=A.keepAlive}if(A.allowRetries!=null){this._allowRetries=A.allowRetries}if(A.maxRetries!=null){this._maxRetries=A.maxRetries}}}options(e,t){return o(this,void 0,void 0,(function*(){return this.request("OPTIONS",e,null,t||{})}))}get(e,t){return o(this,void 0,void 0,(function*(){return this.request("GET",e,null,t||{})}))}del(e,t){return o(this,void 0,void 0,(function*(){return this.request("DELETE",e,null,t||{})}))}post(e,t,A){return o(this,void 0,void 0,(function*(){return this.request("POST",e,t,A||{})}))}patch(e,t,A){return o(this,void 0,void 0,(function*(){return this.request("PATCH",e,t,A||{})}))}put(e,t,A){return o(this,void 0,void 0,(function*(){return this.request("PUT",e,t,A||{})}))}head(e,t){return o(this,void 0,void 0,(function*(){return this.request("HEAD",e,null,t||{})}))}sendStream(e,t,A,i){return o(this,void 0,void 0,(function*(){return this.request(e,t,A,i)}))}getJson(e,t={}){return o(this,void 0,void 0,(function*(){t[g.Accept]=this._getExistingOrDefaultHeader(t,g.Accept,d.ApplicationJson);const A=yield this.get(e,t);return this._processResponse(A,this.requestOptions)}))}postJson(e,t,A={}){return o(this,void 0,void 0,(function*(){const i=JSON.stringify(t,null,2);A[g.Accept]=this._getExistingOrDefaultHeader(A,g.Accept,d.ApplicationJson);A[g.ContentType]=this._getExistingOrDefaultHeader(A,g.ContentType,d.ApplicationJson);const n=yield this.post(e,i,A);return this._processResponse(n,this.requestOptions)}))}putJson(e,t,A={}){return o(this,void 0,void 0,(function*(){const i=JSON.stringify(t,null,2);A[g.Accept]=this._getExistingOrDefaultHeader(A,g.Accept,d.ApplicationJson);A[g.ContentType]=this._getExistingOrDefaultHeader(A,g.ContentType,d.ApplicationJson);const n=yield this.put(e,i,A);return this._processResponse(n,this.requestOptions)}))}patchJson(e,t,A={}){return o(this,void 0,void 0,(function*(){const i=JSON.stringify(t,null,2);A[g.Accept]=this._getExistingOrDefaultHeader(A,g.Accept,d.ApplicationJson);A[g.ContentType]=this._getExistingOrDefaultHeader(A,g.ContentType,d.ApplicationJson);const n=yield this.patch(e,i,A);return this._processResponse(n,this.requestOptions)}))}request(e,t,A,i){return o(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const n=new URL(t);let s=this._prepareRequest(e,n,i);const o=this._allowRetries&&C.includes(e)?this._maxRetries+1:1;let r=0;let a;do{a=yield this.requestRaw(s,A);if(a&&a.message&&a.message.statusCode===p.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(a)){e=t;break}}if(e){return e.handleAuthentication(this,s,A)}else{return a}}let t=this._maxRedirects;while(a.message.statusCode&&h.includes(a.message.statusCode)&&this._allowRedirects&&t>0){const o=a.message.headers["location"];if(!o){break}const r=new URL(o);if(n.protocol==="https:"&&n.protocol!==r.protocol&&!this._allowRedirectDowngrade){throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.")}yield a.readBody();if(r.hostname!==n.hostname){for(const e in i){if(e.toLowerCase()==="authorization"){delete i[e]}}}s=this._prepareRequest(e,r,i);a=yield this.requestRaw(s,A);t--}if(!a.message.statusCode||!E.includes(a.message.statusCode)){return a}r+=1;if(r{function callbackForResult(e,t){if(e){i(e)}else if(!t){i(new Error("Unknown error"))}else{A(t)}}this.requestRawWithCallback(e,t,callbackForResult)}))}))}requestRawWithCallback(e,t,A){if(typeof t==="string"){if(!e.options.headers){e.options.headers={}}e.options.headers["Content-Length"]=Buffer.byteLength(t,"utf8")}let i=false;function handleResult(e,t){if(!i){i=true;A(e,t)}}const n=e.httpModule.request(e.options,(e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)}));let s;n.on("socket",(e=>{s=e}));n.setTimeout(this._socketTimeout||3*6e4,(()=>{if(s){s.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))}));n.on("error",(function(e){handleResult(e)}));if(t&&typeof t==="string"){n.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",(function(){n.end()}));t.pipe(n)}else{n.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){const t=new URL(e);const A=c.getProxyUrl(t);const i=A&&A.hostname;if(!i){return}return this._getProxyAgentDispatcher(t,A)}_prepareRequest(e,t,A){const i={};i.parsedUrl=t;const n=i.parsedUrl.protocol==="https:";i.httpModule=n?a:r;const s=n?443:80;i.options={};i.options.host=i.parsedUrl.hostname;i.options.port=i.parsedUrl.port?parseInt(i.parsedUrl.port):s;i.options.path=(i.parsedUrl.pathname||"")+(i.parsedUrl.search||"");i.options.method=e;i.options.headers=this._mergeHeaders(A);if(this.userAgent!=null){i.options.headers["user-agent"]=this.userAgent}i.options.agent=this._getAgent(i.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(i.options)}}return i}_mergeHeaders(e){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(e||{}))}return lowercaseKeys(e||{})}_getExistingOrDefaultHeader(e,t,A){let i;if(this.requestOptions&&this.requestOptions.headers){i=lowercaseKeys(this.requestOptions.headers)[t]}return e[t]||i||A}_getAgent(e){let t;const A=c.getProxyUrl(e);const i=A&&A.hostname;if(this._keepAlive&&i){t=this._proxyAgent}if(this._keepAlive&&!i){t=this._agent}if(t){return t}const n=e.protocol==="https:";let s=100;if(this.requestOptions){s=this.requestOptions.maxSockets||r.globalAgent.maxSockets}if(A&&A.hostname){const e={maxSockets:s,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(A.username||A.password)&&{proxyAuth:`${A.username}:${A.password}`}),{host:A.hostname,port:A.port})};let i;const o=A.protocol==="https:";if(n){i=o?l.httpsOverHttps:l.httpsOverHttp}else{i=o?l.httpOverHttps:l.httpOverHttp}t=i(e);this._proxyAgent=t}if(this._keepAlive&&!t){const e={keepAlive:this._keepAlive,maxSockets:s};t=n?new a.Agent(e):new r.Agent(e);this._agent=t}if(!t){t=n?a.globalAgent:r.globalAgent}if(n&&this._ignoreSslError){t.options=Object.assign(t.options||{},{rejectUnauthorized:false})}return t}_getProxyAgentDispatcher(e,t){let A;if(this._keepAlive){A=this._proxyAgentDispatcher}if(A){return A}const i=e.protocol==="https:";A=new u.ProxyAgent(Object.assign({uri:t.href,pipelining:!this._keepAlive?0:1},(t.username||t.password)&&{token:`${t.username}:${t.password}`}));this._proxyAgentDispatcher=A;if(i&&this._ignoreSslError){A.options=Object.assign(A.options.requestTls||{},{rejectUnauthorized:false})}return A}_performExponentialBackoff(e){return o(this,void 0,void 0,(function*(){e=Math.min(Q,e);const t=f*Math.pow(2,e);return new Promise((e=>setTimeout((()=>e()),t)))}))}_processResponse(e,t){return o(this,void 0,void 0,(function*(){return new Promise(((A,i)=>o(this,void 0,void 0,(function*(){const n=e.message.statusCode||0;const s={statusCode:n,result:null,headers:{}};if(n===p.NotFound){A(s)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let o;let r;try{r=yield e.readBody();if(r&&r.length>0){if(t&&t.deserializeDates){o=JSON.parse(r,dateTimeDeserializer)}else{o=JSON.parse(r)}s.result=o}s.headers=e.message.headers}catch(e){}if(n>299){let e;if(o&&o.message){e=o.message}else if(r&&r.length>0){e=r}else{e=`Failed request: (${n})`}const t=new HttpClientError(e,n);t.result=s.result;i(t)}else{A(s)}}))))}))}}t.HttpClient=HttpClient;const lowercaseKeys=e=>Object.keys(e).reduce(((t,A)=>(t[A.toLowerCase()]=e[A],t)),{})},9379:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.checkBypass=t.getProxyUrl=void 0;function getProxyUrl(e){const t=e.protocol==="https:";if(checkBypass(e)){return undefined}const A=(()=>{if(t){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(A){try{return new URL(A)}catch(e){if(!A.startsWith("http://")&&!A.startsWith("https://"))return new URL(`http://${A}`)}}else{return undefined}}t.getProxyUrl=getProxyUrl;function checkBypass(e){if(!e.hostname){return false}const t=e.hostname;if(isLoopbackAddress(t)){return true}const A=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!A){return false}let i;if(e.port){i=Number(e.port)}else if(e.protocol==="http:"){i=80}else if(e.protocol==="https:"){i=443}const n=[e.hostname.toUpperCase()];if(typeof i==="number"){n.push(`${n[0]}:${i}`)}for(const e of A.split(",").map((e=>e.trim().toUpperCase())).filter((e=>e))){if(e==="*"||n.some((t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`)))){return true}}return false}t.checkBypass=checkBypass;function isLoopbackAddress(e){const t=e.toLowerCase();return t==="localhost"||t.startsWith("127.")||t.startsWith("[::1]")||t.startsWith("[0:0:0:0:0:0:0:1]")}},5527:(e,t,A)=>{const i=A(4492).Writable;const n=A(7261).inherits;const s=A(4533);const o=A(8593);const r=A(4722);const a=45;const c=Buffer.from("-");const l=Buffer.from("\r\n");const EMPTY_FN=function(){};function Dicer(e){if(!(this instanceof Dicer)){return new Dicer(e)}i.call(this,e);if(!e||!e.headerFirst&&typeof e.boundary!=="string"){throw new TypeError("Boundary required")}if(typeof e.boundary==="string"){this.setBoundary(e.boundary)}else{this._bparser=undefined}this._headerFirst=e.headerFirst;this._dashes=0;this._parts=0;this._finished=false;this._realFinish=false;this._isPreamble=true;this._justMatched=false;this._firstWrite=true;this._inHeader=true;this._part=undefined;this._cb=undefined;this._ignoreData=false;this._partOpts={highWaterMark:e.partHwm};this._pause=false;const t=this;this._hparser=new r(e);this._hparser.on("header",(function(e){t._inHeader=false;t._part.emit("header",e)}))}n(Dicer,i);Dicer.prototype.emit=function(e){if(e==="finish"&&!this._realFinish){if(!this._finished){const e=this;process.nextTick((function(){e.emit("error",new Error("Unexpected end of multipart data"));if(e._part&&!e._ignoreData){const t=e._isPreamble?"Preamble":"Part";e._part.emit("error",new Error(t+" terminated early due to unexpected end of multipart data"));e._part.push(null);process.nextTick((function(){e._realFinish=true;e.emit("finish");e._realFinish=false}));return}e._realFinish=true;e.emit("finish");e._realFinish=false}))}}else{i.prototype.emit.apply(this,arguments)}};Dicer.prototype._write=function(e,t,A){if(!this._hparser&&!this._bparser){return A()}if(this._headerFirst&&this._isPreamble){if(!this._part){this._part=new o(this._partOpts);if(this._events.preamble){this.emit("preamble",this._part)}else{this._ignore()}}const t=this._hparser.push(e);if(!this._inHeader&&t!==undefined&&t{const i=A(5673).EventEmitter;const n=A(7261).inherits;const s=A(2222);const o=A(4533);const r=Buffer.from("\r\n\r\n");const a=/\r\n/g;const c=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function HeaderParser(e){i.call(this);e=e||{};const t=this;this.nread=0;this.maxed=false;this.npairs=0;this.maxHeaderPairs=s(e,"maxHeaderPairs",2e3);this.maxHeaderSize=s(e,"maxHeaderSize",80*1024);this.buffer="";this.header={};this.finished=false;this.ss=new o(r);this.ss.on("info",(function(e,A,i,n){if(A&&!t.maxed){if(t.nread+n-i>=t.maxHeaderSize){n=t.maxHeaderSize-t.nread+i;t.nread=t.maxHeaderSize;t.maxed=true}else{t.nread+=n-i}t.buffer+=A.toString("binary",i,n)}if(e){t._finish()}}))}n(HeaderParser,i);HeaderParser.prototype.push=function(e){const t=this.ss.push(e);if(this.finished){return t}};HeaderParser.prototype.reset=function(){this.finished=false;this.buffer="";this.header={};this.ss.reset()};HeaderParser.prototype._finish=function(){if(this.buffer){this._parseHeader()}this.ss.matches=this.ss.maxMatches;const e=this.header;this.header={};this.buffer="";this.finished=true;this.nread=this.npairs=0;this.maxed=false;this.emit("header",e)};HeaderParser.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs){return}const e=this.buffer.split(a);const t=e.length;let A,i;for(var n=0;n{const i=A(7261).inherits;const n=A(4492).Readable;function PartStream(e){n.call(this,e)}i(PartStream,n);PartStream.prototype._read=function(e){};e.exports=PartStream},4533:(e,t,A)=>{const i=A(5673).EventEmitter;const n=A(7261).inherits;function SBMH(e){if(typeof e==="string"){e=Buffer.from(e)}if(!Buffer.isBuffer(e)){throw new TypeError("The needle has to be a String or a Buffer.")}const t=e.length;if(t===0){throw new Error("The needle cannot be an empty String/Buffer.")}if(t>256){throw new Error("The needle cannot have a length bigger than 256.")}this.maxMatches=Infinity;this.matches=0;this._occ=new Array(256).fill(t);this._lookbehind_size=0;this._needle=e;this._bufpos=0;this._lookbehind=Buffer.alloc(t);for(var A=0;A=0){this.emit("info",false,this._lookbehind,0,this._lookbehind_size);this._lookbehind_size=0}else{const A=this._lookbehind_size+s;if(A>0){this.emit("info",false,this._lookbehind,0,A)}this._lookbehind.copy(this._lookbehind,0,A,this._lookbehind_size-A);this._lookbehind_size-=A;e.copy(this._lookbehind,this._lookbehind_size);this._lookbehind_size+=t;this._bufpos=t;return t}}s+=(s>=0)*this._bufpos;if(e.indexOf(A,s)!==-1){s=e.indexOf(A,s);++this.matches;if(s>0){this.emit("info",true,e,this._bufpos,s)}else{this.emit("info",true)}return this._bufpos=s+i}else{s=t-i}while(s0){this.emit("info",false,e,this._bufpos,s{const i=A(4492).Writable;const{inherits:n}=A(7261);const s=A(5527);const o=A(1481);const r=A(192);const a=A(7571);function Busboy(e){if(!(this instanceof Busboy)){return new Busboy(e)}if(typeof e!=="object"){throw new TypeError("Busboy expected an options-Object.")}if(typeof e.headers!=="object"){throw new TypeError("Busboy expected an options-Object with headers-attribute.")}if(typeof e.headers["content-type"]!=="string"){throw new TypeError("Missing Content-Type-header.")}const{headers:t,...A}=e;this.opts={autoDestroy:false,...A};i.call(this,this.opts);this._done=false;this._parser=this.getParserByHeaders(t);this._finished=false}n(Busboy,i);Busboy.prototype.emit=function(e){if(e==="finish"){if(!this._done){this._parser?.end();return}else if(this._finished){return}this._finished=true}i.prototype.emit.apply(this,arguments)};Busboy.prototype.getParserByHeaders=function(e){const t=a(e["content-type"]);const A={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:e,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:t,preservePath:this.opts.preservePath};if(o.detect.test(t[0])){return new o(this,A)}if(r.detect.test(t[0])){return new r(this,A)}throw new Error("Unsupported Content-Type.")};Busboy.prototype._write=function(e,t,A){this._parser.write(e,A)};e.exports=Busboy;e.exports["default"]=Busboy;e.exports.Busboy=Busboy;e.exports.Dicer=s},1481:(e,t,A)=>{const{Readable:i}=A(4492);const{inherits:n}=A(7261);const s=A(5527);const o=A(7571);const r=A(9989);const a=A(6290);const c=A(2222);const l=/^boundary$/i;const u=/^form-data$/i;const p=/^charset$/i;const g=/^filename$/i;const d=/^name$/i;Multipart.detect=/^multipart\/form-data/i;function Multipart(e,t){let A;let i;const n=this;let h;const E=t.limits;const C=t.isPartAFile||((e,t,A)=>t==="application/octet-stream"||A!==undefined);const Q=t.parsedConType||[];const f=t.defCharset||"utf8";const B=t.preservePath;const I={highWaterMark:t.fileHwm};for(A=0,i=Q.length;Av){n.parser.removeListener("part",onPart);n.parser.on("part",skipPart);e.hitPartsLimit=true;e.emit("partsLimit");return skipPart(t)}if(N){const e=N;e.emit("end");e.removeAllListeners("end")}t.on("header",(function(s){let c;let l;let h;let E;let Q;let v;let R=0;if(s["content-type"]){h=o(s["content-type"][0]);if(h[0]){c=h[0].toLowerCase();for(A=0,i=h.length;Ab){const i=b-R+e.length;if(i>0){A.push(e.slice(0,i))}A.truncated=true;A.bytesRead=b;t.removeAllListeners("data");A.emit("limit");return}else if(!A.push(e)){n._pause=true}A.bytesRead=R};U=function(){S=undefined;A.push(null)}}else{if(k===w){if(!e.hitFieldsLimit){e.hitFieldsLimit=true;e.emit("fieldsLimit")}return skipPart(t)}++k;++F;let A="";let i=false;N=t;x=function(e){if((R+=e.length)>m){const n=m-(R-e.length);A+=e.toString("binary",0,n);i=true;t.removeAllListeners("data")}else{A+=e.toString("binary")}};U=function(){N=undefined;if(A.length){A=r(A,"binary",E)}e.emit("field",l,A,false,i,Q,c);--F;checkFinished()}}t._readableState.sync=false;t.on("data",x);t.on("end",U)})).on("error",(function(e){if(S){S.emit("error",e)}}))})).on("error",(function(t){e.emit("error",t)})).on("finish",(function(){U=true;checkFinished()}))}Multipart.prototype.write=function(e,t){const A=this.parser.write(e);if(A&&!this._pause){t()}else{this._needDrain=!A;this._cb=t}};Multipart.prototype.end=function(){const e=this;if(e.parser.writable){e.parser.end()}else if(!e._boy._done){process.nextTick((function(){e._boy._done=true;e._boy.emit("finish")}))}};function skipPart(e){e.resume()}function FileStream(e){i.call(this,e);this.bytesRead=0;this.truncated=false}n(FileStream,i);FileStream.prototype._read=function(e){};e.exports=Multipart},192:(e,t,A)=>{const i=A(4872);const n=A(9989);const s=A(2222);const o=/^charset$/i;UrlEncoded.detect=/^application\/x-www-form-urlencoded/i;function UrlEncoded(e,t){const A=t.limits;const n=t.parsedConType;this.boy=e;this.fieldSizeLimit=s(A,"fieldSize",1*1024*1024);this.fieldNameSizeLimit=s(A,"fieldNameSize",100);this.fieldsLimit=s(A,"fields",Infinity);let r;for(var a=0,c=n.length;ao){this._key+=this.decoder.write(e.toString("binary",o,A))}this._state="val";this._hitLimit=false;this._checkingBytes=true;this._val="";this._bytesVal=0;this._valTrunc=false;this.decoder.reset();o=A+1}else if(i!==undefined){++this._fields;let A;const s=this._keyTrunc;if(i>o){A=this._key+=this.decoder.write(e.toString("binary",o,i))}else{A=this._key}this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();if(A.length){this.boy.emit("field",n(A,"binary",this.charset),"",s,false)}o=i+1;if(this._fields===this.fieldsLimit){return t()}}else if(this._hitLimit){if(s>o){this._key+=this.decoder.write(e.toString("binary",o,s))}o=s;if((this._bytesKey=this._key.length)===this.fieldNameSizeLimit){this._checkingBytes=false;this._keyTrunc=true}}else{if(oo){this._val+=this.decoder.write(e.toString("binary",o,i))}this.boy.emit("field",n(this._key,"binary",this.charset),n(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc);this._state="key";this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();o=i+1;if(this._fields===this.fieldsLimit){return t()}}else if(this._hitLimit){if(s>o){this._val+=this.decoder.write(e.toString("binary",o,s))}o=s;if(this._val===""&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit){this._checkingBytes=false;this._valTrunc=true}}else{if(o0){this.boy.emit("field",n(this._key,"binary",this.charset),"",this._keyTrunc,false)}else if(this._state==="val"){this.boy.emit("field",n(this._key,"binary",this.charset),n(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc)}this.boy._done=true;this.boy.emit("finish")};e.exports=UrlEncoded},4872:e=>{const t=/\+/g;const A=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function Decoder(){this.buffer=undefined}Decoder.prototype.write=function(e){e=e.replace(t," ");let i="";let n=0;let s=0;const o=e.length;for(;ns){i+=e.substring(s,n);s=n}this.buffer="";++s}}if(s{e.exports=function basename(e){if(typeof e!=="string"){return""}for(var t=e.length-1;t>=0;--t){switch(e.charCodeAt(t)){case 47:case 92:e=e.slice(t+1);return e===".."||e==="."?"":e}}return e===".."||e==="."?"":e}},9989:e=>{const t=new TextDecoder("utf-8");const A=new Map([["utf-8",t],["utf8",t]]);function decodeText(e,t,i){if(e){if(A.has(i)){try{return A.get(i).decode(Buffer.from(e,t))}catch(e){}}else{try{A.set(i,new TextDecoder(i));return A.get(i).decode(Buffer.from(e,t))}catch(e){}}}return e}e.exports=decodeText},2222:e=>{e.exports=function getLimit(e,t,A){if(!e||e[t]===undefined||e[t]===null){return A}if(typeof e[t]!=="number"||isNaN(e[t])){throw new TypeError("Limit "+t+" is not a valid number")}return e[t]}},7571:(e,t,A)=>{const i=A(9989);const n=/%([a-fA-F0-9]{2})/g;function encodedReplacer(e,t){return String.fromCharCode(parseInt(t,16))}function parseParams(e){const t=[];let A="key";let s="";let o=false;let r=false;let a=0;let c="";for(var l=0,u=e.length;l{Object.defineProperty(t,"__esModule",{value:true});t.ConsoleLogger=t.LogLevel=void 0;var A;(function(e){e["ERROR"]="error";e["WARN"]="warn";e["INFO"]="info";e["DEBUG"]="debug"})(A=t.LogLevel||(t.LogLevel={}));class ConsoleLogger{constructor(){this.level=A.INFO;this.name=""}getLevel(){return this.level}setLevel(e){this.level=e}setName(e){this.name=e}debug(...e){if(ConsoleLogger.isMoreOrEqualSevere(A.DEBUG,this.level)){console.debug(ConsoleLogger.labels.get(A.DEBUG),this.name,...e)}}info(...e){if(ConsoleLogger.isMoreOrEqualSevere(A.INFO,this.level)){console.info(ConsoleLogger.labels.get(A.INFO),this.name,...e)}}warn(...e){if(ConsoleLogger.isMoreOrEqualSevere(A.WARN,this.level)){console.warn(ConsoleLogger.labels.get(A.WARN),this.name,...e)}}error(...e){if(ConsoleLogger.isMoreOrEqualSevere(A.ERROR,this.level)){console.error(ConsoleLogger.labels.get(A.ERROR),this.name,...e)}}static isMoreOrEqualSevere(e,t){return ConsoleLogger.severity[e]>=ConsoleLogger.severity[t]}}t.ConsoleLogger=ConsoleLogger;ConsoleLogger.labels=(()=>{const e=Object.entries(A);const t=e.map((([e,t])=>[t,`[${e}] `]));return new Map(t)})();ConsoleLogger.severity={[A.ERROR]:400,[A.WARN]:300,[A.INFO]:200,[A.DEBUG]:100}},9428:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},2306:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},8525:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},6911:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},2807:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},3836:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},5880:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,i,n)}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__exportStar||function(e,t){for(var A in e)if(A!=="default"&&!Object.prototype.hasOwnProperty.call(t,A))i(t,e,A)};Object.defineProperty(t,"__esModule",{value:true});n(A(2807),t);n(A(3836),t);n(A(7921),t);n(A(5968),t);n(A(3799),t);n(A(2306),t);n(A(8525),t);n(A(9428),t);n(A(6911),t)},5968:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},7921:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},3799:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},9689:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,i,n)}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.prototype.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};var o=this&&this.__await||function(e){return this instanceof o?(this.v=e,this):new o(e)};var r=this&&this.__asyncGenerator||function(e,t,A){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=A.apply(e,t||[]),n,s=[];return n={},verb("next"),verb("throw"),verb("return"),n[Symbol.asyncIterator]=function(){return this},n;function verb(e){if(i[e])n[e]=function(t){return new Promise((function(A,i){s.push([e,t,A,i])>1||resume(e,t)}))}}function resume(e,t){try{step(i[e](t))}catch(e){settle(s[0][3],e)}}function step(e){e.value instanceof o?Promise.resolve(e.value.v).then(fulfill,reject):settle(s[0][2],e)}function fulfill(e){resume("next",e)}function reject(e){resume("throw",e)}function settle(e,t){if(e(t),s.shift(),s.length)resume(s[0][0],s[0][1])}};var a=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],A;return t?t.call(e):(e=typeof __values==="function"?__values(e):e[Symbol.iterator](),A={},verb("next"),verb("throw"),verb("return"),A[Symbol.asyncIterator]=function(){return this},A);function verb(t){A[t]=e[t]&&function(A){return new Promise((function(i,n){A=e[t](A),settle(i,n,A.done,A.value)}))}}function settle(e,t,A,i){Promise.resolve(i).then((function(t){e({value:t,done:A})}),t)}};var c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.buildThreadTsWarningMessage=t.WebClient=t.WebClientEvent=void 0;const l=A(3477);const u=A(1017);const p=c(A(9796));const g=A(3837);const d=c(A(1646));const h=c(A(7114));const E=s(A(6364));const C=c(A(825));const Q=c(A(4867));const f=c(A(1152));const B=A(9258);const I=A(5917);const m=A(4019);const b=A(7752);const y=A(3516);const w=c(A(9289));const v=A(4846);const R="Untitled";const x=200;const noopPageReducer=()=>undefined;var D;(function(e){e["RATE_LIMITED"]="rate_limited"})(D=t.WebClientEvent||(t.WebClientEvent={}));class WebClient extends B.Methods{constructor(e,{slackApiUrl:t="https://slack.com/api/",logger:A=undefined,logLevel:i=undefined,maxRequestConcurrency:n=100,retryConfig:s=y.tenRetriesInAboutThirtyMinutes,agent:o=undefined,tls:r=undefined,timeout:a=0,rejectRateLimitedCalls:c=false,headers:l={},teamId:u=undefined}={}){super();this.token=e;this.slackApiUrl=t;this.retryConfig=s;this.requestQueue=new h.default({concurrency:n});this.tlsConfig=r!==undefined?r:{};this.rejectRateLimitedCalls=c;this.teamId=u;if(typeof A!=="undefined"){this.logger=A;if(typeof i!=="undefined"){this.logger.debug("The logLevel given to WebClient was ignored as you also gave logger")}}else{this.logger=(0,b.getLogger)(WebClient.loggerName,i!==null&&i!==void 0?i:b.LogLevel.INFO,A)}if(this.token&&!l.Authorization)l.Authorization=`Bearer ${this.token}`;this.axios=C.default.create({timeout:a,baseURL:t,headers:(0,f.default)()?l:Object.assign({"User-Agent":(0,I.getUserAgent)()},l),httpAgent:o,httpsAgent:o,transformRequest:[this.serializeApiCallOptions.bind(this)],validateStatus:()=>true,maxRedirects:0,proxy:false});delete this.axios.defaults.headers.post["Content-Type"];this.logger.debug("initialized")}async apiCall(e,t={}){this.logger.debug(`apiCall('${e}') start`);warnDeprecations(e,this.logger);warnIfFallbackIsMissing(e,this.logger,t);warnIfThreadTsIsNotString(e,this.logger,t);if(typeof t==="string"||typeof t==="number"||typeof t==="boolean"){throw new TypeError(`Expected an options argument but instead received a ${typeof t}`)}(0,v.warnIfNotUsingFilesUploadV2)(e,this.logger);if(e==="files.uploadV2")return this.filesUploadV2(t);const A={};if(t.token)A.Authorization=`Bearer ${t.token}`;const i=await this.makeRequest(e,Object.assign({team_id:this.teamId},t),A);const n=await this.buildResult(i);this.logger.debug(`http request result: ${JSON.stringify(n)}`);if(n.response_metadata!==undefined&&n.response_metadata.warnings!==undefined){n.response_metadata.warnings.forEach(this.logger.warn.bind(this.logger))}if(n.response_metadata!==undefined&&n.response_metadata.messages!==undefined){n.response_metadata.messages.forEach((e=>{const t=/\[ERROR\](.*)/;const A=/\[WARN\](.*)/;if(t.test(e)){const A=e.match(t);if(A!=null){this.logger.error(A[1].trim())}}else if(A.test(e)){const t=e.match(A);if(t!=null){this.logger.warn(t[1].trim())}}}))}if(!n.ok&&i.headers["content-type"]!=="application/gzip"){throw(0,m.platformErrorFromResult)(n)}else if("ok"in n&&n.ok===false){throw(0,m.platformErrorFromResult)(n)}this.logger.debug(`apiCall('${e}') end`);return n}paginate(e,t,A,i){if(!B.cursorPaginationEnabledMethods.has(e)){this.logger.warn(`paginate() called with method ${e}, which is not known to be cursor pagination enabled.`)}const n=(()=>{if(t!==undefined&&typeof t.limit==="number"){const{limit:e}=t;delete t.limit;return e}return x})();function generatePages(){return r(this,arguments,(function*generatePages_1(){let A;let i={limit:n};if(t!==undefined&&t.cursor!==undefined){i.cursor=t.cursor}while(A===undefined||i!==undefined){A=yield o(this.apiCall(e,Object.assign(t!==undefined?t:{},i)));yield yield o(A);i=paginationOptionsForNextPage(A,n)}}))}if(A===undefined){return generatePages.call(this)}const s=i!==undefined?i:noopPageReducer;let c=0;return(async()=>{var e,t,i,n;const o=generatePages.call(this);const r=await o.next(undefined);const l=r.value;let u=s(undefined,l,c);c+=1;if(A(l)){return u}try{for(var p=true,g=a(o),d;d=await g.next(),e=d.done,!e;){n=d.value;p=false;try{const e=n;u=s(u,e,c);if(A(e)){return u}c+=1}finally{p=true}}}catch(e){t={error:e}}finally{try{if(!p&&!e&&(i=g.return))await i.call(g)}finally{if(t)throw t.error}}return u})()}async filesUploadV2(e){this.logger.debug("files.uploadV2() start");const t=await this.getAllFileUploads(e);const A=await this.fetchAllUploadURLExternal(t);A.forEach(((e,A)=>{t[A].upload_url=e.upload_url;t[A].file_id=e.file_id}));await this.postFileUploadsToExternalURL(t,e);const i=await this.completeFileUploads(t);return{ok:true,files:i}}async fetchAllUploadURLExternal(e){return Promise.all(e.map((e=>{const t={filename:e.filename,length:e.length,alt_text:e.alt_text,snippet_type:e.snippet_type};return this.files.getUploadURLExternal(t)})))}async completeFileUploads(e){const t=Object.values((0,v.getAllFileUploadsToComplete)(e));return Promise.all(t.map((e=>this.files.completeUploadExternal(e))))}async postFileUploadsToExternalURL(e,t){return Promise.all(e.map((async e=>{const{upload_url:A,file_id:i,filename:n,data:s}=e;const o=s;if(A){const e={};if(t.token)e.Authorization=`Bearer ${t.token}`;const s=await this.makeRequest(A,{body:o},e);if(s.status!==200){return Promise.reject(Error(`Failed to upload file (id:${i}, filename: ${n})`))}const r={ok:true,body:s.data};return Promise.resolve(r)}return Promise.reject(Error(`No upload url found for file (id: ${i}, filename: ${n}`))})))}async getAllFileUploads(e){let t=[];if(e.file||e.content){t.push(await(0,v.getFileUploadJob)(e,this.logger))}if(e.file_uploads){t=t.concat(await(0,v.getMultipleFileUploadJobs)(e,this.logger))}return t}async makeRequest(e,t,A={}){const task=()=>this.requestQueue.add((async()=>{const i=e.startsWith("https"||0)?e:`${this.axios.getUri()+e}`;this.logger.debug(`http request url: ${i}`);this.logger.debug(`http request body: ${JSON.stringify(redact(t))}`);this.logger.debug(`http request headers: ${JSON.stringify(redact(A))}`);try{const i=Object.assign({headers:A},this.tlsConfig);if(e.endsWith("admin.analytics.getFile")){i.responseType="arraybuffer"}const n=await this.axios.post(e,t,i);this.logger.debug("http response received");if(n.status===429){const A=parseRetryHeaders(n);if(A!==undefined){this.emit(D.RATE_LIMITED,A,{url:e,body:t});if(this.rejectRateLimitedCalls){throw new E.AbortError((0,m.rateLimitedErrorWithDelay)(A))}this.logger.info(`API Call failed due to rate limiting. Will retry in ${A} seconds.`);this.requestQueue.pause();await(0,w.default)(A*1e3);this.requestQueue.start();throw Error(`A rate limit was exceeded (url: ${e}, retry-after: ${A})`)}else{throw new E.AbortError(new Error(`Retry header did not contain a valid timeout (url: ${e}, retry-after header: ${n.headers["retry-after"]})`))}}if(n.status!==200){throw(0,m.httpErrorFromResponse)(n)}return n}catch(e){const t=e;this.logger.warn("http request failed",t.message);if(t.request){throw(0,m.requestErrorWithOriginal)(t)}throw e}}));return(0,E.default)(task,this.retryConfig)}serializeApiCallOptions(e,t){let A=false;const i=Object.entries(e).map((([e,t])=>{if(t===undefined||t===null){return[]}let i=t;if(Buffer.isBuffer(t)||(0,d.default)(t)){A=true}else if(typeof t!=="string"&&typeof t!=="number"&&typeof t!=="boolean"){i=JSON.stringify(t)}return[e,i]}));if(A){this.logger.debug("Request arguments contain binary data");const e=i.reduce(((e,[t,A])=>{if(Buffer.isBuffer(A)||(0,d.default)(A)){const i={};i.filename=(()=>{const e=A;if(typeof e.name==="string"){return(0,u.basename)(e.name)}if(typeof e.path==="string"){return(0,u.basename)(e.path)}return R})();e.append(t,A,i)}else if(t!==undefined&&A!==undefined){e.append(t,A)}return e}),new Q.default);Object.entries(e.getHeaders()).forEach((([e,A])=>{t[e]=A}));return e}t["Content-Type"]="application/x-www-form-urlencoded";const n={};return(0,l.stringify)(i.reduce(((e,[t,A])=>{if(t!==undefined&&A!==undefined){e[t]=A}return e}),n))}async buildResult(e){let{data:t}=e;const A=e.headers["content-type"]==="application/gzip";if(A){try{const e=await new Promise(((e,A)=>{p.default.unzip(t,((t,i)=>{if(t){return A(t)}return e(i.toString().split("\n"))}))})).then((e=>e)).catch((e=>{throw e}));const A=[];if(Array.isArray(e)){e.forEach((e=>{if(e&&e.length>0){A.push(JSON.parse(e))}}))}t={file_data:A}}catch(e){t={ok:false,error:e}}}else if(!A&&e.request.path==="/api/admin.analytics.getFile"){t=JSON.parse((new g.TextDecoder).decode(t))}if(typeof t==="string"){try{t=JSON.parse(t)}catch(e){t={ok:false,error:t}}}if(t.response_metadata===undefined){t.response_metadata={}}if(e.headers["x-oauth-scopes"]!==undefined){t.response_metadata.scopes=e.headers["x-oauth-scopes"].trim().split(/\s*,\s*/)}if(e.headers["x-accepted-oauth-scopes"]!==undefined){t.response_metadata.acceptedScopes=e.headers["x-accepted-oauth-scopes"].trim().split(/\s*,\s*/)}const i=parseRetryHeaders(e);if(i!==undefined){t.response_metadata.retryAfter=i}return t}}t.WebClient=WebClient;WebClient.loggerName="WebClient";t["default"]=WebClient;function paginationOptionsForNextPage(e,t){if(e!==undefined&&e.response_metadata!==undefined&&e.response_metadata.next_cursor!==undefined&&e.response_metadata.next_cursor!==""){return{limit:t,cursor:e.response_metadata.next_cursor}}return undefined}function parseRetryHeaders(e){if(e.headers["retry-after"]!==undefined){const t=parseInt(e.headers["retry-after"],10);if(!Number.isNaN(t)){return t}}return undefined}function warnDeprecations(e,t){const A=["channels.","groups.","im.","mpim."];const i=["admin.conversations.whitelist.","stars."];const n=A.some((t=>{const A=new RegExp(`^${t}`);return A.test(e)}));const s=i.some((t=>{const A=new RegExp(`^${t}`);return A.test(e)}));if(n){t.warn(`${e} is deprecated. Please use the Conversations API instead. For more info, go to https://api.slack.com/changelog/2020-01-deprecating-antecedents-to-the-conversations-api`)}else if(s){t.warn(`${e} is deprecated. Please check on https://api.slack.com/methods for an alternative.`)}}function warnIfFallbackIsMissing(e,t,A){const i=["chat.postEphemeral","chat.postMessage","chat.scheduleMessage","chat.update"];const n=i.includes(e);const hasAttachments=e=>Array.isArray(e.attachments)&&e.attachments.length;const missingAttachmentFallbackDetected=e=>Array.isArray(e.attachments)&&e.attachments.some((e=>!e.fallback||e.fallback.trim()===""));const isEmptyText=e=>e.text===undefined||e.text===null||e.text==="";const buildMissingTextWarning=()=>`The top-level \`text\` argument is missing in the request payload for a ${e} call - `+"It's a best practice to always provide a `text` argument when posting a message. "+"The `text` is used in places where the content cannot be rendered such as: "+"system push notifications, assistive technology such as screen readers, etc.";const buildMissingFallbackWarning=()=>`Additionally, the attachment-level \`fallback\` argument is missing in the request payload for a ${e} call - `+"To avoid this warning, it is recommended to always provide a top-level `text` argument when posting a message. "+"Alternatively, you can provide an attachment-level `fallback` argument, though this is now considered a legacy field (see https://api.slack.com/reference/messaging/attachments#legacy_fields for more details).";if(n&&typeof A==="object"){if(hasAttachments(A)){if(missingAttachmentFallbackDetected(A)&&isEmptyText(A)){t.warn(buildMissingTextWarning());t.warn(buildMissingFallbackWarning())}}else if(isEmptyText(A)){t.warn(buildMissingTextWarning())}}}function warnIfThreadTsIsNotString(e,t,A){const i=["chat.postEphemeral","chat.postMessage","chat.scheduleMessage","files.upload"];const n=i.includes(e);if(n&&(A===null||A===void 0?void 0:A.thread_ts)!==undefined&&typeof(A===null||A===void 0?void 0:A.thread_ts)!=="string"){t.warn(buildThreadTsWarningMessage(e))}}function buildThreadTsWarningMessage(e){return`The given thread_ts value in the request payload for a ${e} call is a float value. We highly recommend using a string value instead.`}t.buildThreadTsWarningMessage=buildThreadTsWarningMessage;function redact(e){const t=Object.entries(e).map((([e,t])=>{if(t===undefined||t===null){return[]}let A=t;if(e.match(/.*token.*/)!==null||e.match(/[Aa]uthorization/)){A="[[REDACTED]]"}if(Buffer.isBuffer(t)||(0,d.default)(t)){A="[[BINARY VALUE OMITTED]]"}else if(typeof t!=="string"&&typeof t!=="number"&&typeof t!=="boolean"){A=JSON.stringify(t)}return[e,A]}));const A={};return t.reduce(((e,[t,A])=>{if(t!==undefined&&A!==undefined){e[t]=A}return e}),A)}},4019:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.rateLimitedErrorWithDelay=t.platformErrorFromResult=t.httpErrorFromResponse=t.requestErrorWithOriginal=t.errorWithCode=t.ErrorCode=void 0;var A;(function(e){e["RequestError"]="slack_webapi_request_error";e["HTTPError"]="slack_webapi_http_error";e["PlatformError"]="slack_webapi_platform_error";e["RateLimitedError"]="slack_webapi_rate_limited_error";e["FileUploadInvalidArgumentsError"]="slack_webapi_file_upload_invalid_args_error";e["FileUploadReadFileDataError"]="slack_webapi_file_upload_read_file_data_error"})(A=t.ErrorCode||(t.ErrorCode={}));function errorWithCode(e,t){const A=e;A.code=t;return A}t.errorWithCode=errorWithCode;function requestErrorWithOriginal(e){const t=errorWithCode(new Error(`A request error occurred: ${e.message}`),A.RequestError);t.original=e;return t}t.requestErrorWithOriginal=requestErrorWithOriginal;function httpErrorFromResponse(e){const t=errorWithCode(new Error(`An HTTP protocol error occurred: statusCode = ${e.status}`),A.HTTPError);t.statusCode=e.status;t.statusMessage=e.statusText;const i={};Object.keys(e.headers).forEach((t=>{if(t&&e.headers[t]){i[t]=e.headers[t]}}));t.headers=i;t.body=e.data;return t}t.httpErrorFromResponse=httpErrorFromResponse;function platformErrorFromResult(e){const t=errorWithCode(new Error(`An API error occurred: ${e.error}`),A.PlatformError);t.data=e;return t}t.platformErrorFromResult=platformErrorFromResult;function rateLimitedErrorWithDelay(e){const t=errorWithCode(new Error(`A rate-limit has been reached, you may retry this request in ${e} seconds`),A.RateLimitedError);t.retryAfter=e;return t}t.rateLimitedErrorWithDelay=rateLimitedErrorWithDelay},4846:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t.buildInvalidFilesUploadParamError=t.buildMultipleChannelsErrorMsg=t.buildChannelsWarning=t.buildFilesUploadMissingMessage=t.buildGeneralFilesUploadWarning=t.buildLegacyMethodWarning=t.buildMissingExtensionWarning=t.buildMissingFileNameWarning=t.buildLegacyFileTypeWarning=t.buildFileSizeErrorMsg=t.buildMissingFileIdError=t.warnIfLegacyFileType=t.warnIfMissingOrInvalidFileNameAndDefault=t.errorIfInvalidOrMissingFileData=t.errorIfChannelsCsv=t.warnIfChannels=t.warnIfNotUsingFilesUploadV2=t.getAllFileUploadsToComplete=t.getFileDataAsStream=t.getFileDataLength=t.getFileData=t.getMultipleFileUploadJobs=t.getFileUploadJob=void 0;const i=A(7147);const n=A(2781);const s=A(4019);async function getFileUploadJob(e,t){var A,i,n,s;warnIfLegacyFileType(e,t);warnIfChannels(e,t);errorIfChannelsCsv(e);const o=warnIfMissingOrInvalidFileNameAndDefault(e,t);const r=await getFileData(e);const a=getFileDataLength(r);const c={alt_text:e.alt_text,channel_id:(A=e.channels)!==null&&A!==void 0?A:e.channel_id,content:e.content,file:e.file,filename:(i=e.filename)!==null&&i!==void 0?i:o,initial_comment:e.initial_comment,snippet_type:e.snippet_type,thread_ts:e.thread_ts,title:(n=e.title)!==null&&n!==void 0?n:(s=e.filename)!==null&&s!==void 0?s:o,data:r,length:a};return c}t.getFileUploadJob=getFileUploadJob;async function getMultipleFileUploadJobs(e,t){if(e.file_uploads){return Promise.all(e.file_uploads.map((A=>{const{channel_id:i,channels:n,initial_comment:o,thread_ts:r}=A;if(i||n||o||r){throw(0,s.errorWithCode)(new Error(buildInvalidFilesUploadParamError()),s.ErrorCode.FileUploadInvalidArgumentsError)}return getFileUploadJob(Object.assign(Object.assign({},A),{channels:e.channels,channel_id:e.channel_id,initial_comment:e.initial_comment,thread_ts:e.thread_ts}),t)})))}throw new Error(buildFilesUploadMissingMessage())}t.getMultipleFileUploadJobs=getMultipleFileUploadJobs;async function getFileData(e){errorIfInvalidOrMissingFileData(e);const{file:t,content:A}=e;if(t){if(Buffer.isBuffer(t))return t;if(typeof t==="string"){try{const e=(0,i.readFileSync)(t);return e}catch(e){throw(0,s.errorWithCode)(new Error(`Unable to resolve file data for ${t}. Please supply a filepath string, or binary data Buffer or String directly.`),s.ErrorCode.FileUploadInvalidArgumentsError)}}const e=await getFileDataAsStream(t);if(e)return e}if(A)return Buffer.from(A);throw(0,s.errorWithCode)(new Error("There was an issue getting the file data for the file or content supplied"),s.ErrorCode.FileUploadReadFileDataError)}t.getFileData=getFileData;function getFileDataLength(e){if(e){return Buffer.byteLength(e,"utf8")}throw(0,s.errorWithCode)(new Error(buildFileSizeErrorMsg()),s.ErrorCode.FileUploadReadFileDataError)}t.getFileDataLength=getFileDataLength;async function getFileDataAsStream(e){const t=[];return new Promise(((A,i)=>{e.on("readable",(()=>{let A;while((A=e.read())!==null){t.push(A)}}));e.on("end",(()=>{if(t.length>0){const e=Buffer.concat(t);A(e)}else{i(Error("No data in supplied file"))}}))}))}t.getFileDataAsStream=getFileDataAsStream;function getAllFileUploadsToComplete(e){const t={};e.forEach((e=>{const{channel_id:A,thread_ts:i,initial_comment:n,file_id:s,title:o}=e;if(s){const e=`:::${A}:::${i}:::${n}`;if(!Object.prototype.hasOwnProperty.call(t,e)){t[e]={files:[{id:s,title:o}],channel_id:A,initial_comment:n,thread_ts:i}}else{t[e].files.push({id:s,title:o})}}else{throw new Error(buildMissingFileIdError())}}));return t}t.getAllFileUploadsToComplete=getAllFileUploadsToComplete;function warnIfNotUsingFilesUploadV2(e,t){const A=["files.upload"];const i=A.includes(e);if(e==="files.upload")t.warn(buildLegacyMethodWarning(e));if(i)t.info(buildGeneralFilesUploadWarning())}t.warnIfNotUsingFilesUploadV2=warnIfNotUsingFilesUploadV2;function warnIfChannels(e,t){if(e.channels)t.warn(buildChannelsWarning())}t.warnIfChannels=warnIfChannels;function errorIfChannelsCsv(e){const t=e.channels?e.channels.split(","):[];if(t.length>1){throw(0,s.errorWithCode)(new Error(buildMultipleChannelsErrorMsg()),s.ErrorCode.FileUploadInvalidArgumentsError)}}t.errorIfChannelsCsv=errorIfChannelsCsv;function errorIfInvalidOrMissingFileData(e){const{file:t,content:A}=e;if(!(t||A)||t&&A){throw(0,s.errorWithCode)(new Error("Either a file or content field is required for valid file upload. You cannot supply both"),s.ErrorCode.FileUploadInvalidArgumentsError)}if(t&&!(typeof t==="string"||Buffer.isBuffer(t)||t instanceof n.Readable)){throw(0,s.errorWithCode)(new Error("file must be a valid string path, buffer or Readable"),s.ErrorCode.FileUploadInvalidArgumentsError)}if(A&&typeof A!=="string"){throw(0,s.errorWithCode)(new Error("content must be a string"),s.ErrorCode.FileUploadInvalidArgumentsError)}}t.errorIfInvalidOrMissingFileData=errorIfInvalidOrMissingFileData;function warnIfMissingOrInvalidFileNameAndDefault(e,t){var A;const i="txt";const n=`file.${(A=e.filetype)!==null&&A!==void 0?A:i}`;const{filename:s}=e;if(!s){t.warn(buildMissingFileNameWarning());return n}if(s.split(".").length<2){t.warn(buildMissingExtensionWarning(s))}return s}t.warnIfMissingOrInvalidFileNameAndDefault=warnIfMissingOrInvalidFileNameAndDefault;function warnIfLegacyFileType(e,t){if(e.filetype){t.warn(buildLegacyFileTypeWarning())}}t.warnIfLegacyFileType=warnIfLegacyFileType;function buildMissingFileIdError(){return"Missing required file id for file upload completion"}t.buildMissingFileIdError=buildMissingFileIdError;function buildFileSizeErrorMsg(){return"There was an issue calculating the size of your file"}t.buildFileSizeErrorMsg=buildFileSizeErrorMsg;function buildLegacyFileTypeWarning(){return"filetype is no longer a supported field in files.uploadV2."+" \nPlease remove this field. To indicate file type, please do so via the required filename property"+" using the appropriate file extension, e.g. image.png, text.txt"}t.buildLegacyFileTypeWarning=buildLegacyFileTypeWarning;function buildMissingFileNameWarning(){return"filename is a required field for files.uploadV2. \n For backwards compatibility and ease of migration, "+"defaulting the filename. For best experience and consistent unfurl behavior, you"+" should set the filename property with correct file extension, e.g. image.png, text.txt"}t.buildMissingFileNameWarning=buildMissingFileNameWarning;function buildMissingExtensionWarning(e){return`filename supplied '${e}' may be missing a proper extension. Missing extenions may result in unexpected unfurl behavior when shared`}t.buildMissingExtensionWarning=buildMissingExtensionWarning;function buildLegacyMethodWarning(e){return`${e} may cause some issues like timeouts for relatively large files.`}t.buildLegacyMethodWarning=buildLegacyMethodWarning;function buildGeneralFilesUploadWarning(){return"Our latest recommendation is to use client.files.uploadV2() method, "+"which is mostly compatible and much stabler, instead."}t.buildGeneralFilesUploadWarning=buildGeneralFilesUploadWarning;function buildFilesUploadMissingMessage(){return"Something went wrong with processing file_uploads"}t.buildFilesUploadMissingMessage=buildFilesUploadMissingMessage;function buildChannelsWarning(){return"Although the 'channels' parameter is still supported for smoother migration from legacy files.upload, "+"we recommend using the new channel_id parameter with a single str value instead (e.g. 'C12345')."}t.buildChannelsWarning=buildChannelsWarning;function buildMultipleChannelsErrorMsg(){return"Sharing files with multiple channels is no longer supported in v2. Share files in each channel separately instead."}t.buildMultipleChannelsErrorMsg=buildMultipleChannelsErrorMsg;function buildInvalidFilesUploadParamError(){return"You may supply file_uploads only for a single channel, comment, thread respectively. "+"Therefore, please supply any channel_id, initial_comment, thread_ts in the top-layer."}t.buildInvalidFilesUploadParamError=buildInvalidFilesUploadParamError},9289:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});function delay(e){return new Promise((t=>{setTimeout(t,e)}))}t["default"]=delay},5201:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,i,n)}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__exportStar||function(e,t){for(var A in e)if(A!=="default"&&!Object.prototype.hasOwnProperty.call(t,A))i(t,e,A)};var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.addAppMetadata=t.retryPolicies=t.ErrorCode=t.LogLevel=t.WebClientEvent=t.WebClient=void 0;var o=A(9689);Object.defineProperty(t,"WebClient",{enumerable:true,get:function(){return o.WebClient}});Object.defineProperty(t,"WebClientEvent",{enumerable:true,get:function(){return o.WebClientEvent}});var r=A(7752);Object.defineProperty(t,"LogLevel",{enumerable:true,get:function(){return r.LogLevel}});var a=A(4019);Object.defineProperty(t,"ErrorCode",{enumerable:true,get:function(){return a.ErrorCode}});var c=A(3516);Object.defineProperty(t,"retryPolicies",{enumerable:true,get:function(){return s(c).default}});var l=A(5917);Object.defineProperty(t,"addAppMetadata",{enumerable:true,get:function(){return l.addAppMetadata}});n(A(9258),t);n(A(6175),t)},5917:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,i,n)}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A in e)if(A!=="default"&&Object.prototype.hasOwnProperty.call(e,A))i(t,e,A);n(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.getUserAgent=t.addAppMetadata=void 0;const o=s(A(2037));const r=A(1017);const a=A(7797);function replaceSlashes(e){return e.replace("/",":")}const c=`${replaceSlashes(a.name)}/${a.version} `+`${(0,r.basename)(process.title)}/${process.version.replace("v","")} `+`${o.platform()}/${o.release()}`;const l={};function addAppMetadata({name:e,version:t}){l[replaceSlashes(e)]=t}t.addAppMetadata=addAppMetadata;function getUserAgent(){const e=Object.entries(l).map((([e,t])=>`${e}/${t}`)).join(" ");return(e.length>0?`${e} `:"")+c}t.getUserAgent=getUserAgent},7752:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t.getLogger=t.LogLevel=void 0;const i=A(6227);var n=A(6227);Object.defineProperty(t,"LogLevel",{enumerable:true,get:function(){return n.LogLevel}});let s=0;function getLogger(e,t,A){const n=s;s+=1;const o=(()=>{if(A!==undefined){return A}return new i.ConsoleLogger})();o.setName(`web-api:${e}:${n}`);if(t!==undefined){o.setLevel(t)}return o}t.getLogger=getLogger},9258:function(e,t,A){var i=this&&this.__createBinding||(Object.create?function(e,t,A,i){if(i===undefined)i=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,i,n)}:function(e,t,A,i){if(i===undefined)i=A;e[i]=t[A]});var n=this&&this.__exportStar||function(e,t){for(var A in e)if(A!=="default"&&!Object.prototype.hasOwnProperty.call(t,A))i(t,e,A)};Object.defineProperty(t,"__esModule",{value:true});t.cursorPaginationEnabledMethods=t.Methods=void 0;const s=A(4849);const o=A(9689);function bindApiCall(e,t){return e.apiCall.bind(e,t)}function bindFilesUploadV2(e){return e.filesUploadV2.bind(e)}class Methods extends s.EventEmitter{constructor(){super();this.admin={analytics:{getFile:bindApiCall(this,"admin.analytics.getFile")},apps:{approve:bindApiCall(this,"admin.apps.approve"),approved:{list:bindApiCall(this,"admin.apps.approved.list")},clearResolution:bindApiCall(this,"admin.apps.clearResolution"),requests:{cancel:bindApiCall(this,"admin.apps.requests.cancel"),list:bindApiCall(this,"admin.apps.requests.list")},restrict:bindApiCall(this,"admin.apps.restrict"),restricted:{list:bindApiCall(this,"admin.apps.restricted.list")},uninstall:bindApiCall(this,"admin.apps.uninstall"),activities:{list:bindApiCall(this,"admin.apps.activities.list")}},auth:{policy:{assignEntities:bindApiCall(this,"admin.auth.policy.assignEntities"),getEntities:bindApiCall(this,"admin.auth.policy.getEntities"),removeEntities:bindApiCall(this,"admin.auth.policy.removeEntities")}},barriers:{create:bindApiCall(this,"admin.barriers.create"),delete:bindApiCall(this,"admin.barriers.delete"),list:bindApiCall(this,"admin.barriers.list"),update:bindApiCall(this,"admin.barriers.update")},conversations:{archive:bindApiCall(this,"admin.conversations.archive"),bulkArchive:bindApiCall(this,"admin.conversations.bulkArchive"),bulkDelete:bindApiCall(this,"admin.conversations.bulkDelete"),bulkMove:bindApiCall(this,"admin.conversations.bulkMove"),convertToPrivate:bindApiCall(this,"admin.conversations.convertToPrivate"),convertToPublic:bindApiCall(this,"admin.conversations.convertToPublic"),create:bindApiCall(this,"admin.conversations.create"),delete:bindApiCall(this,"admin.conversations.delete"),disconnectShared:bindApiCall(this,"admin.conversations.disconnectShared"),ekm:{listOriginalConnectedChannelInfo:bindApiCall(this,"admin.conversations.ekm.listOriginalConnectedChannelInfo")},getConversationPrefs:bindApiCall(this,"admin.conversations.getConversationPrefs"),getTeams:bindApiCall(this,"admin.conversations.getTeams"),invite:bindApiCall(this,"admin.conversations.invite"),rename:bindApiCall(this,"admin.conversations.rename"),restrictAccess:{addGroup:bindApiCall(this,"admin.conversations.restrictAccess.addGroup"),listGroups:bindApiCall(this,"admin.conversations.restrictAccess.listGroups"),removeGroup:bindApiCall(this,"admin.conversations.restrictAccess.removeGroup")},getCustomRetention:bindApiCall(this,"admin.conversations.getCustomRetention"),setCustomRetention:bindApiCall(this,"admin.conversations.setCustomRetention"),removeCustomRetention:bindApiCall(this,"admin.conversations.removeCustomRetention"),lookup:bindApiCall(this,"admin.conversations.lookup"),search:bindApiCall(this,"admin.conversations.search"),setConversationPrefs:bindApiCall(this,"admin.conversations.setConversationPrefs"),setTeams:bindApiCall(this,"admin.conversations.setTeams"),unarchive:bindApiCall(this,"admin.conversations.unarchive")},emoji:{add:bindApiCall(this,"admin.emoji.add"),addAlias:bindApiCall(this,"admin.emoji.addAlias"),list:bindApiCall(this,"admin.emoji.list"),remove:bindApiCall(this,"admin.emoji.remove"),rename:bindApiCall(this,"admin.emoji.rename")},functions:{list:bindApiCall(this,"admin.functions.list"),permissions:{lookup:bindApiCall(this,"admin.functions.permissions.lookup"),set:bindApiCall(this,"admin.functions.permissions.set")}},inviteRequests:{approve:bindApiCall(this,"admin.inviteRequests.approve"),approved:{list:bindApiCall(this,"admin.inviteRequests.approved.list")},denied:{list:bindApiCall(this,"admin.inviteRequests.denied.list")},deny:bindApiCall(this,"admin.inviteRequests.deny"),list:bindApiCall(this,"admin.inviteRequests.list")},teams:{admins:{list:bindApiCall(this,"admin.teams.admins.list")},create:bindApiCall(this,"admin.teams.create"),list:bindApiCall(this,"admin.teams.list"),owners:{list:bindApiCall(this,"admin.teams.owners.list")},settings:{info:bindApiCall(this,"admin.teams.settings.info"),setDefaultChannels:bindApiCall(this,"admin.teams.settings.setDefaultChannels"),setDescription:bindApiCall(this,"admin.teams.settings.setDescription"),setDiscoverability:bindApiCall(this,"admin.teams.settings.setDiscoverability"),setIcon:bindApiCall(this,"admin.teams.settings.setIcon"),setName:bindApiCall(this,"admin.teams.settings.setName")}},roles:{addAssignments:bindApiCall(this,"admin.roles.addAssignments"),listAssignments:bindApiCall(this,"admin.roles.listAssignments"),removeAssignments:bindApiCall(this,"admin.roles.removeAssignments")},usergroups:{addChannels:bindApiCall(this,"admin.usergroups.addChannels"),addTeams:bindApiCall(this,"admin.usergroups.addTeams"),listChannels:bindApiCall(this,"admin.usergroups.listChannels"),removeChannels:bindApiCall(this,"admin.usergroups.removeChannels")},users:{assign:bindApiCall(this,"admin.users.assign"),invite:bindApiCall(this,"admin.users.invite"),list:bindApiCall(this,"admin.users.list"),remove:bindApiCall(this,"admin.users.remove"),session:{list:bindApiCall(this,"admin.users.session.list"),reset:bindApiCall(this,"admin.users.session.reset"),resetBulk:bindApiCall(this,"admin.users.session.resetBulk"),invalidate:bindApiCall(this,"admin.users.session.invalidate"),getSettings:bindApiCall(this,"admin.users.session.getSettings"),setSettings:bindApiCall(this,"admin.users.session.setSettings"),clearSettings:bindApiCall(this,"admin.users.session.clearSettings")},unsupportedVersions:{export:bindApiCall(this,"admin.users.unsupportedVersions.export")},setAdmin:bindApiCall(this,"admin.users.setAdmin"),setExpiration:bindApiCall(this,"admin.users.setExpiration"),setOwner:bindApiCall(this,"admin.users.setOwner"),setRegular:bindApiCall(this,"admin.users.setRegular")},workflows:{search:bindApiCall(this,"admin.workflows.search"),unpublish:bindApiCall(this,"admin.workflows.unpublish"),collaborators:{add:bindApiCall(this,"admin.workflows.collaborators.add"),remove:bindApiCall(this,"admin.workflows.collaborators.remove")},permissions:{lookup:bindApiCall(this,"admin.workflows.permissions.lookup")}}};this.api={test:bindApiCall(this,"api.test")};this.apps={connections:{open:bindApiCall(this,"apps.connections.open")},event:{authorizations:{list:bindApiCall(this,"apps.event.authorizations.list")}},uninstall:bindApiCall(this,"apps.uninstall")};this.auth={revoke:bindApiCall(this,"auth.revoke"),teams:{list:bindApiCall(this,"auth.teams.list")},test:bindApiCall(this,"auth.test")};this.bots={info:bindApiCall(this,"bots.info")};this.bookmarks={add:bindApiCall(this,"bookmarks.add"),edit:bindApiCall(this,"bookmarks.edit"),list:bindApiCall(this,"bookmarks.list"),remove:bindApiCall(this,"bookmarks.remove")};this.calls={add:bindApiCall(this,"calls.add"),end:bindApiCall(this,"calls.end"),info:bindApiCall(this,"calls.info"),update:bindApiCall(this,"calls.update"),participants:{add:bindApiCall(this,"calls.participants.add"),remove:bindApiCall(this,"calls.participants.remove")}};this.chat={delete:bindApiCall(this,"chat.delete"),deleteScheduledMessage:bindApiCall(this,"chat.deleteScheduledMessage"),getPermalink:bindApiCall(this,"chat.getPermalink"),meMessage:bindApiCall(this,"chat.meMessage"),postEphemeral:bindApiCall(this,"chat.postEphemeral"),postMessage:bindApiCall(this,"chat.postMessage"),scheduleMessage:bindApiCall(this,"chat.scheduleMessage"),scheduledMessages:{list:bindApiCall(this,"chat.scheduledMessages.list")},unfurl:bindApiCall(this,"chat.unfurl"),update:bindApiCall(this,"chat.update")};this.conversations={acceptSharedInvite:bindApiCall(this,"conversations.acceptSharedInvite"),approveSharedInvite:bindApiCall(this,"conversations.approveSharedInvite"),archive:bindApiCall(this,"conversations.archive"),close:bindApiCall(this,"conversations.close"),create:bindApiCall(this,"conversations.create"),declineSharedInvite:bindApiCall(this,"conversations.declineSharedInvite"),history:bindApiCall(this,"conversations.history"),info:bindApiCall(this,"conversations.info"),invite:bindApiCall(this,"conversations.invite"),inviteShared:bindApiCall(this,"conversations.inviteShared"),join:bindApiCall(this,"conversations.join"),kick:bindApiCall(this,"conversations.kick"),leave:bindApiCall(this,"conversations.leave"),list:bindApiCall(this,"conversations.list"),listConnectInvites:bindApiCall(this,"conversations.listConnectInvites"),mark:bindApiCall(this,"conversations.mark"),members:bindApiCall(this,"conversations.members"),open:bindApiCall(this,"conversations.open"),rename:bindApiCall(this,"conversations.rename"),replies:bindApiCall(this,"conversations.replies"),setPurpose:bindApiCall(this,"conversations.setPurpose"),setTopic:bindApiCall(this,"conversations.setTopic"),unarchive:bindApiCall(this,"conversations.unarchive")};this.dialog={open:bindApiCall(this,"dialog.open")};this.dnd={endDnd:bindApiCall(this,"dnd.endDnd"),endSnooze:bindApiCall(this,"dnd.endSnooze"),info:bindApiCall(this,"dnd.info"),setSnooze:bindApiCall(this,"dnd.setSnooze"),teamInfo:bindApiCall(this,"dnd.teamInfo")};this.emoji={list:bindApiCall(this,"emoji.list")};this.files={delete:bindApiCall(this,"files.delete"),info:bindApiCall(this,"files.info"),list:bindApiCall(this,"files.list"),revokePublicURL:bindApiCall(this,"files.revokePublicURL"),sharedPublicURL:bindApiCall(this,"files.sharedPublicURL"),upload:bindApiCall(this,"files.upload"),uploadV2:bindFilesUploadV2(this),getUploadURLExternal:bindApiCall(this,"files.getUploadURLExternal"),completeUploadExternal:bindApiCall(this,"files.completeUploadExternal"),comments:{delete:bindApiCall(this,"files.comments.delete")},remote:{info:bindApiCall(this,"files.remote.info"),list:bindApiCall(this,"files.remote.list"),add:bindApiCall(this,"files.remote.add"),update:bindApiCall(this,"files.remote.update"),remove:bindApiCall(this,"files.remote.remove"),share:bindApiCall(this,"files.remote.share")}};this.migration={exchange:bindApiCall(this,"migration.exchange")};this.oauth={access:bindApiCall(this,"oauth.access"),v2:{access:bindApiCall(this,"oauth.v2.access"),exchange:bindApiCall(this,"oauth.v2.exchange")}};this.openid={connect:{token:bindApiCall(this,"openid.connect.token"),userInfo:bindApiCall(this,"openid.connect.userInfo")}};this.pins={add:bindApiCall(this,"pins.add"),list:bindApiCall(this,"pins.list"),remove:bindApiCall(this,"pins.remove")};this.reactions={add:bindApiCall(this,"reactions.add"),get:bindApiCall(this,"reactions.get"),list:bindApiCall(this,"reactions.list"),remove:bindApiCall(this,"reactions.remove")};this.reminders={add:bindApiCall(this,"reminders.add"),complete:bindApiCall(this,"reminders.complete"),delete:bindApiCall(this,"reminders.delete"),info:bindApiCall(this,"reminders.info"),list:bindApiCall(this,"reminders.list")};this.rtm={connect:bindApiCall(this,"rtm.connect"),start:bindApiCall(this,"rtm.start")};this.search={all:bindApiCall(this,"search.all"),files:bindApiCall(this,"search.files"),messages:bindApiCall(this,"search.messages")};this.stars={add:bindApiCall(this,"stars.add"),list:bindApiCall(this,"stars.list"),remove:bindApiCall(this,"stars.remove")};this.team={accessLogs:bindApiCall(this,"team.accessLogs"),billableInfo:bindApiCall(this,"team.billableInfo"),billing:{info:bindApiCall(this,"team.billing.info")},info:bindApiCall(this,"team.info"),integrationLogs:bindApiCall(this,"team.integrationLogs"),preferences:{list:bindApiCall(this,"team.preferences.list")},profile:{get:bindApiCall(this,"team.profile.get")}};this.usergroups={create:bindApiCall(this,"usergroups.create"),disable:bindApiCall(this,"usergroups.disable"),enable:bindApiCall(this,"usergroups.enable"),list:bindApiCall(this,"usergroups.list"),update:bindApiCall(this,"usergroups.update"),users:{list:bindApiCall(this,"usergroups.users.list"),update:bindApiCall(this,"usergroups.users.update")}};this.users={conversations:bindApiCall(this,"users.conversations"),deletePhoto:bindApiCall(this,"users.deletePhoto"),getPresence:bindApiCall(this,"users.getPresence"),identity:bindApiCall(this,"users.identity"),info:bindApiCall(this,"users.info"),list:bindApiCall(this,"users.list"),lookupByEmail:bindApiCall(this,"users.lookupByEmail"),setPhoto:bindApiCall(this,"users.setPhoto"),setPresence:bindApiCall(this,"users.setPresence"),profile:{get:bindApiCall(this,"users.profile.get"),set:bindApiCall(this,"users.profile.set")}};this.views={open:bindApiCall(this,"views.open"),publish:bindApiCall(this,"views.publish"),push:bindApiCall(this,"views.push"),update:bindApiCall(this,"views.update")};this.workflows={stepCompleted:bindApiCall(this,"workflows.stepCompleted"),stepFailed:bindApiCall(this,"workflows.stepFailed"),updateStep:bindApiCall(this,"workflows.updateStep")};this.channels={archive:bindApiCall(this,"channels.archive"),create:bindApiCall(this,"channels.create"),history:bindApiCall(this,"channels.history"),info:bindApiCall(this,"channels.info"),invite:bindApiCall(this,"channels.invite"),join:bindApiCall(this,"channels.join"),kick:bindApiCall(this,"channels.kick"),leave:bindApiCall(this,"channels.leave"),list:bindApiCall(this,"channels.list"),mark:bindApiCall(this,"channels.mark"),rename:bindApiCall(this,"channels.rename"),replies:bindApiCall(this,"channels.replies"),setPurpose:bindApiCall(this,"channels.setPurpose"),setTopic:bindApiCall(this,"channels.setTopic"),unarchive:bindApiCall(this,"channels.unarchive")};this.groups={archive:bindApiCall(this,"groups.archive"),create:bindApiCall(this,"groups.create"),createChild:bindApiCall(this,"groups.createChild"),history:bindApiCall(this,"groups.history"),info:bindApiCall(this,"groups.info"),invite:bindApiCall(this,"groups.invite"),kick:bindApiCall(this,"groups.kick"),leave:bindApiCall(this,"groups.leave"),list:bindApiCall(this,"groups.list"),mark:bindApiCall(this,"groups.mark"),open:bindApiCall(this,"groups.open"),rename:bindApiCall(this,"groups.rename"),replies:bindApiCall(this,"groups.replies"),setPurpose:bindApiCall(this,"groups.setPurpose"),setTopic:bindApiCall(this,"groups.setTopic"),unarchive:bindApiCall(this,"groups.unarchive")};this.im={close:bindApiCall(this,"im.close"),history:bindApiCall(this,"im.history"),list:bindApiCall(this,"im.list"),mark:bindApiCall(this,"im.mark"),open:bindApiCall(this,"im.open"),replies:bindApiCall(this,"im.replies")};this.mpim={close:bindApiCall(this,"mpim.close"),history:bindApiCall(this,"mpim.history"),list:bindApiCall(this,"mpim.list"),mark:bindApiCall(this,"mpim.mark"),open:bindApiCall(this,"mpim.open"),replies:bindApiCall(this,"mpim.replies")};if(new.target!==o.WebClient&&!(new.target.prototype instanceof o.WebClient)){throw new Error("Attempt to inherit from WebClient methods without inheriting from WebClient")}}}t.Methods=Methods;t.cursorPaginationEnabledMethods=new Set;t.cursorPaginationEnabledMethods.add("admin.apps.approved.list");t.cursorPaginationEnabledMethods.add("admin.apps.requests.list");t.cursorPaginationEnabledMethods.add("admin.apps.restricted.list");t.cursorPaginationEnabledMethods.add("admin.apps.activities.list");t.cursorPaginationEnabledMethods.add("admin.auth.policy.getEntities");t.cursorPaginationEnabledMethods.add("admin.barriers.list");t.cursorPaginationEnabledMethods.add("admin.conversations.lookup");t.cursorPaginationEnabledMethods.add("admin.conversations.ekm.listOriginalConnectedChannelInfo");t.cursorPaginationEnabledMethods.add("admin.conversations.getTeams");t.cursorPaginationEnabledMethods.add("admin.conversations.search");t.cursorPaginationEnabledMethods.add("admin.emoji.list");t.cursorPaginationEnabledMethods.add("admin.inviteRequests.approved.list");t.cursorPaginationEnabledMethods.add("admin.inviteRequests.denied.list");t.cursorPaginationEnabledMethods.add("admin.inviteRequests.list");t.cursorPaginationEnabledMethods.add("admin.roles.listAssignments");t.cursorPaginationEnabledMethods.add("admin.inviteRequests.list");t.cursorPaginationEnabledMethods.add("admin.teams.admins.list");t.cursorPaginationEnabledMethods.add("admin.teams.list");t.cursorPaginationEnabledMethods.add("admin.teams.owners.list");t.cursorPaginationEnabledMethods.add("admin.users.list");t.cursorPaginationEnabledMethods.add("admin.users.session.list");t.cursorPaginationEnabledMethods.add("admin.worfklows.search");t.cursorPaginationEnabledMethods.add("apps.event.authorizations.list");t.cursorPaginationEnabledMethods.add("auth.teams.list");t.cursorPaginationEnabledMethods.add("channels.list");t.cursorPaginationEnabledMethods.add("chat.scheduledMessages.list");t.cursorPaginationEnabledMethods.add("conversations.history");t.cursorPaginationEnabledMethods.add("conversations.list");t.cursorPaginationEnabledMethods.add("conversations.listConnectInvites");t.cursorPaginationEnabledMethods.add("conversations.members");t.cursorPaginationEnabledMethods.add("conversations.replies");t.cursorPaginationEnabledMethods.add("files.info");t.cursorPaginationEnabledMethods.add("files.remote.list");t.cursorPaginationEnabledMethods.add("groups.list");t.cursorPaginationEnabledMethods.add("im.list");t.cursorPaginationEnabledMethods.add("mpim.list");t.cursorPaginationEnabledMethods.add("reactions.list");t.cursorPaginationEnabledMethods.add("stars.list");t.cursorPaginationEnabledMethods.add("team.accessLogs");t.cursorPaginationEnabledMethods.add("users.conversations");t.cursorPaginationEnabledMethods.add("users.list");n(A(5880),t)},6175:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},3516:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.rapidRetryPolicy=t.fiveRetriesInFiveMinutes=t.tenRetriesInAboutThirtyMinutes=void 0;t.tenRetriesInAboutThirtyMinutes={retries:10,factor:1.96821,randomize:true};t.fiveRetriesInFiveMinutes={retries:5,factor:3.86};t.rapidRetryPolicy={minTimeout:0,maxTimeout:1};const A={tenRetriesInAboutThirtyMinutes:t.tenRetriesInAboutThirtyMinutes,fiveRetriesInFiveMinutes:t.fiveRetriesInFiveMinutes,rapidRetryPolicy:t.rapidRetryPolicy};t["default"]=A},4821:(e,t,A)=>{e.exports={parallel:A(644),serial:A(4501),serialOrdered:A(2362)}},3234:e=>{e.exports=abort;function abort(e){Object.keys(e.jobs).forEach(clean.bind(e));e.jobs={}}function clean(e){if(typeof this.jobs[e]=="function"){this.jobs[e]()}}},3784:(e,t,A)=>{var i=A(9919);e.exports=async;function async(e){var t=false;i((function(){t=true}));return function async_callback(A,n){if(t){e(A,n)}else{i((function nextTick_callback(){e(A,n)}))}}}},9919:e=>{e.exports=defer;function defer(e){var t=typeof setImmediate=="function"?setImmediate:typeof process=="object"&&typeof process.nextTick=="function"?process.nextTick:null;if(t){t(e)}else{setTimeout(e,0)}}},5748:(e,t,A)=>{var i=A(3784),n=A(3234);e.exports=iterate;function iterate(e,t,A,i){var s=A["keyedList"]?A["keyedList"][A.index]:A.index;A.jobs[s]=runJob(t,s,e[s],(function(e,t){if(!(s in A.jobs)){return}delete A.jobs[s];if(e){n(A)}else{A.results[s]=t}i(e,A.results)}))}function runJob(e,t,A,n){var s;if(e.length==2){s=e(A,i(n))}else{s=e(A,t,i(n))}return s}},8258:e=>{e.exports=state;function state(e,t){var A=!Array.isArray(e),i={index:0,keyedList:A||t?Object.keys(e):null,jobs:{},results:A?{}:[],size:A?Object.keys(e).length:e.length};if(t){i.keyedList.sort(A?t:function(A,i){return t(e[A],e[i])})}return i}},6349:(e,t,A)=>{var i=A(3234),n=A(3784);e.exports=terminator;function terminator(e){if(!Object.keys(this.jobs).length){return}this.index=this.size;i(this);n(e)(null,this.results)}},644:(e,t,A)=>{var i=A(5748),n=A(8258),s=A(6349);e.exports=parallel;function parallel(e,t,A){var o=n(e);while(o.index<(o["keyedList"]||e).length){i(e,t,o,(function(e,t){if(e){A(e,t);return}if(Object.keys(o.jobs).length===0){A(null,o.results);return}}));o.index++}return s.bind(o,A)}},4501:(e,t,A)=>{var i=A(2362);e.exports=serial;function serial(e,t,A){return i(e,t,null,A)}},2362:(e,t,A)=>{var i=A(5748),n=A(8258),s=A(6349);e.exports=serialOrdered;e.exports.ascending=ascending;e.exports.descending=descending;function serialOrdered(e,t,A,o){var r=n(e,A);i(e,t,r,(function iteratorHandler(A,n){if(A){o(A,n);return}r.index++;if(r.index<(r["keyedList"]||e).length){i(e,t,r,iteratorHandler);return}o(null,r.results)}));return s.bind(r,o)}function ascending(e,t){return et?1:0}function descending(e,t){return-1*ascending(e,t)}},4991:(e,t,A)=>{var i=A(3837);var n=A(2781).Stream;var s=A(7386);e.exports=CombinedStream;function CombinedStream(){this.writable=false;this.readable=true;this.dataSize=0;this.maxDataSize=2*1024*1024;this.pauseStreams=true;this._released=false;this._streams=[];this._currentStream=null;this._insideLoop=false;this._pendingNext=false}i.inherits(CombinedStream,n);CombinedStream.create=function(e){var t=new this;e=e||{};for(var A in e){t[A]=e[A]}return t};CombinedStream.isStreamLike=function(e){return typeof e!=="function"&&typeof e!=="string"&&typeof e!=="boolean"&&typeof e!=="number"&&!Buffer.isBuffer(e)};CombinedStream.prototype.append=function(e){var t=CombinedStream.isStreamLike(e);if(t){if(!(e instanceof s)){var A=s.create(e,{maxDataSize:Infinity,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this));e=A}this._handleErrors(e);if(this.pauseStreams){e.pause()}}this._streams.push(e);return this};CombinedStream.prototype.pipe=function(e,t){n.prototype.pipe.call(this,e,t);this.resume();return e};CombinedStream.prototype._getNext=function(){this._currentStream=null;if(this._insideLoop){this._pendingNext=true;return}this._insideLoop=true;try{do{this._pendingNext=false;this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=false}};CombinedStream.prototype._realGetNext=function(){var e=this._streams.shift();if(typeof e=="undefined"){this.end();return}if(typeof e!=="function"){this._pipeNext(e);return}var t=e;t(function(e){var t=CombinedStream.isStreamLike(e);if(t){e.on("data",this._checkDataSize.bind(this));this._handleErrors(e)}this._pipeNext(e)}.bind(this))};CombinedStream.prototype._pipeNext=function(e){this._currentStream=e;var t=CombinedStream.isStreamLike(e);if(t){e.on("end",this._getNext.bind(this));e.pipe(this,{end:false});return}var A=e;this.write(A);this._getNext()};CombinedStream.prototype._handleErrors=function(e){var t=this;e.on("error",(function(e){t._emitError(e)}))};CombinedStream.prototype.write=function(e){this.emit("data",e)};CombinedStream.prototype.pause=function(){if(!this.pauseStreams){return}if(this.pauseStreams&&this._currentStream&&typeof this._currentStream.pause=="function")this._currentStream.pause();this.emit("pause")};CombinedStream.prototype.resume=function(){if(!this._released){this._released=true;this.writable=true;this._getNext()}if(this.pauseStreams&&this._currentStream&&typeof this._currentStream.resume=="function")this._currentStream.resume();this.emit("resume")};CombinedStream.prototype.end=function(){this._reset();this.emit("end")};CombinedStream.prototype.destroy=function(){this._reset();this.emit("close")};CombinedStream.prototype._reset=function(){this.writable=false;this._streams=[];this._currentStream=null};CombinedStream.prototype._checkDataSize=function(){this._updateDataSize();if(this.dataSize<=this.maxDataSize){return}var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))};CombinedStream.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(t){if(!t.dataSize){return}e.dataSize+=t.dataSize}));if(this._currentStream&&this._currentStream.dataSize){this.dataSize+=this._currentStream.dataSize}};CombinedStream.prototype._emitError=function(e){this._reset();this.emit("error",e)}},7386:(e,t,A)=>{var i=A(2781).Stream;var n=A(3837);e.exports=DelayedStream;function DelayedStream(){this.source=null;this.dataSize=0;this.maxDataSize=1024*1024;this.pauseStream=true;this._maxDataSizeExceeded=false;this._released=false;this._bufferedEvents=[]}n.inherits(DelayedStream,i);DelayedStream.create=function(e,t){var A=new this;t=t||{};for(var i in t){A[i]=t[i]}A.source=e;var n=e.emit;e.emit=function(){A._handleEmit(arguments);return n.apply(e,arguments)};e.on("error",(function(){}));if(A.pauseStream){e.pause()}return A};Object.defineProperty(DelayedStream.prototype,"readable",{configurable:true,enumerable:true,get:function(){return this.source.readable}});DelayedStream.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)};DelayedStream.prototype.resume=function(){if(!this._released){this.release()}this.source.resume()};DelayedStream.prototype.pause=function(){this.source.pause()};DelayedStream.prototype.release=function(){this._released=true;this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this));this._bufferedEvents=[]};DelayedStream.prototype.pipe=function(){var e=i.prototype.pipe.apply(this,arguments);this.resume();return e};DelayedStream.prototype._handleEmit=function(e){if(this._released){this.emit.apply(this,e);return}if(e[0]==="data"){this.dataSize+=e[1].length;this._checkIfMaxDataSizeExceeded()}this._bufferedEvents.push(e)};DelayedStream.prototype._checkIfMaxDataSizeExceeded=function(){if(this._maxDataSizeExceeded){return}if(this.dataSize<=this.maxDataSize){return}this._maxDataSizeExceeded=true;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}},4849:e=>{var t=Object.prototype.hasOwnProperty,A="~";function Events(){}if(Object.create){Events.prototype=Object.create(null);if(!(new Events).__proto__)A=false}function EE(e,t,A){this.fn=e;this.context=t;this.once=A||false}function addListener(e,t,i,n,s){if(typeof i!=="function"){throw new TypeError("The listener must be a function")}var o=new EE(i,n||e,s),r=A?A+t:t;if(!e._events[r])e._events[r]=o,e._eventsCount++;else if(!e._events[r].fn)e._events[r].push(o);else e._events[r]=[e._events[r],o];return e}function clearEvent(e,t){if(--e._eventsCount===0)e._events=new Events;else delete e._events[t]}function EventEmitter(){this._events=new Events;this._eventsCount=0}EventEmitter.prototype.eventNames=function eventNames(){var e=[],i,n;if(this._eventsCount===0)return e;for(n in i=this._events){if(t.call(i,n))e.push(A?n.slice(1):n)}if(Object.getOwnPropertySymbols){return e.concat(Object.getOwnPropertySymbols(i))}return e};EventEmitter.prototype.listeners=function listeners(e){var t=A?A+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{var t=Object.prototype.hasOwnProperty,A="~";function Events(){}if(Object.create){Events.prototype=Object.create(null);if(!(new Events).__proto__)A=false}function EE(e,t,A){this.fn=e;this.context=t;this.once=A||false}function addListener(e,t,i,n,s){if(typeof i!=="function"){throw new TypeError("The listener must be a function")}var o=new EE(i,n||e,s),r=A?A+t:t;if(!e._events[r])e._events[r]=o,e._eventsCount++;else if(!e._events[r].fn)e._events[r].push(o);else e._events[r]=[e._events[r],o];return e}function clearEvent(e,t){if(--e._eventsCount===0)e._events=new Events;else delete e._events[t]}function EventEmitter(){this._events=new Events;this._eventsCount=0}EventEmitter.prototype.eventNames=function eventNames(){var e=[],i,n;if(this._eventsCount===0)return e;for(n in i=this._events){if(t.call(i,n))e.push(A?n.slice(1):n)}if(Object.getOwnPropertySymbols){return e.concat(Object.getOwnPropertySymbols(i))}return e};EventEmitter.prototype.listeners=function listeners(e){var t=A?A+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{var i;e.exports=function(){if(!i){try{i=A(1987)("follow-redirects")}catch(e){}if(typeof i!=="function"){i=function(){}}}i.apply(null,arguments)}},3037:(e,t,A)=>{var i=A(7310);var n=i.URL;var s=A(3685);var o=A(5687);var r=A(2781).Writable;var a=A(9491);var c=A(1248);var l=["abort","aborted","connect","error","socket","timeout"];var u=Object.create(null);l.forEach((function(e){u[e]=function(t,A,i){this._redirectable.emit(e,t,A,i)}}));var p=createErrorType("ERR_INVALID_URL","Invalid URL",TypeError);var g=createErrorType("ERR_FR_REDIRECTION_FAILURE","Redirected request failed");var d=createErrorType("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded");var h=createErrorType("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit");var E=createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");var C=r.prototype.destroy||noop;function RedirectableRequest(e,t){r.call(this);this._sanitizeOptions(e);this._options=e;this._ended=false;this._ending=false;this._redirectCount=0;this._redirects=[];this._requestBodyLength=0;this._requestBodyBuffers=[];if(t){this.on("response",t)}var A=this;this._onNativeResponse=function(e){A._processResponse(e)};this._performRequest()}RedirectableRequest.prototype=Object.create(r.prototype);RedirectableRequest.prototype.abort=function(){destroyRequest(this._currentRequest);this._currentRequest.abort();this.emit("abort")};RedirectableRequest.prototype.destroy=function(e){destroyRequest(this._currentRequest,e);C.call(this,e);return this};RedirectableRequest.prototype.write=function(e,t,A){if(this._ending){throw new E}if(!isString(e)&&!isBuffer(e)){throw new TypeError("data should be a string, Buffer or Uint8Array")}if(isFunction(t)){A=t;t=null}if(e.length===0){if(A){A()}return}if(this._requestBodyLength+e.length<=this._options.maxBodyLength){this._requestBodyLength+=e.length;this._requestBodyBuffers.push({data:e,encoding:t});this._currentRequest.write(e,t,A)}else{this.emit("error",new h);this.abort()}};RedirectableRequest.prototype.end=function(e,t,A){if(isFunction(e)){A=e;e=t=null}else if(isFunction(t)){A=t;t=null}if(!e){this._ended=this._ending=true;this._currentRequest.end(null,null,A)}else{var i=this;var n=this._currentRequest;this.write(e,t,(function(){i._ended=true;n.end(null,null,A)}));this._ending=true}};RedirectableRequest.prototype.setHeader=function(e,t){this._options.headers[e]=t;this._currentRequest.setHeader(e,t)};RedirectableRequest.prototype.removeHeader=function(e){delete this._options.headers[e];this._currentRequest.removeHeader(e)};RedirectableRequest.prototype.setTimeout=function(e,t){var A=this;function destroyOnTimeout(t){t.setTimeout(e);t.removeListener("timeout",t.destroy);t.addListener("timeout",t.destroy)}function startTimer(t){if(A._timeout){clearTimeout(A._timeout)}A._timeout=setTimeout((function(){A.emit("timeout");clearTimer()}),e);destroyOnTimeout(t)}function clearTimer(){if(A._timeout){clearTimeout(A._timeout);A._timeout=null}A.removeListener("abort",clearTimer);A.removeListener("error",clearTimer);A.removeListener("response",clearTimer);A.removeListener("close",clearTimer);if(t){A.removeListener("timeout",t)}if(!A.socket){A._currentRequest.removeListener("socket",startTimer)}}if(t){this.on("timeout",t)}if(this.socket){startTimer(this.socket)}else{this._currentRequest.once("socket",startTimer)}this.on("socket",destroyOnTimeout);this.on("abort",clearTimer);this.on("error",clearTimer);this.on("response",clearTimer);this.on("close",clearTimer);return this};["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach((function(e){RedirectableRequest.prototype[e]=function(t,A){return this._currentRequest[e](t,A)}}));["aborted","connection","socket"].forEach((function(e){Object.defineProperty(RedirectableRequest.prototype,e,{get:function(){return this._currentRequest[e]}})}));RedirectableRequest.prototype._sanitizeOptions=function(e){if(!e.headers){e.headers={}}if(e.host){if(!e.hostname){e.hostname=e.host}delete e.host}if(!e.pathname&&e.path){var t=e.path.indexOf("?");if(t<0){e.pathname=e.path}else{e.pathname=e.path.substring(0,t);e.search=e.path.substring(t)}}};RedirectableRequest.prototype._performRequest=function(){var e=this._options.protocol;var t=this._options.nativeProtocols[e];if(!t){this.emit("error",new TypeError("Unsupported protocol "+e));return}if(this._options.agents){var A=e.slice(0,-1);this._options.agent=this._options.agents[A]}var n=this._currentRequest=t.request(this._options,this._onNativeResponse);n._redirectable=this;for(var s of l){n.on(s,u[s])}this._currentUrl=/^\//.test(this._options.path)?i.format(this._options):this._options.path;if(this._isRedirect){var o=0;var r=this;var a=this._requestBodyBuffers;(function writeNext(e){if(n===r._currentRequest){if(e){r.emit("error",e)}else if(o=400){e.responseUrl=this._currentUrl;e.redirects=this._redirects;this.emit("response",e);this._requestBodyBuffers=[];return}destroyRequest(this._currentRequest);e.destroy();if(++this._redirectCount>this._options.maxRedirects){this.emit("error",new d);return}var n;var s=this._options.beforeRedirect;if(s){n=Object.assign({Host:e.req.getHeader("host")},this._options.headers)}var o=this._options.method;if((t===301||t===302)&&this._options.method==="POST"||t===303&&!/^(?:GET|HEAD)$/.test(this._options.method)){this._options.method="GET";this._requestBodyBuffers=[];removeMatchingHeaders(/^content-/i,this._options.headers)}var r=removeMatchingHeaders(/^host$/i,this._options.headers);var a=i.parse(this._currentUrl);var l=r||a.host;var u=/^\w+:/.test(A)?this._currentUrl:i.format(Object.assign(a,{host:l}));var p;try{p=i.resolve(u,A)}catch(e){this.emit("error",new g({cause:e}));return}c("redirecting to",p);this._isRedirect=true;var h=i.parse(p);Object.assign(this._options,h);if(h.protocol!==a.protocol&&h.protocol!=="https:"||h.host!==l&&!isSubdomain(h.host,l)){removeMatchingHeaders(/^(?:authorization|cookie)$/i,this._options.headers)}if(isFunction(s)){var E={headers:e.headers,statusCode:t};var C={url:u,method:o,headers:n};try{s(this._options,E,C)}catch(e){this.emit("error",e);return}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(e){this.emit("error",new g({cause:e}))}};function wrap(e){var t={maxRedirects:21,maxBodyLength:10*1024*1024};var A={};Object.keys(e).forEach((function(s){var o=s+":";var r=A[o]=e[s];var l=t[s]=Object.create(r);function request(e,s,r){if(isString(e)){var l;try{l=urlToOptions(new n(e))}catch(t){l=i.parse(e)}if(!isString(l.protocol)){throw new p({input:e})}e=l}else if(n&&e instanceof n){e=urlToOptions(e)}else{r=s;s=e;e={protocol:o}}if(isFunction(s)){r=s;s=null}s=Object.assign({maxRedirects:t.maxRedirects,maxBodyLength:t.maxBodyLength},e,s);s.nativeProtocols=A;if(!isString(s.host)&&!isString(s.hostname)){s.hostname="::1"}a.equal(s.protocol,o,"protocol mismatch");c("options",s);return new RedirectableRequest(s,r)}function get(e,t,A){var i=l.request(e,t,A);i.end();return i}Object.defineProperties(l,{request:{value:request,configurable:true,enumerable:true,writable:true},get:{value:get,configurable:true,enumerable:true,writable:true}})}));return t}function noop(){}function urlToOptions(e){var t={protocol:e.protocol,hostname:e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:e.pathname+e.search,href:e.href};if(e.port!==""){t.port=Number(e.port)}return t}function removeMatchingHeaders(e,t){var A;for(var i in t){if(e.test(i)){A=t[i];delete t[i]}}return A===null||typeof A==="undefined"?undefined:String(A).trim()}function createErrorType(e,t,A){function CustomError(A){Error.captureStackTrace(this,this.constructor);Object.assign(this,A||{});this.code=e;this.message=this.cause?t+": "+this.cause.message:t}CustomError.prototype=new(A||Error);CustomError.prototype.constructor=CustomError;CustomError.prototype.name="Error ["+e+"]";return CustomError}function destroyRequest(e,t){for(var A of l){e.removeListener(A,u[A])}e.on("error",noop);e.destroy(t)}function isSubdomain(e,t){a(isString(e)&&isString(t));var A=e.length-t.length-1;return A>0&&e[A]==="."&&e.endsWith(t)}function isString(e){return typeof e==="string"||e instanceof String}function isFunction(e){return typeof e==="function"}function isBuffer(e){return typeof e==="object"&&"length"in e}e.exports=wrap({http:s,https:o});e.exports.wrap=wrap},4867:(e,t,A)=>{var i=A(4991);var n=A(3837);var s=A(1017);var o=A(3685);var r=A(5687);var a=A(7310).parse;var c=A(7147);var l=A(3739);var u=A(4821);var p=A(8833);e.exports=FormData;n.inherits(FormData,i);function FormData(e){if(!(this instanceof FormData)){return new FormData}this._overheadLength=0;this._valueLength=0;this._valuesToMeasure=[];i.call(this);e=e||{};for(var t in e){this[t]=e[t]}}FormData.LINE_BREAK="\r\n";FormData.DEFAULT_CONTENT_TYPE="application/octet-stream";FormData.prototype.append=function(e,t,A){A=A||{};if(typeof A=="string"){A={filename:A}}var s=i.prototype.append.bind(this);if(typeof t=="number"){t=""+t}if(n.isArray(t)){this._error(new Error("Arrays are not supported."));return}var o=this._multiPartHeader(e,t,A);var r=this._multiPartFooter();s(o);s(t);s(r);this._trackLength(o,t,A)};FormData.prototype._trackLength=function(e,t,A){var i=0;if(A.knownLength!=null){i+=+A.knownLength}else if(Buffer.isBuffer(t)){i=t.length}else if(typeof t==="string"){i=Buffer.byteLength(t)}this._valueLength+=i;this._overheadLength+=Buffer.byteLength(e)+FormData.LINE_BREAK.length;if(!t||!t.path&&!(t.readable&&t.hasOwnProperty("httpVersion"))){return}if(!A.knownLength){this._valuesToMeasure.push(t)}};FormData.prototype._lengthRetriever=function(e,t){if(e.hasOwnProperty("fd")){if(e.end!=undefined&&e.end!=Infinity&&e.start!=undefined){t(null,e.end+1-(e.start?e.start:0))}else{c.stat(e.path,(function(A,i){var n;if(A){t(A);return}n=i.size-(e.start?e.start:0);t(null,n)}))}}else if(e.hasOwnProperty("httpVersion")){t(null,+e.headers["content-length"])}else if(e.hasOwnProperty("httpModule")){e.on("response",(function(A){e.pause();t(null,+A.headers["content-length"])}));e.resume()}else{t("Unknown stream")}};FormData.prototype._multiPartHeader=function(e,t,A){if(typeof A.header=="string"){return A.header}var i=this._getContentDisposition(t,A);var n=this._getContentType(t,A);var s="";var o={"Content-Disposition":["form-data",'name="'+e+'"'].concat(i||[]),"Content-Type":[].concat(n||[])};if(typeof A.header=="object"){p(o,A.header)}var r;for(var a in o){if(!o.hasOwnProperty(a))continue;r=o[a];if(r==null){continue}if(!Array.isArray(r)){r=[r]}if(r.length){s+=a+": "+r.join("; ")+FormData.LINE_BREAK}}return"--"+this.getBoundary()+FormData.LINE_BREAK+s+FormData.LINE_BREAK};FormData.prototype._getContentDisposition=function(e,t){var A,i;if(typeof t.filepath==="string"){A=s.normalize(t.filepath).replace(/\\/g,"/")}else if(t.filename||e.name||e.path){A=s.basename(t.filename||e.name||e.path)}else if(e.readable&&e.hasOwnProperty("httpVersion")){A=s.basename(e.client._httpMessage.path||"")}if(A){i='filename="'+A+'"'}return i};FormData.prototype._getContentType=function(e,t){var A=t.contentType;if(!A&&e.name){A=l.lookup(e.name)}if(!A&&e.path){A=l.lookup(e.path)}if(!A&&e.readable&&e.hasOwnProperty("httpVersion")){A=e.headers["content-type"]}if(!A&&(t.filepath||t.filename)){A=l.lookup(t.filepath||t.filename)}if(!A&&typeof e=="object"){A=FormData.DEFAULT_CONTENT_TYPE}return A};FormData.prototype._multiPartFooter=function(){return function(e){var t=FormData.LINE_BREAK;var A=this._streams.length===0;if(A){t+=this._lastBoundary()}e(t)}.bind(this)};FormData.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+FormData.LINE_BREAK};FormData.prototype.getHeaders=function(e){var t;var A={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(t in e){if(e.hasOwnProperty(t)){A[t.toLowerCase()]=e[t]}}return A};FormData.prototype.getBoundary=function(){if(!this._boundary){this._generateBoundary()}return this._boundary};FormData.prototype.getBuffer=function(){var e=new Buffer.alloc(0);var t=this.getBoundary();for(var A=0,i=this._streams.length;A{e.exports=function(e,t){Object.keys(t).forEach((function(A){e[A]=e[A]||t[A]}));return e}},6698:(e,t,A)=>{var i=A(4991);var n=A(3837);var s=A(1017);var o=A(3685);var r=A(5687);var a=A(7310).parse;var c=A(7147);var l=A(2781).Stream;var u=A(3739);var p=A(4821);var g=A(1713);e.exports=FormData;n.inherits(FormData,i);function FormData(e){if(!(this instanceof FormData)){return new FormData(e)}this._overheadLength=0;this._valueLength=0;this._valuesToMeasure=[];i.call(this);e=e||{};for(var t in e){this[t]=e[t]}}FormData.LINE_BREAK="\r\n";FormData.DEFAULT_CONTENT_TYPE="application/octet-stream";FormData.prototype.append=function(e,t,A){A=A||{};if(typeof A=="string"){A={filename:A}}var s=i.prototype.append.bind(this);if(typeof t=="number"){t=""+t}if(n.isArray(t)){this._error(new Error("Arrays are not supported."));return}var o=this._multiPartHeader(e,t,A);var r=this._multiPartFooter();s(o);s(t);s(r);this._trackLength(o,t,A)};FormData.prototype._trackLength=function(e,t,A){var i=0;if(A.knownLength!=null){i+=+A.knownLength}else if(Buffer.isBuffer(t)){i=t.length}else if(typeof t==="string"){i=Buffer.byteLength(t)}this._valueLength+=i;this._overheadLength+=Buffer.byteLength(e)+FormData.LINE_BREAK.length;if(!t||!t.path&&!(t.readable&&t.hasOwnProperty("httpVersion"))&&!(t instanceof l)){return}if(!A.knownLength){this._valuesToMeasure.push(t)}};FormData.prototype._lengthRetriever=function(e,t){if(e.hasOwnProperty("fd")){if(e.end!=undefined&&e.end!=Infinity&&e.start!=undefined){t(null,e.end+1-(e.start?e.start:0))}else{c.stat(e.path,(function(A,i){var n;if(A){t(A);return}n=i.size-(e.start?e.start:0);t(null,n)}))}}else if(e.hasOwnProperty("httpVersion")){t(null,+e.headers["content-length"])}else if(e.hasOwnProperty("httpModule")){e.on("response",(function(A){e.pause();t(null,+A.headers["content-length"])}));e.resume()}else{t("Unknown stream")}};FormData.prototype._multiPartHeader=function(e,t,A){if(typeof A.header=="string"){return A.header}var i=this._getContentDisposition(t,A);var n=this._getContentType(t,A);var s="";var o={"Content-Disposition":["form-data",'name="'+e+'"'].concat(i||[]),"Content-Type":[].concat(n||[])};if(typeof A.header=="object"){g(o,A.header)}var r;for(var a in o){if(!o.hasOwnProperty(a))continue;r=o[a];if(r==null){continue}if(!Array.isArray(r)){r=[r]}if(r.length){s+=a+": "+r.join("; ")+FormData.LINE_BREAK}}return"--"+this.getBoundary()+FormData.LINE_BREAK+s+FormData.LINE_BREAK};FormData.prototype._getContentDisposition=function(e,t){var A,i;if(typeof t.filepath==="string"){A=s.normalize(t.filepath).replace(/\\/g,"/")}else if(t.filename||e.name||e.path){A=s.basename(t.filename||e.name||e.path)}else if(e.readable&&e.hasOwnProperty("httpVersion")){A=s.basename(e.client._httpMessage.path||"")}if(A){i='filename="'+A+'"'}return i};FormData.prototype._getContentType=function(e,t){var A=t.contentType;if(!A&&e.name){A=u.lookup(e.name)}if(!A&&e.path){A=u.lookup(e.path)}if(!A&&e.readable&&e.hasOwnProperty("httpVersion")){A=e.headers["content-type"]}if(!A&&(t.filepath||t.filename)){A=u.lookup(t.filepath||t.filename)}if(!A&&typeof e=="object"){A=FormData.DEFAULT_CONTENT_TYPE}return A};FormData.prototype._multiPartFooter=function(){return function(e){var t=FormData.LINE_BREAK;var A=this._streams.length===0;if(A){t+=this._lastBoundary()}e(t)}.bind(this)};FormData.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+FormData.LINE_BREAK};FormData.prototype.getHeaders=function(e){var t;var A={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(t in e){if(e.hasOwnProperty(t)){A[t.toLowerCase()]=e[t]}}return A};FormData.prototype.setBoundary=function(e){this._boundary=e};FormData.prototype.getBoundary=function(){if(!this._boundary){this._generateBoundary()}return this._boundary};FormData.prototype.getBuffer=function(){var e=new Buffer.alloc(0);var t=this.getBoundary();for(var A=0,i=this._streams.length;A{e.exports=function(e,t){Object.keys(t).forEach((function(A){e[A]=e[A]||t[A]}));return e}},1152:e=>{function isElectron(){if(typeof window!=="undefined"&&typeof window.process==="object"&&window.process.type==="renderer"){return true}if(typeof process!=="undefined"&&typeof process.versions==="object"&&!!process.versions.electron){return true}if(typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("Electron")>=0){return true}return false}e.exports=isElectron},1646:e=>{var t=e.exports=function(e){return e!==null&&typeof e==="object"&&typeof e.pipe==="function"};t.writable=function(e){return t(e)&&e.writable!==false&&typeof e._write==="function"&&typeof e._writableState==="object"};t.readable=function(e){return t(e)&&e.readable!==false&&typeof e._read==="function"&&typeof e._readableState==="object"};t.duplex=function(e){return t.writable(e)&&t.readable(e)};t.transform=function(e){return t.duplex(e)&&typeof e._transform==="function"&&typeof e._transformState==="object"}},4015:(e,t,A)=>{ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +e.exports=A(4558)},3739:(e,t,A)=>{ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +var i=A(4015);var n=A(1017).extname;var s=/^\s*([^;\s]*)(?:;|\s|$)/;var o=/^text\//i;t.charset=charset;t.charsets={lookup:charset};t.contentType=contentType;t.extension=extension;t.extensions=Object.create(null);t.lookup=lookup;t.types=Object.create(null);populateMaps(t.extensions,t.types);function charset(e){if(!e||typeof e!=="string"){return false}var t=s.exec(e);var A=t&&i[t[1].toLowerCase()];if(A&&A.charset){return A.charset}if(t&&o.test(t[1])){return"UTF-8"}return false}function contentType(e){if(!e||typeof e!=="string"){return false}var A=e.indexOf("/")===-1?t.lookup(e):e;if(!A){return false}if(A.indexOf("charset")===-1){var i=t.charset(A);if(i)A+="; charset="+i.toLowerCase()}return A}function extension(e){if(!e||typeof e!=="string"){return false}var A=s.exec(e);var i=A&&t.extensions[A[1].toLowerCase()];if(!i||!i.length){return false}return i[0]}function lookup(e){if(!e||typeof e!=="string"){return false}var A=n("x."+e).toLowerCase().substr(1);if(!A){return false}return t.types[A]||false}function populateMaps(e,t){var A=["nginx","apache",undefined,"iana"];Object.keys(i).forEach((function forEachMimeType(n){var s=i[n];var o=s.extensions;if(!o||!o.length){return}e[n]=o;for(var r=0;rl||c===l&&t[a].substr(0,12)==="application/")){continue}}t[a]=n}}))}},6161:e=>{e.exports=(e,t)=>{t=t||(()=>{});return e.then((e=>new Promise((e=>{e(t())})).then((()=>e))),(e=>new Promise((e=>{e(t())})).then((()=>{throw e}))))}},7114:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});const i=A(6240);const n=A(4573);const s=A(5642);const empty=()=>{};const o=new n.TimeoutError;class PQueue extends i{constructor(e){var t,A,i,n;super();this._intervalCount=0;this._intervalEnd=0;this._pendingCount=0;this._resolveEmpty=empty;this._resolveIdle=empty;e=Object.assign({carryoverConcurrencyCount:false,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:true,queueClass:s.default},e);if(!(typeof e.intervalCap==="number"&&e.intervalCap>=1)){throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(A=(t=e.intervalCap)===null||t===void 0?void 0:t.toString())!==null&&A!==void 0?A:""}\` (${typeof e.intervalCap})`)}if(e.interval===undefined||!(Number.isFinite(e.interval)&&e.interval>=0)){throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(n=(i=e.interval)===null||i===void 0?void 0:i.toString())!==null&&n!==void 0?n:""}\` (${typeof e.interval})`)}this._carryoverConcurrencyCount=e.carryoverConcurrencyCount;this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0;this._intervalCap=e.intervalCap;this._interval=e.interval;this._queue=new e.queueClass;this._queueClass=e.queueClass;this.concurrency=e.concurrency;this._timeout=e.timeout;this._throwOnTimeout=e.throwOnTimeout===true;this._isPaused=e.autoStart===false}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()}),t)}return true}}return false}_tryToStartAnother(){if(this._queue.size===0){if(this._intervalId){clearInterval(this._intervalId)}this._intervalId=undefined;this._resolvePromises();return false}if(!this._isPaused){const e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){const t=this._queue.dequeue();if(!t){return false}this.emit("active");t();if(e){this._initializeIntervalIfNeeded()}return true}}return false}_initializeIntervalIfNeeded(){if(this._isIntervalIgnored||this._intervalId!==undefined){return}this._intervalId=setInterval((()=>{this._onInterval()}),this._interval);this._intervalEnd=Date.now()+this._interval}_onInterval(){if(this._intervalCount===0&&this._pendingCount===0&&this._intervalId){clearInterval(this._intervalId);this._intervalId=undefined}this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0;this._processQueue()}_processQueue(){while(this._tryToStartAnother()){}}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e==="number"&&e>=1)){throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`)}this._concurrency=e;this._processQueue()}async add(e,t={}){return new Promise(((A,i)=>{const run=async()=>{this._pendingCount++;this._intervalCount++;try{const s=this._timeout===undefined&&t.timeout===undefined?e():n.default(Promise.resolve(e()),t.timeout===undefined?this._timeout:t.timeout,(()=>{if(t.throwOnTimeout===undefined?this._throwOnTimeout:t.throwOnTimeout){i(o)}return undefined}));A(await s)}catch(e){i(e)}this._next()};this._queue.enqueue(run,t);this._tryToStartAnother();this.emit("add")}))}async addAll(e,t){return Promise.all(e.map((async e=>this.add(e,t))))}start(){if(!this._isPaused){return this}this._isPaused=false;this._processQueue();return this}pause(){this._isPaused=true}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size===0){return}return new Promise((e=>{const t=this._resolveEmpty;this._resolveEmpty=()=>{t();e()}}))}async onIdle(){if(this._pendingCount===0&&this._queue.size===0){return}return new Promise((e=>{const t=this._resolveIdle;this._resolveIdle=()=>{t();e()}}))}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}}t["default"]=PQueue},7828:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});function lowerBound(e,t,A){let i=0;let n=e.length;while(n>0){const s=n/2|0;let o=i+s;if(A(e[o],t)<=0){i=++o;n-=s+1}else{n=s}}return i}t["default"]=lowerBound},5642:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});const i=A(7828);class PriorityQueue{constructor(){this._queue=[]}enqueue(e,t){t=Object.assign({priority:0},t);const A={priority:t.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=t.priority){this._queue.push(A);return}const n=i.default(this._queue,A,((e,t)=>t.priority-e.priority));this._queue.splice(n,0,A)}dequeue(){const e=this._queue.shift();return e===null||e===void 0?void 0:e.run}filter(e){return this._queue.filter((t=>t.priority===e.priority)).map((e=>e.run))}get size(){return this._queue.length}}t["default"]=PriorityQueue},6364:(e,t,A)=>{const i=A(6473);const n=["Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed"];class AbortError extends Error{constructor(e){super();if(e instanceof Error){this.originalError=e;({message:e}=e)}else{this.originalError=new Error(e);this.originalError.stack=this.stack}this.name="AbortError";this.message=e}}const decorateErrorWithCounts=(e,t,A)=>{const i=A.retries-(t-1);e.attemptNumber=t;e.retriesLeft=i;return e};const isNetworkError=e=>n.includes(e);const pRetry=(e,t)=>new Promise(((A,n)=>{t={onFailedAttempt:()=>{},retries:10,...t};const s=i.operation(t);s.attempt((async i=>{try{A(await e(i))}catch(e){if(!(e instanceof Error)){n(new TypeError(`Non-error was thrown: "${e}". You should only throw errors.`));return}if(e instanceof AbortError){s.stop();n(e.originalError)}else if(e instanceof TypeError&&!isNetworkError(e.message)){s.stop();n(e)}else{decorateErrorWithCounts(e,i,t);try{await t.onFailedAttempt(e)}catch(e){n(e);return}if(!s.retry(e)){n(s.mainError())}}}}))}));e.exports=pRetry;e.exports["default"]=pRetry;e.exports.AbortError=AbortError},4573:(e,t,A)=>{const i=A(6161);class TimeoutError extends Error{constructor(e){super(e);this.name="TimeoutError"}}const pTimeout=(e,t,A)=>new Promise(((n,s)=>{if(typeof t!=="number"||t<0){throw new TypeError("Expected `milliseconds` to be a positive number")}if(t===Infinity){n(e);return}const o=setTimeout((()=>{if(typeof A==="function"){try{n(A())}catch(e){s(e)}return}const i=typeof A==="string"?A:`Promise timed out after ${t} milliseconds`;const o=A instanceof Error?A:new TimeoutError(i);if(typeof e.cancel==="function"){e.cancel()}s(o)}),t);i(e.then(n,s),(()=>{clearTimeout(o)}))}));e.exports=pTimeout;e.exports["default"]=pTimeout;e.exports.TimeoutError=TimeoutError},2324:(e,t,A)=>{var i=A(7310).parse;var n={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};var s=String.prototype.endsWith||function(e){return e.length<=this.length&&this.indexOf(e,this.length-e.length)!==-1};function getProxyForUrl(e){var t=typeof e==="string"?i(e):e||{};var A=t.protocol;var s=t.host;var o=t.port;if(typeof s!=="string"||!s||typeof A!=="string"){return""}A=A.split(":",1)[0];s=s.replace(/:\d*$/,"");o=parseInt(o)||n[A]||0;if(!shouldProxy(s,o)){return""}var r=getEnv("npm_config_"+A+"_proxy")||getEnv(A+"_proxy")||getEnv("npm_config_proxy")||getEnv("all_proxy");if(r&&r.indexOf("://")===-1){r=A+"://"+r}return r}function shouldProxy(e,t){var A=(getEnv("npm_config_no_proxy")||getEnv("no_proxy")).toLowerCase();if(!A){return true}if(A==="*"){return false}return A.split(/[,\s]/).every((function(A){if(!A){return true}var i=A.match(/^(.+):(\d+)$/);var n=i?i[1]:A;var o=i?parseInt(i[2]):0;if(o&&o!==t){return true}if(!/^[.*]/.test(n)){return e!==n}if(n.charAt(0)==="*"){n=n.slice(1)}return!s.call(e,n)}))}function getEnv(e){return process.env[e.toLowerCase()]||process.env[e.toUpperCase()]||""}t.getProxyForUrl=getProxyForUrl},6473:(e,t,A)=>{e.exports=A(8746)},8746:(e,t,A)=>{var i=A(9030);t.operation=function(e){var A=t.timeouts(e);return new i(A,{forever:e&&(e.forever||e.retries===Infinity),unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})};t.timeouts=function(e){if(e instanceof Array){return[].concat(e)}var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:Infinity,randomize:false};for(var A in e){t[A]=e[A]}if(t.minTimeout>t.maxTimeout){throw new Error("minTimeout is greater than maxTimeout")}var i=[];for(var n=0;n{function RetryOperation(e,t){if(typeof t==="boolean"){t={forever:t}}this._originalTimeouts=JSON.parse(JSON.stringify(e));this._timeouts=e;this._options=t||{};this._maxRetryTime=t&&t.maxRetryTime||Infinity;this._fn=null;this._errors=[];this._attempts=1;this._operationTimeout=null;this._operationTimeoutCb=null;this._timeout=null;this._operationStart=null;this._timer=null;if(this._options.forever){this._cachedTimeouts=this._timeouts.slice(0)}}e.exports=RetryOperation;RetryOperation.prototype.reset=function(){this._attempts=1;this._timeouts=this._originalTimeouts.slice(0)};RetryOperation.prototype.stop=function(){if(this._timeout){clearTimeout(this._timeout)}if(this._timer){clearTimeout(this._timer)}this._timeouts=[];this._cachedTimeouts=null};RetryOperation.prototype.retry=function(e){if(this._timeout){clearTimeout(this._timeout)}if(!e){return false}var t=(new Date).getTime();if(e&&t-this._operationStart>=this._maxRetryTime){this._errors.push(e);this._errors.unshift(new Error("RetryOperation timeout occurred"));return false}this._errors.push(e);var A=this._timeouts.shift();if(A===undefined){if(this._cachedTimeouts){this._errors.splice(0,this._errors.length-1);A=this._cachedTimeouts.slice(-1)}else{return false}}var i=this;this._timer=setTimeout((function(){i._attempts++;if(i._operationTimeoutCb){i._timeout=setTimeout((function(){i._operationTimeoutCb(i._attempts)}),i._operationTimeout);if(i._options.unref){i._timeout.unref()}}i._fn(i._attempts)}),A);if(this._options.unref){this._timer.unref()}return true};RetryOperation.prototype.attempt=function(e,t){this._fn=e;if(t){if(t.timeout){this._operationTimeout=t.timeout}if(t.cb){this._operationTimeoutCb=t.cb}}var A=this;if(this._operationTimeoutCb){this._timeout=setTimeout((function(){A._operationTimeoutCb()}),A._operationTimeout)}this._operationStart=(new Date).getTime();this._fn(this._attempts)};RetryOperation.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated");this.attempt(e)};RetryOperation.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated");this.attempt(e)};RetryOperation.prototype.start=RetryOperation.prototype.try;RetryOperation.prototype.errors=function(){return this._errors};RetryOperation.prototype.attempts=function(){return this._attempts};RetryOperation.prototype.mainError=function(){if(this._errors.length===0){return null}var e={};var t=null;var A=0;for(var i=0;i=A){t=n;A=o}}return t}},4225:(e,t,A)=>{e.exports=A(4030)},4030:(e,t,A)=>{var i=A(1808);var n=A(4404);var s=A(3685);var o=A(5687);var r=A(2361);var a=A(9491);var c=A(3837);t.httpOverHttp=httpOverHttp;t.httpsOverHttp=httpsOverHttp;t.httpOverHttps=httpOverHttps;t.httpsOverHttps=httpsOverHttps;function httpOverHttp(e){var t=new TunnelingAgent(e);t.request=s.request;return t}function httpsOverHttp(e){var t=new TunnelingAgent(e);t.request=s.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function httpOverHttps(e){var t=new TunnelingAgent(e);t.request=o.request;return t}function httpsOverHttps(e){var t=new TunnelingAgent(e);t.request=o.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function TunnelingAgent(e){var t=this;t.options=e||{};t.proxyOptions=t.options.proxy||{};t.maxSockets=t.options.maxSockets||s.Agent.defaultMaxSockets;t.requests=[];t.sockets=[];t.on("free",(function onFree(e,A,i,n){var s=toOptions(A,i,n);for(var o=0,r=t.requests.length;o=this.maxSockets){n.requests.push(s);return}n.createSocket(s,(function(t){t.on("free",onFree);t.on("close",onCloseOrRemove);t.on("agentRemove",onCloseOrRemove);e.onSocket(t);function onFree(){n.emit("free",t,s)}function onCloseOrRemove(e){n.removeSocket(t);t.removeListener("free",onFree);t.removeListener("close",onCloseOrRemove);t.removeListener("agentRemove",onCloseOrRemove)}}))};TunnelingAgent.prototype.createSocket=function createSocket(e,t){var A=this;var i={};A.sockets.push(i);var n=mergeOptions({},A.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){n.localAddress=e.localAddress}if(n.proxyAuth){n.headers=n.headers||{};n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")}l("making CONNECT request");var s=A.request(n);s.useChunkedEncodingByDefault=false;s.once("response",onResponse);s.once("upgrade",onUpgrade);s.once("connect",onConnect);s.once("error",onError);s.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,t,A){process.nextTick((function(){onConnect(e,t,A)}))}function onConnect(n,o,r){s.removeAllListeners();o.removeAllListeners();if(n.statusCode!==200){l("tunneling socket could not be established, statusCode=%d",n.statusCode);o.destroy();var a=new Error("tunneling socket could not be established, "+"statusCode="+n.statusCode);a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(i);return}if(r.length>0){l("got illegal response body from proxy");o.destroy();var a=new Error("got illegal response body from proxy");a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(i);return}l("tunneling connection has established");A.sockets[A.sockets.indexOf(i)]=o;return t(o)}function onError(t){s.removeAllListeners();l("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var n=new Error("tunneling socket could not be established, "+"cause="+t.message);n.code="ECONNRESET";e.request.emit("error",n);A.removeSocket(i)}};TunnelingAgent.prototype.removeSocket=function removeSocket(e){var t=this.sockets.indexOf(e);if(t===-1){return}this.sockets.splice(t,1);var A=this.requests.shift();if(A){this.createSocket(A,(function(e){A.request.onSocket(e)}))}};function createSecureSocket(e,t){var A=this;TunnelingAgent.prototype.createSocket.call(A,e,(function(i){var s=e.request.getHeader("host");var o=mergeOptions({},A.options,{socket:i,servername:s?s.replace(/:.*$/,""):e.host});var r=n.connect(0,o);A.sockets[A.sockets.indexOf(i)]=r;t(r)}))}function toOptions(e,t,A){if(typeof e==="string"){return{host:e,port:t,localAddress:A}}return e}function mergeOptions(e){for(var t=1,A=arguments.length;t{const i=A(2520);const n=A(3678);const s=A(5143);const o=A(8429);const r=A(2737);const a=A(2584);const c=A(9980);const{InvalidArgumentError:l}=s;const u=A(4724);const p=A(7899);const g=A(8015);const d=A(902);const h=A(9928);const E=A(7526);const C=A(4318);const{getGlobalDispatcher:Q,setGlobalDispatcher:f}=A(4339);const B=A(3646);const I=A(5838);const m=A(2683);let b;try{A(6113);b=true}catch{b=false}Object.assign(n.prototype,u);e.exports.Dispatcher=n;e.exports.Client=i;e.exports.Pool=o;e.exports.BalancedPool=r;e.exports.Agent=a;e.exports.ProxyAgent=C;e.exports.DecoratorHandler=B;e.exports.RedirectHandler=I;e.exports.createRedirectInterceptor=m;e.exports.buildConnector=p;e.exports.errors=s;function makeDispatcher(e){return(t,A,i)=>{if(typeof A==="function"){i=A;A=null}if(!t||typeof t!=="string"&&typeof t!=="object"&&!(t instanceof URL)){throw new l("invalid url")}if(A!=null&&typeof A!=="object"){throw new l("invalid opts")}if(A&&A.path!=null){if(typeof A.path!=="string"){throw new l("invalid opts.path")}let e=A.path;if(!A.path.startsWith("/")){e=`/${e}`}t=new URL(c.parseOrigin(t).origin+e)}else{if(!A){A=typeof t==="object"?t:{}}t=c.parseURL(t)}const{agent:n,dispatcher:s=Q()}=A;if(n){throw new l("unsupported opts.agent. Did you mean opts.client?")}return e.call(s,{...A,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:A.method||(A.body?"PUT":"GET")},i)}}e.exports.setGlobalDispatcher=f;e.exports.getGlobalDispatcher=Q;if(c.nodeMajor>16||c.nodeMajor===16&&c.nodeMinor>=8){let t=null;e.exports.fetch=async function fetch(e){if(!t){t=A(8874).fetch}try{return await t(...arguments)}catch(e){if(typeof e==="object"){Error.captureStackTrace(e,this)}throw e}};e.exports.Headers=A(7941).Headers;e.exports.Response=A(5450).Response;e.exports.Request=A(3010).Request;e.exports.FormData=A(5061).FormData;e.exports.File=A(233).File;e.exports.FileReader=A(962).FileReader;const{setGlobalOrigin:i,getGlobalOrigin:n}=A(1709);e.exports.setGlobalOrigin=i;e.exports.getGlobalOrigin=n;const{CacheStorage:s}=A(3365);const{kConstruct:o}=A(8708);e.exports.caches=new s(o)}if(c.nodeMajor>=16){const{deleteCookie:t,getCookies:i,getSetCookies:n,setCookie:s}=A(3087);e.exports.deleteCookie=t;e.exports.getCookies=i;e.exports.getSetCookies=n;e.exports.setCookie=s;const{parseMIMEType:o,serializeAMimeType:r}=A(3513);e.exports.parseMIMEType=o;e.exports.serializeAMimeType=r}if(c.nodeMajor>=18&&b){const{WebSocket:t}=A(5190);e.exports.WebSocket=t}e.exports.request=makeDispatcher(u.request);e.exports.stream=makeDispatcher(u.stream);e.exports.pipeline=makeDispatcher(u.pipeline);e.exports.connect=makeDispatcher(u.connect);e.exports.upgrade=makeDispatcher(u.upgrade);e.exports.MockClient=g;e.exports.MockPool=h;e.exports.MockAgent=d;e.exports.mockErrors=E},2584:(e,t,A)=>{const{InvalidArgumentError:i}=A(5143);const{kClients:n,kRunning:s,kClose:o,kDestroy:r,kDispatch:a,kInterceptors:c}=A(7282);const l=A(7958);const u=A(8429);const p=A(2520);const g=A(9980);const d=A(2683);const{WeakRef:h,FinalizationRegistry:E}=A(6835)();const C=Symbol("onConnect");const Q=Symbol("onDisconnect");const f=Symbol("onConnectionError");const B=Symbol("maxRedirections");const I=Symbol("onDrain");const m=Symbol("factory");const b=Symbol("finalizer");const y=Symbol("options");function defaultFactory(e,t){return t&&t.connections===1?new p(e,t):new u(e,t)}class Agent extends l{constructor({factory:e=defaultFactory,maxRedirections:t=0,connect:A,...s}={}){super();if(typeof e!=="function"){throw new i("factory must be a function.")}if(A!=null&&typeof A!=="function"&&typeof A!=="object"){throw new i("connect must be a function or an object")}if(!Number.isInteger(t)||t<0){throw new i("maxRedirections must be a positive number")}if(A&&typeof A!=="function"){A={...A}}this[c]=s.interceptors&&s.interceptors.Agent&&Array.isArray(s.interceptors.Agent)?s.interceptors.Agent:[d({maxRedirections:t})];this[y]={...g.deepClone(s),connect:A};this[y].interceptors=s.interceptors?{...s.interceptors}:undefined;this[B]=t;this[m]=e;this[n]=new Map;this[b]=new E((e=>{const t=this[n].get(e);if(t!==undefined&&t.deref()===undefined){this[n].delete(e)}}));const o=this;this[I]=(e,t)=>{o.emit("drain",e,[o,...t])};this[C]=(e,t)=>{o.emit("connect",e,[o,...t])};this[Q]=(e,t,A)=>{o.emit("disconnect",e,[o,...t],A)};this[f]=(e,t,A)=>{o.emit("connectionError",e,[o,...t],A)}}get[s](){let e=0;for(const t of this[n].values()){const A=t.deref();if(A){e+=A[s]}}return e}[a](e,t){let A;if(e.origin&&(typeof e.origin==="string"||e.origin instanceof URL)){A=String(e.origin)}else{throw new i("opts.origin must be a non-empty string or URL.")}const s=this[n].get(A);let o=s?s.deref():null;if(!o){o=this[m](e.origin,this[y]).on("drain",this[I]).on("connect",this[C]).on("disconnect",this[Q]).on("connectionError",this[f]);this[n].set(A,new h(o));this[b].register(o,A)}return o.dispatch(e,t)}async[o](){const e=[];for(const t of this[n].values()){const A=t.deref();if(A){e.push(A.close())}}await Promise.all(e)}async[r](e){const t=[];for(const A of this[n].values()){const i=A.deref();if(i){t.push(i.destroy(e))}}await Promise.all(t)}}e.exports=Agent},7985:(e,t,A)=>{const{addAbortListener:i}=A(9980);const{RequestAbortedError:n}=A(5143);const s=Symbol("kListener");const o=Symbol("kSignal");function abort(e){if(e.abort){e.abort()}else{e.onError(new n)}}function addSignal(e,t){e[o]=null;e[s]=null;if(!t){return}if(t.aborted){abort(e);return}e[o]=t;e[s]=()=>{abort(e)};i(e[o],e[s])}function removeSignal(e){if(!e[o]){return}if("removeEventListener"in e[o]){e[o].removeEventListener("abort",e[s])}else{e[o].removeListener("abort",e[s])}e[o]=null;e[s]=null}e.exports={addSignal:addSignal,removeSignal:removeSignal}},5886:(e,t,A)=>{const{AsyncResource:i}=A(852);const{InvalidArgumentError:n,RequestAbortedError:s,SocketError:o}=A(5143);const r=A(9980);const{addSignal:a,removeSignal:c}=A(7985);class ConnectHandler extends i{constructor(e,t){if(!e||typeof e!=="object"){throw new n("invalid opts")}if(typeof t!=="function"){throw new n("invalid callback")}const{signal:A,opaque:i,responseHeaders:s}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new n("signal must be an EventEmitter or EventTarget")}super("UNDICI_CONNECT");this.opaque=i||null;this.responseHeaders=s||null;this.callback=t;this.abort=null;a(this,A)}onConnect(e,t){if(!this.callback){throw new s}this.abort=e;this.context=t}onHeaders(){throw new o("bad connect",null)}onUpgrade(e,t,A){const{callback:i,opaque:n,context:s}=this;c(this);this.callback=null;let o=t;if(o!=null){o=this.responseHeaders==="raw"?r.parseRawHeaders(t):r.parseHeaders(t)}this.runInAsyncScope(i,null,null,{statusCode:e,headers:o,socket:A,opaque:n,context:s})}onError(e){const{callback:t,opaque:A}=this;c(this);if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,e,{opaque:A})}))}}}function connect(e,t){if(t===undefined){return new Promise(((t,A)=>{connect.call(this,e,((e,i)=>e?A(e):t(i)))}))}try{const A=new ConnectHandler(e,t);this.dispatch({...e,method:"CONNECT"},A)}catch(A){if(typeof t!=="function"){throw A}const i=e&&e.opaque;queueMicrotask((()=>t(A,{opaque:i})))}}e.exports=connect},4899:(e,t,A)=>{const{Readable:i,Duplex:n,PassThrough:s}=A(2781);const{InvalidArgumentError:o,InvalidReturnValueError:r,RequestAbortedError:a}=A(5143);const c=A(9980);const{AsyncResource:l}=A(852);const{addSignal:u,removeSignal:p}=A(7985);const g=A(9491);const d=Symbol("resume");class PipelineRequest extends i{constructor(){super({autoDestroy:true});this[d]=null}_read(){const{[d]:e}=this;if(e){this[d]=null;e()}}_destroy(e,t){this._read();t(e)}}class PipelineResponse extends i{constructor(e){super({autoDestroy:true});this[d]=e}_read(){this[d]()}_destroy(e,t){if(!e&&!this._readableState.endEmitted){e=new a}t(e)}}class PipelineHandler extends l{constructor(e,t){if(!e||typeof e!=="object"){throw new o("invalid opts")}if(typeof t!=="function"){throw new o("invalid handler")}const{signal:A,method:i,opaque:s,onInfo:r,responseHeaders:l}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new o("signal must be an EventEmitter or EventTarget")}if(i==="CONNECT"){throw new o("invalid method")}if(r&&typeof r!=="function"){throw new o("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=s||null;this.responseHeaders=l||null;this.handler=t;this.abort=null;this.context=null;this.onInfo=r||null;this.req=(new PipelineRequest).on("error",c.nop);this.ret=new n({readableObjectMode:e.objectMode,autoDestroy:true,read:()=>{const{body:e}=this;if(e&&e.resume){e.resume()}},write:(e,t,A)=>{const{req:i}=this;if(i.push(e,t)||i._readableState.destroyed){A()}else{i[d]=A}},destroy:(e,t)=>{const{body:A,req:i,res:n,ret:s,abort:o}=this;if(!e&&!s._readableState.endEmitted){e=new a}if(o&&e){o()}c.destroy(A,e);c.destroy(i,e);c.destroy(n,e);p(this);t(e)}}).on("prefinish",(()=>{const{req:e}=this;e.push(null)}));this.res=null;u(this,A)}onConnect(e,t){const{ret:A,res:i}=this;g(!i,"pipeline cannot be retried");if(A.destroyed){throw new a}this.abort=e;this.context=t}onHeaders(e,t,A){const{opaque:i,handler:n,context:s}=this;if(e<200){if(this.onInfo){const A=this.responseHeaders==="raw"?c.parseRawHeaders(t):c.parseHeaders(t);this.onInfo({statusCode:e,headers:A})}return}this.res=new PipelineResponse(A);let o;try{this.handler=null;const A=this.responseHeaders==="raw"?c.parseRawHeaders(t):c.parseHeaders(t);o=this.runInAsyncScope(n,null,{statusCode:e,headers:A,opaque:i,body:this.res,context:s})}catch(e){this.res.on("error",c.nop);throw e}if(!o||typeof o.on!=="function"){throw new r("expected Readable")}o.on("data",(e=>{const{ret:t,body:A}=this;if(!t.push(e)&&A.pause){A.pause()}})).on("error",(e=>{const{ret:t}=this;c.destroy(t,e)})).on("end",(()=>{const{ret:e}=this;e.push(null)})).on("close",(()=>{const{ret:e}=this;if(!e._readableState.ended){c.destroy(e,new a)}}));this.body=o}onData(e){const{res:t}=this;return t.push(e)}onComplete(e){const{res:t}=this;t.push(null)}onError(e){const{ret:t}=this;this.handler=null;c.destroy(t,e)}}function pipeline(e,t){try{const A=new PipelineHandler(e,t);this.dispatch({...e,body:A.req},A);return A.ret}catch(e){return(new s).destroy(e)}}e.exports=pipeline},2159:(e,t,A)=>{const i=A(4274);const{InvalidArgumentError:n,RequestAbortedError:s}=A(5143);const o=A(9980);const{getResolveErrorBodyCallback:r}=A(1338);const{AsyncResource:a}=A(852);const{addSignal:c,removeSignal:l}=A(7985);class RequestHandler extends a{constructor(e,t){if(!e||typeof e!=="object"){throw new n("invalid opts")}const{signal:A,method:i,opaque:s,body:r,onInfo:a,responseHeaders:l,throwOnError:u,highWaterMark:p}=e;try{if(typeof t!=="function"){throw new n("invalid callback")}if(p&&(typeof p!=="number"||p<0)){throw new n("invalid highWaterMark")}if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new n("signal must be an EventEmitter or EventTarget")}if(i==="CONNECT"){throw new n("invalid method")}if(a&&typeof a!=="function"){throw new n("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(e){if(o.isStream(r)){o.destroy(r.on("error",o.nop),e)}throw e}this.responseHeaders=l||null;this.opaque=s||null;this.callback=t;this.res=null;this.abort=null;this.body=r;this.trailers={};this.context=null;this.onInfo=a||null;this.throwOnError=u;this.highWaterMark=p;if(o.isStream(r)){r.on("error",(e=>{this.onError(e)}))}c(this,A)}onConnect(e,t){if(!this.callback){throw new s}this.abort=e;this.context=t}onHeaders(e,t,A,n){const{callback:s,opaque:a,abort:c,context:l,responseHeaders:u,highWaterMark:p}=this;const g=u==="raw"?o.parseRawHeaders(t):o.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:g})}return}const d=u==="raw"?o.parseHeaders(t):g;const h=d["content-type"];const E=new i({resume:A,abort:c,contentType:h,highWaterMark:p});this.callback=null;this.res=E;if(s!==null){if(this.throwOnError&&e>=400){this.runInAsyncScope(r,null,{callback:s,body:E,contentType:h,statusCode:e,statusMessage:n,headers:g})}else{this.runInAsyncScope(s,null,null,{statusCode:e,headers:g,trailers:this.trailers,opaque:a,body:E,context:l})}}}onData(e){const{res:t}=this;return t.push(e)}onComplete(e){const{res:t}=this;l(this);o.parseHeaders(e,this.trailers);t.push(null)}onError(e){const{res:t,callback:A,body:i,opaque:n}=this;l(this);if(A){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(A,null,e,{opaque:n})}))}if(t){this.res=null;queueMicrotask((()=>{o.destroy(t,e)}))}if(i){this.body=null;o.destroy(i,e)}}}function request(e,t){if(t===undefined){return new Promise(((t,A)=>{request.call(this,e,((e,i)=>e?A(e):t(i)))}))}try{this.dispatch(e,new RequestHandler(e,t))}catch(A){if(typeof t!=="function"){throw A}const i=e&&e.opaque;queueMicrotask((()=>t(A,{opaque:i})))}}e.exports=request},5897:(e,t,A)=>{const{finished:i,PassThrough:n}=A(2781);const{InvalidArgumentError:s,InvalidReturnValueError:o,RequestAbortedError:r}=A(5143);const a=A(9980);const{getResolveErrorBodyCallback:c}=A(1338);const{AsyncResource:l}=A(852);const{addSignal:u,removeSignal:p}=A(7985);class StreamHandler extends l{constructor(e,t,A){if(!e||typeof e!=="object"){throw new s("invalid opts")}const{signal:i,method:n,opaque:o,body:r,onInfo:c,responseHeaders:l,throwOnError:p}=e;try{if(typeof A!=="function"){throw new s("invalid callback")}if(typeof t!=="function"){throw new s("invalid factory")}if(i&&typeof i.on!=="function"&&typeof i.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}if(n==="CONNECT"){throw new s("invalid method")}if(c&&typeof c!=="function"){throw new s("invalid onInfo callback")}super("UNDICI_STREAM")}catch(e){if(a.isStream(r)){a.destroy(r.on("error",a.nop),e)}throw e}this.responseHeaders=l||null;this.opaque=o||null;this.factory=t;this.callback=A;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=r;this.onInfo=c||null;this.throwOnError=p||false;if(a.isStream(r)){r.on("error",(e=>{this.onError(e)}))}u(this,i)}onConnect(e,t){if(!this.callback){throw new r}this.abort=e;this.context=t}onHeaders(e,t,A,s){const{factory:r,opaque:l,context:u,callback:p,responseHeaders:g}=this;const d=g==="raw"?a.parseRawHeaders(t):a.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:d})}return}this.factory=null;let h;if(this.throwOnError&&e>=400){const A=g==="raw"?a.parseHeaders(t):d;const i=A["content-type"];h=new n;this.callback=null;this.runInAsyncScope(c,null,{callback:p,body:h,contentType:i,statusCode:e,statusMessage:s,headers:d})}else{if(r===null){return}h=this.runInAsyncScope(r,null,{statusCode:e,headers:d,opaque:l,context:u});if(!h||typeof h.write!=="function"||typeof h.end!=="function"||typeof h.on!=="function"){throw new o("expected Writable")}i(h,{readable:false},(e=>{const{callback:t,res:A,opaque:i,trailers:n,abort:s}=this;this.res=null;if(e||!A.readable){a.destroy(A,e)}this.callback=null;this.runInAsyncScope(t,null,e||null,{opaque:i,trailers:n});if(e){s()}}))}h.on("drain",A);this.res=h;const E=h.writableNeedDrain!==undefined?h.writableNeedDrain:h._writableState&&h._writableState.needDrain;return E!==true}onData(e){const{res:t}=this;return t?t.write(e):true}onComplete(e){const{res:t}=this;p(this);if(!t){return}this.trailers=a.parseHeaders(e);t.end()}onError(e){const{res:t,callback:A,opaque:i,body:n}=this;p(this);this.factory=null;if(t){this.res=null;a.destroy(t,e)}else if(A){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(A,null,e,{opaque:i})}))}if(n){this.body=null;a.destroy(n,e)}}}function stream(e,t,A){if(A===undefined){return new Promise(((A,i)=>{stream.call(this,e,t,((e,t)=>e?i(e):A(t)))}))}try{this.dispatch(e,new StreamHandler(e,t,A))}catch(t){if(typeof A!=="function"){throw t}const i=e&&e.opaque;queueMicrotask((()=>A(t,{opaque:i})))}}e.exports=stream},6708:(e,t,A)=>{const{InvalidArgumentError:i,RequestAbortedError:n,SocketError:s}=A(5143);const{AsyncResource:o}=A(852);const r=A(9980);const{addSignal:a,removeSignal:c}=A(7985);const l=A(9491);class UpgradeHandler extends o{constructor(e,t){if(!e||typeof e!=="object"){throw new i("invalid opts")}if(typeof t!=="function"){throw new i("invalid callback")}const{signal:A,opaque:n,responseHeaders:s}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new i("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=s||null;this.opaque=n||null;this.callback=t;this.abort=null;this.context=null;a(this,A)}onConnect(e,t){if(!this.callback){throw new n}this.abort=e;this.context=null}onHeaders(){throw new s("bad upgrade",null)}onUpgrade(e,t,A){const{callback:i,opaque:n,context:s}=this;l.strictEqual(e,101);c(this);this.callback=null;const o=this.responseHeaders==="raw"?r.parseRawHeaders(t):r.parseHeaders(t);this.runInAsyncScope(i,null,null,{headers:o,socket:A,opaque:n,context:s})}onError(e){const{callback:t,opaque:A}=this;c(this);if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,e,{opaque:A})}))}}}function upgrade(e,t){if(t===undefined){return new Promise(((t,A)=>{upgrade.call(this,e,((e,i)=>e?A(e):t(i)))}))}try{const A=new UpgradeHandler(e,t);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},A)}catch(A){if(typeof t!=="function"){throw A}const i=e&&e.opaque;queueMicrotask((()=>t(A,{opaque:i})))}}e.exports=upgrade},4724:(e,t,A)=>{e.exports.request=A(2159);e.exports.stream=A(5897);e.exports.pipeline=A(4899);e.exports.upgrade=A(6708);e.exports.connect=A(5886)},4274:(e,t,A)=>{const i=A(9491);const{Readable:n}=A(2781);const{RequestAbortedError:s,NotSupportedError:o,InvalidArgumentError:r}=A(5143);const a=A(9980);const{ReadableStreamFrom:c,toUSVString:l}=A(9980);let u;const p=Symbol("kConsume");const g=Symbol("kReading");const d=Symbol("kBody");const h=Symbol("abort");const E=Symbol("kContentType");e.exports=class BodyReadable extends n{constructor({resume:e,abort:t,contentType:A="",highWaterMark:i=64*1024}){super({autoDestroy:true,read:e,highWaterMark:i});this._readableState.dataEmitted=false;this[h]=t;this[p]=null;this[d]=null;this[E]=A;this[g]=false}destroy(e){if(this.destroyed){return this}if(!e&&!this._readableState.endEmitted){e=new s}if(e){this[h]()}return super.destroy(e)}emit(e,...t){if(e==="data"){this._readableState.dataEmitted=true}else if(e==="error"){this._readableState.errorEmitted=true}return super.emit(e,...t)}on(e,...t){if(e==="data"||e==="readable"){this[g]=true}return super.on(e,...t)}addListener(e,...t){return this.on(e,...t)}off(e,...t){const A=super.off(e,...t);if(e==="data"||e==="readable"){this[g]=this.listenerCount("data")>0||this.listenerCount("readable")>0}return A}removeListener(e,...t){return this.off(e,...t)}push(e){if(this[p]&&e!==null&&this.readableLength===0){consumePush(this[p],e);return this[g]?super.push(e):true}return super.push(e)}async text(){return consume(this,"text")}async json(){return consume(this,"json")}async blob(){return consume(this,"blob")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new o}get bodyUsed(){return a.isDisturbed(this)}get body(){if(!this[d]){this[d]=c(this);if(this[p]){this[d].getReader();i(this[d].locked)}}return this[d]}async dump(e){let t=e&&Number.isFinite(e.limit)?e.limit:262144;const A=e&&e.signal;const abortFn=()=>{this.destroy()};let i;if(A){if(typeof A!=="object"||!("aborted"in A)){throw new r("signal must be an AbortSignal")}a.throwIfAborted(A);i=a.addAbortListener(A,abortFn)}try{for await(const e of this){a.throwIfAborted(A);t-=Buffer.byteLength(e);if(t<0){return}}}catch{a.throwIfAborted(A)}finally{if(typeof i==="function"){i()}else if(i){i[Symbol.dispose]()}}}};function isLocked(e){return e[d]&&e[d].locked===true||e[p]}function isUnusable(e){return a.isDisturbed(e)||isLocked(e)}async function consume(e,t){if(isUnusable(e)){throw new TypeError("unusable")}i(!e[p]);return new Promise(((A,i)=>{e[p]={type:t,stream:e,resolve:A,reject:i,length:0,body:[]};e.on("error",(function(e){consumeFinish(this[p],e)})).on("close",(function(){if(this[p].body!==null){consumeFinish(this[p],new s)}}));process.nextTick(consumeStart,e[p])}))}function consumeStart(e){if(e.body===null){return}const{_readableState:t}=e.stream;for(const A of t.buffer){consumePush(e,A)}if(t.endEmitted){consumeEnd(this[p])}else{e.stream.on("end",(function(){consumeEnd(this[p])}))}e.stream.resume();while(e.stream.read()!=null){}}function consumeEnd(e){const{type:t,body:i,resolve:n,stream:s,length:o}=e;try{if(t==="text"){n(l(Buffer.concat(i)))}else if(t==="json"){n(JSON.parse(Buffer.concat(i)))}else if(t==="arrayBuffer"){const e=new Uint8Array(o);let t=0;for(const A of i){e.set(A,t);t+=A.byteLength}n(e.buffer)}else if(t==="blob"){if(!u){u=A(4300).Blob}n(new u(i,{type:s[E]}))}consumeFinish(e)}catch(e){s.destroy(e)}}function consumePush(e,t){e.length+=t.length;e.body.push(t)}function consumeFinish(e,t){if(e.body===null){return}if(t){e.reject(t)}else{e.resolve()}e.type=null;e.stream=null;e.resolve=null;e.reject=null;e.length=0;e.body=null}},1338:(e,t,A)=>{const i=A(9491);const{ResponseStatusCodeError:n}=A(5143);const{toUSVString:s}=A(9980);async function getResolveErrorBodyCallback({callback:e,body:t,contentType:A,statusCode:o,statusMessage:r,headers:a}){i(t);let c=[];let l=0;for await(const e of t){c.push(e);l+=e.length;if(l>128*1024){c=null;break}}if(o===204||!A||!c){process.nextTick(e,new n(`Response status code ${o}${r?`: ${r}`:""}`,o,a));return}try{if(A.startsWith("application/json")){const t=JSON.parse(s(Buffer.concat(c)));process.nextTick(e,new n(`Response status code ${o}${r?`: ${r}`:""}`,o,a,t));return}if(A.startsWith("text/")){const t=s(Buffer.concat(c));process.nextTick(e,new n(`Response status code ${o}${r?`: ${r}`:""}`,o,a,t));return}}catch(e){}process.nextTick(e,new n(`Response status code ${o}${r?`: ${r}`:""}`,o,a))}e.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback}},2737:(e,t,A)=>{const{BalancedPoolMissingUpstreamError:i,InvalidArgumentError:n}=A(5143);const{PoolBase:s,kClients:o,kNeedDrain:r,kAddClient:a,kRemoveClient:c,kGetDispatcher:l}=A(8234);const u=A(8429);const{kUrl:p,kInterceptors:g}=A(7282);const{parseOrigin:d}=A(9980);const h=Symbol("factory");const E=Symbol("options");const C=Symbol("kGreatestCommonDivisor");const Q=Symbol("kCurrentWeight");const f=Symbol("kIndex");const B=Symbol("kWeight");const I=Symbol("kMaxWeightPerServer");const m=Symbol("kErrorPenalty");function getGreatestCommonDivisor(e,t){if(t===0)return e;return getGreatestCommonDivisor(t,e%t)}function defaultFactory(e,t){return new u(e,t)}class BalancedPool extends s{constructor(e=[],{factory:t=defaultFactory,...A}={}){super();this[E]=A;this[f]=-1;this[Q]=0;this[I]=this[E].maxWeightPerServer||100;this[m]=this[E].errorPenalty||15;if(!Array.isArray(e)){e=[e]}if(typeof t!=="function"){throw new n("factory must be a function.")}this[g]=A.interceptors&&A.interceptors.BalancedPool&&Array.isArray(A.interceptors.BalancedPool)?A.interceptors.BalancedPool:[];this[h]=t;for(const t of e){this.addUpstream(t)}this._updateBalancedPoolStats()}addUpstream(e){const t=d(e).origin;if(this[o].find((e=>e[p].origin===t&&e.closed!==true&&e.destroyed!==true))){return this}const A=this[h](t,Object.assign({},this[E]));this[a](A);A.on("connect",(()=>{A[B]=Math.min(this[I],A[B]+this[m])}));A.on("connectionError",(()=>{A[B]=Math.max(1,A[B]-this[m]);this._updateBalancedPoolStats()}));A.on("disconnect",((...e)=>{const t=e[2];if(t&&t.code==="UND_ERR_SOCKET"){A[B]=Math.max(1,A[B]-this[m]);this._updateBalancedPoolStats()}}));for(const e of this[o]){e[B]=this[I]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){this[C]=this[o].map((e=>e[B])).reduce(getGreatestCommonDivisor,0)}removeUpstream(e){const t=d(e).origin;const A=this[o].find((e=>e[p].origin===t&&e.closed!==true&&e.destroyed!==true));if(A){this[c](A)}return this}get upstreams(){return this[o].filter((e=>e.closed!==true&&e.destroyed!==true)).map((e=>e[p].origin))}[l](){if(this[o].length===0){throw new i}const e=this[o].find((e=>!e[r]&&e.closed!==true&&e.destroyed!==true));if(!e){return}const t=this[o].map((e=>e[r])).reduce(((e,t)=>e&&t),true);if(t){return}let A=0;let n=this[o].findIndex((e=>!e[r]));while(A++this[o][n][B]&&!e[r]){n=this[f]}if(this[f]===0){this[Q]=this[Q]-this[C];if(this[Q]<=0){this[Q]=this[I]}}if(e[B]>=this[Q]&&!e[r]){return e}}this[Q]=this[o][n][B];this[f]=n;return this[o][n]}}e.exports=BalancedPool},5343:(e,t,A)=>{const{kConstruct:i}=A(8708);const{urlEquals:n,fieldValues:s}=A(2083);const{kEnumerableProperty:o,isDisturbed:r}=A(9980);const{kHeadersList:a}=A(7282);const{webidl:c}=A(9342);const{Response:l,cloneResponse:u}=A(5450);const{Request:p}=A(3010);const{kState:g,kHeaders:d,kGuard:h,kRealm:E}=A(3166);const{fetching:C}=A(8874);const{urlIsHttpHttpsScheme:Q,createDeferredPromise:f,readAllBytes:B}=A(5422);const I=A(9491);const{getGlobalDispatcher:m}=A(4339);class Cache{#e;constructor(){if(arguments[0]!==i){c.illegalConstructor()}this.#e=arguments[1]}async match(e,t={}){c.brandCheck(this,Cache);c.argumentLengthCheck(arguments,1,{header:"Cache.match"});e=c.converters.RequestInfo(e);t=c.converters.CacheQueryOptions(t);const A=await this.matchAll(e,t);if(A.length===0){return}return A[0]}async matchAll(e=undefined,t={}){c.brandCheck(this,Cache);if(e!==undefined)e=c.converters.RequestInfo(e);t=c.converters.CacheQueryOptions(t);let A=null;if(e!==undefined){if(e instanceof p){A=e[g];if(A.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){A=new p(e)[g]}}const i=[];if(e===undefined){for(const e of this.#e){i.push(e[1])}}else{const e=this.#t(A,t);for(const t of e){i.push(t[1])}}const n=[];for(const e of i){const t=new l(e.body?.source??null);const A=t[g].body;t[g]=e;t[g].body=A;t[d][a]=e.headersList;t[d][h]="immutable";n.push(t)}return Object.freeze(n)}async add(e){c.brandCheck(this,Cache);c.argumentLengthCheck(arguments,1,{header:"Cache.add"});e=c.converters.RequestInfo(e);const t=[e];const A=this.addAll(t);return await A}async addAll(e){c.brandCheck(this,Cache);c.argumentLengthCheck(arguments,1,{header:"Cache.addAll"});e=c.converters["sequence"](e);const t=[];const A=[];for(const t of e){if(typeof t==="string"){continue}const e=t[g];if(!Q(e.url)||e.method!=="GET"){throw c.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}}const i=[];for(const n of e){const e=new p(n)[g];if(!Q(e.url)){throw c.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."})}e.initiator="fetch";e.destination="subresource";A.push(e);const o=f();i.push(C({request:e,dispatcher:m(),processResponse(e){if(e.type==="error"||e.status===206||e.status<200||e.status>299){o.reject(c.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(e.headersList.contains("vary")){const t=s(e.headersList.get("vary"));for(const e of t){if(e==="*"){o.reject(c.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const e of i){e.abort()}return}}}},processResponseEndOfBody(e){if(e.aborted){o.reject(new DOMException("aborted","AbortError"));return}o.resolve(e)}}));t.push(o.promise)}const n=Promise.all(t);const o=await n;const r=[];let a=0;for(const e of o){const t={type:"put",request:A[a],response:e};r.push(t);a++}const l=f();let u=null;try{this.#A(r)}catch(e){u=e}queueMicrotask((()=>{if(u===null){l.resolve(undefined)}else{l.reject(u)}}));return l.promise}async put(e,t){c.brandCheck(this,Cache);c.argumentLengthCheck(arguments,2,{header:"Cache.put"});e=c.converters.RequestInfo(e);t=c.converters.Response(t);let A=null;if(e instanceof p){A=e[g]}else{A=new p(e)[g]}if(!Q(A.url)||A.method!=="GET"){throw c.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"})}const i=t[g];if(i.status===206){throw c.errors.exception({header:"Cache.put",message:"Got 206 status"})}if(i.headersList.contains("vary")){const e=s(i.headersList.get("vary"));for(const t of e){if(t==="*"){throw c.errors.exception({header:"Cache.put",message:"Got * vary field value"})}}}if(i.body&&(r(i.body.stream)||i.body.stream.locked)){throw c.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"})}const n=u(i);const o=f();if(i.body!=null){const e=i.body.stream;const t=e.getReader();B(t).then(o.resolve,o.reject)}else{o.resolve(undefined)}const a=[];const l={type:"put",request:A,response:n};a.push(l);const d=await o.promise;if(n.body!=null){n.body.source=d}const h=f();let E=null;try{this.#A(a)}catch(e){E=e}queueMicrotask((()=>{if(E===null){h.resolve()}else{h.reject(E)}}));return h.promise}async delete(e,t={}){c.brandCheck(this,Cache);c.argumentLengthCheck(arguments,1,{header:"Cache.delete"});e=c.converters.RequestInfo(e);t=c.converters.CacheQueryOptions(t);let A=null;if(e instanceof p){A=e[g];if(A.method!=="GET"&&!t.ignoreMethod){return false}}else{I(typeof e==="string");A=new p(e)[g]}const i=[];const n={type:"delete",request:A,options:t};i.push(n);const s=f();let o=null;let r;try{r=this.#A(i)}catch(e){o=e}queueMicrotask((()=>{if(o===null){s.resolve(!!r?.length)}else{s.reject(o)}}));return s.promise}async keys(e=undefined,t={}){c.brandCheck(this,Cache);if(e!==undefined)e=c.converters.RequestInfo(e);t=c.converters.CacheQueryOptions(t);let A=null;if(e!==undefined){if(e instanceof p){A=e[g];if(A.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){A=new p(e)[g]}}const i=f();const n=[];if(e===undefined){for(const e of this.#e){n.push(e[0])}}else{const e=this.#t(A,t);for(const t of e){n.push(t[0])}}queueMicrotask((()=>{const e=[];for(const t of n){const A=new p("https://a");A[g]=t;A[d][a]=t.headersList;A[d][h]="immutable";A[E]=t.client;e.push(A)}i.resolve(Object.freeze(e))}));return i.promise}#A(e){const t=this.#e;const A=[...t];const i=[];const n=[];try{for(const A of e){if(A.type!=="delete"&&A.type!=="put"){throw c.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(A.type==="delete"&&A.response!=null){throw c.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#t(A.request,A.options,i).length){throw new DOMException("???","InvalidStateError")}let e;if(A.type==="delete"){e=this.#t(A.request,A.options);if(e.length===0){return[]}for(const A of e){const e=t.indexOf(A);I(e!==-1);t.splice(e,1)}}else if(A.type==="put"){if(A.response==null){throw c.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const n=A.request;if(!Q(n.url)){throw c.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(n.method!=="GET"){throw c.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(A.options!=null){throw c.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}e=this.#t(A.request);for(const A of e){const e=t.indexOf(A);I(e!==-1);t.splice(e,1)}t.push([A.request,A.response]);i.push([A.request,A.response])}n.push([A.request,A.response])}return n}catch(e){this.#e.length=0;this.#e=A;throw e}}#t(e,t,A){const i=[];const n=A??this.#e;for(const A of n){const[n,s]=A;if(this.#i(e,n,s,t)){i.push(A)}}return i}#i(e,t,A=null,i){const o=new URL(e.url);const r=new URL(t.url);if(i?.ignoreSearch){r.search="";o.search=""}if(!n(o,r,true)){return false}if(A==null||i?.ignoreVary||!A.headersList.contains("vary")){return true}const a=s(A.headersList.get("vary"));for(const A of a){if(A==="*"){return false}const i=t.headersList.get(A);const n=e.headersList.get(A);if(i!==n){return false}}return true}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:o,matchAll:o,add:o,addAll:o,put:o,delete:o,keys:o});const b=[{key:"ignoreSearch",converter:c.converters.boolean,defaultValue:false},{key:"ignoreMethod",converter:c.converters.boolean,defaultValue:false},{key:"ignoreVary",converter:c.converters.boolean,defaultValue:false}];c.converters.CacheQueryOptions=c.dictionaryConverter(b);c.converters.MultiCacheQueryOptions=c.dictionaryConverter([...b,{key:"cacheName",converter:c.converters.DOMString}]);c.converters.Response=c.interfaceConverter(l);c.converters["sequence"]=c.sequenceConverter(c.converters.RequestInfo);e.exports={Cache:Cache}},3365:(e,t,A)=>{const{kConstruct:i}=A(8708);const{Cache:n}=A(5343);const{webidl:s}=A(9342);const{kEnumerableProperty:o}=A(9980);class CacheStorage{#n=new Map;constructor(){if(arguments[0]!==i){s.illegalConstructor()}}async match(e,t={}){s.brandCheck(this,CacheStorage);s.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"});e=s.converters.RequestInfo(e);t=s.converters.MultiCacheQueryOptions(t);if(t.cacheName!=null){if(this.#n.has(t.cacheName)){const A=this.#n.get(t.cacheName);const s=new n(i,A);return await s.match(e,t)}}else{for(const A of this.#n.values()){const s=new n(i,A);const o=await s.match(e,t);if(o!==undefined){return o}}}}async has(e){s.brandCheck(this,CacheStorage);s.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"});e=s.converters.DOMString(e);return this.#n.has(e)}async open(e){s.brandCheck(this,CacheStorage);s.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"});e=s.converters.DOMString(e);if(this.#n.has(e)){const t=this.#n.get(e);return new n(i,t)}const t=[];this.#n.set(e,t);return new n(i,t)}async delete(e){s.brandCheck(this,CacheStorage);s.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"});e=s.converters.DOMString(e);return this.#n.delete(e)}async keys(){s.brandCheck(this,CacheStorage);const e=this.#n.keys();return[...e]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:o,has:o,open:o,delete:o,keys:o});e.exports={CacheStorage:CacheStorage}},8708:e=>{e.exports={kConstruct:Symbol("constructable")}},2083:(e,t,A)=>{const i=A(9491);const{URLSerializer:n}=A(3513);const{isValidHeaderName:s}=A(5422);function urlEquals(e,t,A=false){const i=n(e,A);const s=n(t,A);return i===s}function fieldValues(e){i(e!==null);const t=[];for(let A of e.split(",")){A=A.trim();if(!A.length){continue}else if(!s(A)){continue}t.push(A)}return t}e.exports={urlEquals:urlEquals,fieldValues:fieldValues}},2520:(e,t,A)=>{const i=A(9491);const n=A(1808);const s=A(3685);const{pipeline:o}=A(2781);const r=A(9980);const a=A(7018);const c=A(2691);const l=A(7958);const{RequestContentLengthMismatchError:u,ResponseContentLengthMismatchError:p,InvalidArgumentError:g,RequestAbortedError:d,HeadersTimeoutError:h,HeadersOverflowError:E,SocketError:C,InformationalError:Q,BodyTimeoutError:f,HTTPParserError:B,ResponseExceededMaxSizeError:I,ClientDestroyedError:m}=A(5143);const b=A(7899);const{kUrl:y,kReset:w,kServerName:v,kClient:R,kBusy:x,kParser:D,kConnect:k,kBlocking:F,kResuming:S,kRunning:N,kPending:U,kSize:L,kWriting:M,kQueue:T,kConnected:_,kConnecting:Y,kNeedDrain:H,kNoRef:J,kKeepAliveDefaultTimeout:G,kHostHeader:O,kPendingIdx:V,kRunningIdx:P,kError:q,kPipelining:W,kSocket:j,kKeepAliveTimeoutValue:z,kMaxHeadersSize:X,kKeepAliveMaxTimeout:Z,kKeepAliveTimeoutThreshold:K,kHeadersTimeout:$,kBodyTimeout:ee,kStrictContentLength:te,kConnector:Ae,kMaxRedirections:ie,kMaxRequests:ne,kCounter:se,kClose:oe,kDestroy:re,kDispatch:ae,kInterceptors:ce,kLocalAddress:le,kMaxResponseSize:ue,kHTTPConnVersion:pe,kHost:ge,kHTTP2Session:de,kHTTP2SessionState:he,kHTTP2BuildRequest:Ee,kHTTP2CopyHeaders:Ce,kHTTP1BuildRequest:Qe}=A(7282);let fe;try{fe=A(5158)}catch{fe={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:Be,HTTP2_HEADER_METHOD:Ie,HTTP2_HEADER_PATH:me,HTTP2_HEADER_SCHEME:be,HTTP2_HEADER_CONTENT_LENGTH:ye,HTTP2_HEADER_EXPECT:we,HTTP2_HEADER_STATUS:ve}}=fe;let Re=false;const xe=Buffer[Symbol.species];const De=Symbol("kClosedResolve");const ke={};try{const e=A(7643);ke.sendHeaders=e.channel("undici:client:sendHeaders");ke.beforeConnect=e.channel("undici:client:beforeConnect");ke.connectError=e.channel("undici:client:connectError");ke.connected=e.channel("undici:client:connected")}catch{ke.sendHeaders={hasSubscribers:false};ke.beforeConnect={hasSubscribers:false};ke.connectError={hasSubscribers:false};ke.connected={hasSubscribers:false}}class Client extends l{constructor(e,{interceptors:t,maxHeaderSize:A,headersTimeout:i,socketTimeout:o,requestTimeout:a,connectTimeout:c,bodyTimeout:l,idleTimeout:u,keepAlive:p,keepAliveTimeout:d,maxKeepAliveTimeout:h,keepAliveMaxTimeout:E,keepAliveTimeoutThreshold:C,socketPath:Q,pipelining:f,tls:B,strictContentLength:I,maxCachedSessions:m,maxRedirections:w,connect:R,maxRequestsPerClient:x,localAddress:D,maxResponseSize:k,autoSelectFamily:F,autoSelectFamilyAttemptTimeout:N,allowH2:U,maxConcurrentStreams:L}={}){super();if(p!==undefined){throw new g("unsupported keepAlive, use pipelining=0 instead")}if(o!==undefined){throw new g("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(a!==undefined){throw new g("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(u!==undefined){throw new g("unsupported idleTimeout, use keepAliveTimeout instead")}if(h!==undefined){throw new g("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(A!=null&&!Number.isFinite(A)){throw new g("invalid maxHeaderSize")}if(Q!=null&&typeof Q!=="string"){throw new g("invalid socketPath")}if(c!=null&&(!Number.isFinite(c)||c<0)){throw new g("invalid connectTimeout")}if(d!=null&&(!Number.isFinite(d)||d<=0)){throw new g("invalid keepAliveTimeout")}if(E!=null&&(!Number.isFinite(E)||E<=0)){throw new g("invalid keepAliveMaxTimeout")}if(C!=null&&!Number.isFinite(C)){throw new g("invalid keepAliveTimeoutThreshold")}if(i!=null&&(!Number.isInteger(i)||i<0)){throw new g("headersTimeout must be a positive integer or zero")}if(l!=null&&(!Number.isInteger(l)||l<0)){throw new g("bodyTimeout must be a positive integer or zero")}if(R!=null&&typeof R!=="function"&&typeof R!=="object"){throw new g("connect must be a function or an object")}if(w!=null&&(!Number.isInteger(w)||w<0)){throw new g("maxRedirections must be a positive number")}if(x!=null&&(!Number.isInteger(x)||x<0)){throw new g("maxRequestsPerClient must be a positive number")}if(D!=null&&(typeof D!=="string"||n.isIP(D)===0)){throw new g("localAddress must be valid string IP address")}if(k!=null&&(!Number.isInteger(k)||k<-1)){throw new g("maxResponseSize must be a positive number")}if(N!=null&&(!Number.isInteger(N)||N<-1)){throw new g("autoSelectFamilyAttemptTimeout must be a positive number")}if(U!=null&&typeof U!=="boolean"){throw new g("allowH2 must be a valid boolean value")}if(L!=null&&(typeof L!=="number"||L<1)){throw new g("maxConcurrentStreams must be a possitive integer, greater than 0")}if(typeof R!=="function"){R=b({...B,maxCachedSessions:m,allowH2:U,socketPath:Q,timeout:c,...r.nodeHasAutoSelectFamily&&F?{autoSelectFamily:F,autoSelectFamilyAttemptTimeout:N}:undefined,...R})}this[ce]=t&&t.Client&&Array.isArray(t.Client)?t.Client:[Se({maxRedirections:w})];this[y]=r.parseOrigin(e);this[Ae]=R;this[j]=null;this[W]=f!=null?f:1;this[X]=A||s.maxHeaderSize;this[G]=d==null?4e3:d;this[Z]=E==null?6e5:E;this[K]=C==null?1e3:C;this[z]=this[G];this[v]=null;this[le]=D!=null?D:null;this[S]=0;this[H]=0;this[O]=`host: ${this[y].hostname}${this[y].port?`:${this[y].port}`:""}\r\n`;this[ee]=l!=null?l:3e5;this[$]=i!=null?i:3e5;this[te]=I==null?true:I;this[ie]=w;this[ne]=x;this[De]=null;this[ue]=k>-1?k:-1;this[pe]="h1";this[de]=null;this[he]=!U?null:{openStreams:0,maxConcurrentStreams:L!=null?L:100};this[ge]=`${this[y].hostname}${this[y].port?`:${this[y].port}`:""}`;this[T]=[];this[P]=0;this[V]=0}get pipelining(){return this[W]}set pipelining(e){this[W]=e;resume(this,true)}get[U](){return this[T].length-this[V]}get[N](){return this[V]-this[P]}get[L](){return this[T].length-this[P]}get[_](){return!!this[j]&&!this[Y]&&!this[j].destroyed}get[x](){const e=this[j];return e&&(e[w]||e[M]||e[F])||this[L]>=(this[W]||1)||this[U]>0}[k](e){connect(this);this.once("connect",e)}[ae](e,t){const A=e.origin||this[y].origin;const i=this[pe]==="h2"?c[Ee](A,e,t):c[Qe](A,e,t);this[T].push(i);if(this[S]){}else if(r.bodyLength(i.body)==null&&r.isIterable(i.body)){this[S]=1;process.nextTick(resume,this)}else{resume(this,true)}if(this[S]&&this[H]!==2&&this[x]){this[H]=2}return this[H]<2}async[oe](){return new Promise((e=>{if(!this[L]){e(null)}else{this[De]=e}}))}async[re](e){return new Promise((t=>{const A=this[T].splice(this[V]);for(let t=0;t{if(this[De]){this[De]();this[De]=null}t()};if(this[de]!=null){r.destroy(this[de],e);this[de]=null;this[he]=null}if(!this[j]){queueMicrotask(callback)}else{r.destroy(this[j].on("close",callback),e)}resume(this)}))}}function onHttp2SessionError(e){i(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[j][q]=e;onError(this[R],e)}function onHttp2FrameError(e,t,A){const i=new Q(`HTTP/2: "frameError" received - type ${e}, code ${t}`);if(A===0){this[j][q]=i;onError(this[R],i)}}function onHttp2SessionEnd(){r.destroy(this,new C("other side closed"));r.destroy(this[j],new C("other side closed"))}function onHTTP2GoAway(e){const t=this[R];const A=new Q(`HTTP/2: "GOAWAY" frame received with code ${e}`);t[j]=null;t[de]=null;if(t.destroyed){i(this[U]===0);const e=t[T].splice(t[P]);for(let t=0;t0){const e=t[T][t[P]];t[T][t[P]++]=null;errorRequest(t,e,A)}t[V]=t[P];i(t[N]===0);t.emit("disconnect",t[y],[t],A);resume(t)}const Fe=A(5082);const Se=A(2683);const Ne=Buffer.alloc(0);async function lazyllhttp(){const e=process.env.JEST_WORKER_ID?A(3720):undefined;let t;try{t=await WebAssembly.compile(Buffer.from(A(7410),"base64"))}catch(i){t=await WebAssembly.compile(Buffer.from(e||A(3720),"base64"))}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(e,t,A)=>0,wasm_on_status:(e,t,A)=>{i.strictEqual(Me.ptr,e);const n=t-Ye+Te.byteOffset;return Me.onStatus(new xe(Te.buffer,n,A))||0},wasm_on_message_begin:e=>{i.strictEqual(Me.ptr,e);return Me.onMessageBegin()||0},wasm_on_header_field:(e,t,A)=>{i.strictEqual(Me.ptr,e);const n=t-Ye+Te.byteOffset;return Me.onHeaderField(new xe(Te.buffer,n,A))||0},wasm_on_header_value:(e,t,A)=>{i.strictEqual(Me.ptr,e);const n=t-Ye+Te.byteOffset;return Me.onHeaderValue(new xe(Te.buffer,n,A))||0},wasm_on_headers_complete:(e,t,A,n)=>{i.strictEqual(Me.ptr,e);return Me.onHeadersComplete(t,Boolean(A),Boolean(n))||0},wasm_on_body:(e,t,A)=>{i.strictEqual(Me.ptr,e);const n=t-Ye+Te.byteOffset;return Me.onBody(new xe(Te.buffer,n,A))||0},wasm_on_message_complete:e=>{i.strictEqual(Me.ptr,e);return Me.onMessageComplete()||0}}})}let Ue=null;let Le=lazyllhttp();Le.catch();let Me=null;let Te=null;let _e=0;let Ye=null;const He=1;const Je=2;const Ge=3;class Parser{constructor(e,t,{exports:A}){i(Number.isFinite(e[X])&&e[X]>0);this.llhttp=A;this.ptr=this.llhttp.llhttp_alloc(Fe.TYPE.RESPONSE);this.client=e;this.socket=t;this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.statusCode=null;this.statusText="";this.upgrade=false;this.headers=[];this.headersSize=0;this.headersMaxSize=e[X];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=e[ue]}setTimeout(e,t){this.timeoutType=t;if(e!==this.timeoutValue){a.clearTimeout(this.timeout);if(e){this.timeout=a.setTimeout(onParserTimeout,e,this);if(this.timeout.unref){this.timeout.unref()}}else{this.timeout=null}this.timeoutValue=e}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}}resume(){if(this.socket.destroyed||!this.paused){return}i(this.ptr!=null);i(Me==null);this.llhttp.llhttp_resume(this.ptr);i(this.timeoutType===Je);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||Ne);this.readMore()}readMore(){while(!this.paused&&this.ptr){const e=this.socket.read();if(e===null){break}this.execute(e)}}execute(e){i(this.ptr!=null);i(Me==null);i(!this.paused);const{socket:t,llhttp:A}=this;if(e.length>_e){if(Ye){A.free(Ye)}_e=Math.ceil(e.length/4096)*4096;Ye=A.malloc(_e)}new Uint8Array(A.memory.buffer,Ye,_e).set(e);try{let i;try{Te=e;Me=this;i=A.llhttp_execute(this.ptr,Ye,e.length)}catch(e){throw e}finally{Me=null;Te=null}const n=A.llhttp_get_error_pos(this.ptr)-Ye;if(i===Fe.ERROR.PAUSED_UPGRADE){this.onUpgrade(e.slice(n))}else if(i===Fe.ERROR.PAUSED){this.paused=true;t.unshift(e.slice(n))}else if(i!==Fe.ERROR.OK){const t=A.llhttp_get_error_reason(this.ptr);let s="";if(t){const e=new Uint8Array(A.memory.buffer,t).indexOf(0);s="Response does not match the HTTP/1.1 protocol ("+Buffer.from(A.memory.buffer,t,e).toString()+")"}throw new B(s,Fe.ERROR[i],e.slice(n))}}catch(e){r.destroy(t,e)}}destroy(){i(this.ptr!=null);i(Me==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;a.clearTimeout(this.timeout);this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.paused=false}onStatus(e){this.statusText=e.toString()}onMessageBegin(){const{socket:e,client:t}=this;if(e.destroyed){return-1}const A=t[T][t[P]];if(!A){return-1}}onHeaderField(e){const t=this.headers.length;if((t&1)===0){this.headers.push(e)}else{this.headers[t-1]=Buffer.concat([this.headers[t-1],e])}this.trackHeader(e.length)}onHeaderValue(e){let t=this.headers.length;if((t&1)===1){this.headers.push(e);t+=1}else{this.headers[t-1]=Buffer.concat([this.headers[t-1],e])}const A=this.headers[t-2];if(A.length===10&&A.toString().toLowerCase()==="keep-alive"){this.keepAlive+=e.toString()}else if(A.length===10&&A.toString().toLowerCase()==="connection"){this.connection+=e.toString()}else if(A.length===14&&A.toString().toLowerCase()==="content-length"){this.contentLength+=e.toString()}this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e;if(this.headersSize>=this.headersMaxSize){r.destroy(this.socket,new E)}}onUpgrade(e){const{upgrade:t,client:A,socket:n,headers:s,statusCode:o}=this;i(t);const a=A[T][A[P]];i(a);i(!n.destroyed);i(n===A[j]);i(!this.paused);i(a.upgrade||a.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;i(this.headers.length%2===0);this.headers=[];this.headersSize=0;n.unshift(e);n[D].destroy();n[D]=null;n[R]=null;n[q]=null;n.removeListener("error",onSocketError).removeListener("readable",onSocketReadable).removeListener("end",onSocketEnd).removeListener("close",onSocketClose);A[j]=null;A[T][A[P]++]=null;A.emit("disconnect",A[y],[A],new Q("upgrade"));try{a.onUpgrade(o,s,n)}catch(e){r.destroy(n,e)}resume(A)}onHeadersComplete(e,t,A){const{client:n,socket:s,headers:o,statusText:a}=this;if(s.destroyed){return-1}const c=n[T][n[P]];if(!c){return-1}i(!this.upgrade);i(this.statusCode<200);if(e===100){r.destroy(s,new C("bad response",r.getSocketInfo(s)));return-1}if(t&&!c.upgrade){r.destroy(s,new C("bad upgrade",r.getSocketInfo(s)));return-1}i.strictEqual(this.timeoutType,He);this.statusCode=e;this.shouldKeepAlive=A||c.method==="HEAD"&&!s[w]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const e=c.bodyTimeout!=null?c.bodyTimeout:n[ee];this.setTimeout(e,Je)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(c.method==="CONNECT"){i(n[N]===1);this.upgrade=true;return 2}if(t){i(n[N]===1);this.upgrade=true;return 2}i(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&n[W]){const e=this.keepAlive?r.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){const t=Math.min(e-n[K],n[Z]);if(t<=0){s[w]=true}else{n[z]=t}}else{n[z]=n[G]}}else{s[w]=true}let l;try{l=c.onHeaders(e,o,this.resume,a)===false}catch(e){r.destroy(s,e);return-1}if(c.method==="HEAD"){return 1}if(e<200){return 1}if(s[F]){s[F]=false;resume(n)}return l?Fe.ERROR.PAUSED:0}onBody(e){const{client:t,socket:A,statusCode:n,maxResponseSize:s}=this;if(A.destroyed){return-1}const o=t[T][t[P]];i(o);i.strictEqual(this.timeoutType,Je);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}i(n>=200);if(s>-1&&this.bytesRead+e.length>s){r.destroy(A,new I);return-1}this.bytesRead+=e.length;try{if(o.onData(e)===false){return Fe.ERROR.PAUSED}}catch(e){r.destroy(A,e);return-1}}onMessageComplete(){const{client:e,socket:t,statusCode:A,upgrade:n,headers:s,contentLength:o,bytesRead:a,shouldKeepAlive:c}=this;if(t.destroyed&&(!A||c)){return-1}if(n){return}const l=e[T][e[P]];i(l);i(A>=100);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";i(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(A<200){return}if(l.method!=="HEAD"&&o&&a!==parseInt(o,10)){r.destroy(t,new p);return-1}try{l.onComplete(s)}catch(t){errorRequest(e,l,t)}e[T][e[P]++]=null;if(t[M]){i.strictEqual(e[N],0);r.destroy(t,new Q("reset"));return Fe.ERROR.PAUSED}else if(!c){r.destroy(t,new Q("reset"));return Fe.ERROR.PAUSED}else if(t[w]&&e[N]===0){r.destroy(t,new Q("reset"));return Fe.ERROR.PAUSED}else if(e[W]===1){setImmediate(resume,e)}else{resume(e)}}}function onParserTimeout(e){const{socket:t,timeoutType:A,client:n}=e;if(A===He){if(!t[M]||t.writableNeedDrain||n[N]>1){i(!e.paused,"cannot be paused while waiting for headers");r.destroy(t,new h)}}else if(A===Je){if(!e.paused){r.destroy(t,new f)}}else if(A===Ge){i(n[N]===0&&n[z]);r.destroy(t,new Q("socket idle timeout"))}}function onSocketReadable(){const{[D]:e}=this;if(e){e.readMore()}}function onSocketError(e){const{[R]:t,[D]:A}=this;i(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");if(t[pe]!=="h2"){if(e.code==="ECONNRESET"&&A.statusCode&&!A.shouldKeepAlive){A.onMessageComplete();return}}this[q]=e;onError(this[R],e)}function onError(e,t){if(e[N]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){i(e[V]===e[P]);const A=e[T].splice(e[P]);for(let i=0;i0&&A.code!=="UND_ERR_INFO"){const t=e[T][e[P]];e[T][e[P]++]=null;errorRequest(e,t,A)}e[V]=e[P];i(e[N]===0);e.emit("disconnect",e[y],[e],A);resume(e)}async function connect(e){i(!e[Y]);i(!e[j]);let{host:t,hostname:A,protocol:s,port:o}=e[y];if(A[0]==="["){const e=A.indexOf("]");i(e!==-1);const t=A.substr(1,e-1);i(n.isIP(t));A=t}e[Y]=true;if(ke.beforeConnect.hasSubscribers){ke.beforeConnect.publish({connectParams:{host:t,hostname:A,protocol:s,port:o,servername:e[v],localAddress:e[le]},connector:e[Ae]})}try{const n=await new Promise(((i,n)=>{e[Ae]({host:t,hostname:A,protocol:s,port:o,servername:e[v],localAddress:e[le]},((e,t)=>{if(e){n(e)}else{i(t)}}))}));if(e.destroyed){r.destroy(n.on("error",(()=>{})),new m);return}e[Y]=false;i(n);const a=n.alpnProtocol==="h2";if(a){if(!Re){Re=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const t=fe.connect(e[y],{createConnection:()=>n,peerMaxConcurrentStreams:e[he].maxConcurrentStreams});e[pe]="h2";t[R]=e;t[j]=n;t.on("error",onHttp2SessionError);t.on("frameError",onHttp2FrameError);t.on("end",onHttp2SessionEnd);t.on("goaway",onHTTP2GoAway);t.on("close",onSocketClose);t.unref();e[de]=t;n[de]=t}else{if(!Ue){Ue=await Le;Le=null}n[J]=false;n[M]=false;n[w]=false;n[F]=false;n[D]=new Parser(e,n,Ue)}n[se]=0;n[ne]=e[ne];n[R]=e;n[q]=null;n.on("error",onSocketError).on("readable",onSocketReadable).on("end",onSocketEnd).on("close",onSocketClose);e[j]=n;if(ke.connected.hasSubscribers){ke.connected.publish({connectParams:{host:t,hostname:A,protocol:s,port:o,servername:e[v],localAddress:e[le]},connector:e[Ae],socket:n})}e.emit("connect",e[y],[e])}catch(n){if(e.destroyed){return}e[Y]=false;if(ke.connectError.hasSubscribers){ke.connectError.publish({connectParams:{host:t,hostname:A,protocol:s,port:o,servername:e[v],localAddress:e[le]},connector:e[Ae],error:n})}if(n.code==="ERR_TLS_CERT_ALTNAME_INVALID"){i(e[N]===0);while(e[U]>0&&e[T][e[V]].servername===e[v]){const t=e[T][e[V]++];errorRequest(e,t,n)}}else{onError(e,n)}e.emit("connectionError",e[y],[e],n)}resume(e)}function emitDrain(e){e[H]=0;e.emit("drain",e[y],[e])}function resume(e,t){if(e[S]===2){return}e[S]=2;_resume(e,t);e[S]=0;if(e[P]>256){e[T].splice(0,e[P]);e[V]-=e[P];e[P]=0}}function _resume(e,t){while(true){if(e.destroyed){i(e[U]===0);return}if(e[De]&&!e[L]){e[De]();e[De]=null;return}const A=e[j];if(A&&!A.destroyed&&A.alpnProtocol!=="h2"){if(e[L]===0){if(!A[J]&&A.unref){A.unref();A[J]=true}}else if(A[J]&&A.ref){A.ref();A[J]=false}if(e[L]===0){if(A[D].timeoutType!==Ge){A[D].setTimeout(e[z],Ge)}}else if(e[N]>0&&A[D].statusCode<200){if(A[D].timeoutType!==He){const t=e[T][e[P]];const i=t.headersTimeout!=null?t.headersTimeout:e[$];A[D].setTimeout(i,He)}}}if(e[x]){e[H]=2}else if(e[H]===2){if(t){e[H]=1;process.nextTick(emitDrain,e)}else{emitDrain(e)}continue}if(e[U]===0){return}if(e[N]>=(e[W]||1)){return}const n=e[T][e[V]];if(e[y].protocol==="https:"&&e[v]!==n.servername){if(e[N]>0){return}e[v]=n.servername;if(A&&A.servername!==n.servername){r.destroy(A,new Q("servername changed"));return}}if(e[Y]){return}if(!A&&!e[de]){connect(e);return}if(A.destroyed||A[M]||A[w]||A[F]){return}if(e[N]>0&&!n.idempotent){return}if(e[N]>0&&(n.upgrade||n.method==="CONNECT")){return}if(e[N]>0&&r.bodyLength(n.body)!==0&&(r.isStream(n.body)||r.isAsyncIterable(n.body))){return}if(!n.aborted&&write(e,n)){e[V]++}else{e[T].splice(e[V],1)}}}function shouldSendContentLength(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function write(e,t){if(e[pe]==="h2"){writeH2(e,e[de],t);return}const{body:A,method:n,path:s,host:o,upgrade:a,headers:c,blocking:l,reset:p}=t;const g=n==="PUT"||n==="POST"||n==="PATCH";if(A&&typeof A.read==="function"){A.read(0)}const h=r.bodyLength(A);let E=h;if(E===null){E=t.contentLength}if(E===0&&!g){E=null}if(shouldSendContentLength(n)&&E>0&&t.contentLength!==null&&t.contentLength!==E){if(e[te]){errorRequest(e,t,new u);return false}process.emitWarning(new u)}const C=e[j];try{t.onConnect((A=>{if(t.aborted||t.completed){return}errorRequest(e,t,A||new d);r.destroy(C,new Q("aborted"))}))}catch(A){errorRequest(e,t,A)}if(t.aborted){return false}if(n==="HEAD"){C[w]=true}if(a||n==="CONNECT"){C[w]=true}if(p!=null){C[w]=p}if(e[ne]&&C[se]++>=e[ne]){C[w]=true}if(l){C[F]=true}let f=`${n} ${s} HTTP/1.1\r\n`;if(typeof o==="string"){f+=`host: ${o}\r\n`}else{f+=e[O]}if(a){f+=`connection: upgrade\r\nupgrade: ${a}\r\n`}else if(e[W]&&!C[w]){f+="connection: keep-alive\r\n"}else{f+="connection: close\r\n"}if(c){f+=c}if(ke.sendHeaders.hasSubscribers){ke.sendHeaders.publish({request:t,headers:f,socket:C})}if(!A||h===0){if(E===0){C.write(`${f}content-length: 0\r\n\r\n`,"latin1")}else{i(E===null,"no body must not have content length");C.write(`${f}\r\n`,"latin1")}t.onRequestSent()}else if(r.isBuffer(A)){i(E===A.byteLength,"buffer body must have content length");C.cork();C.write(`${f}content-length: ${E}\r\n\r\n`,"latin1");C.write(A);C.uncork();t.onBodySent(A);t.onRequestSent();if(!g){C[w]=true}}else if(r.isBlobLike(A)){if(typeof A.stream==="function"){writeIterable({body:A.stream(),client:e,request:t,socket:C,contentLength:E,header:f,expectsPayload:g})}else{writeBlob({body:A,client:e,request:t,socket:C,contentLength:E,header:f,expectsPayload:g})}}else if(r.isStream(A)){writeStream({body:A,client:e,request:t,socket:C,contentLength:E,header:f,expectsPayload:g})}else if(r.isIterable(A)){writeIterable({body:A,client:e,request:t,socket:C,contentLength:E,header:f,expectsPayload:g})}else{i(false)}return true}function writeH2(e,t,A){const{body:n,method:s,path:o,host:a,upgrade:l,expectContinue:p,signal:g,headers:h}=A;let E;if(typeof h==="string")E=c[Ce](h.trim());else E=h;if(l){errorRequest(e,A,new Error("Upgrade not supported for H2"));return false}try{A.onConnect((t=>{if(A.aborted||A.completed){return}errorRequest(e,A,t||new d)}))}catch(t){errorRequest(e,A,t)}if(A.aborted){return false}let C;const f=e[he];E[Be]=a||e[ge];E[Ie]=s;if(s==="CONNECT"){t.ref();C=t.request(E,{endStream:false,signal:g});if(C.id&&!C.pending){A.onUpgrade(null,null,C);++f.openStreams}else{C.once("ready",(()=>{A.onUpgrade(null,null,C);++f.openStreams}))}C.once("close",(()=>{f.openStreams-=1;if(f.openStreams===0)t.unref()}));return true}E[me]=o;E[be]="https";const B=s==="PUT"||s==="POST"||s==="PATCH";if(n&&typeof n.read==="function"){n.read(0)}let I=r.bodyLength(n);if(I==null){I=A.contentLength}if(I===0||!B){I=null}if(shouldSendContentLength(s)&&I>0&&A.contentLength!=null&&A.contentLength!==I){if(e[te]){errorRequest(e,A,new u);return false}process.emitWarning(new u)}if(I!=null){i(n,"no body must not have content length");E[ye]=`${I}`}t.ref();const m=s==="GET"||s==="HEAD";if(p){E[we]="100-continue";C=t.request(E,{endStream:m,signal:g});C.once("continue",writeBodyH2)}else{C=t.request(E,{endStream:m,signal:g});writeBodyH2()}++f.openStreams;C.once("response",(e=>{if(A.onHeaders(Number(e[ve]),e,C.resume.bind(C),"")===false){C.pause()}}));C.once("end",(()=>{A.onComplete([])}));C.on("data",(e=>{if(A.onData(e)===false)C.pause()}));C.once("close",(()=>{f.openStreams-=1;if(f.openStreams===0)t.unref()}));C.once("error",(function(t){if(e[de]&&!e[de].destroyed&&!this.closed&&!this.destroyed){f.streams-=1;r.destroy(C,t)}}));C.once("frameError",((t,i)=>{const n=new Q(`HTTP/2: "frameError" received - type ${t}, code ${i}`);errorRequest(e,A,n);if(e[de]&&!e[de].destroyed&&!this.closed&&!this.destroyed){f.streams-=1;r.destroy(C,n)}}));return true;function writeBodyH2(){if(!n){A.onRequestSent()}else if(r.isBuffer(n)){i(I===n.byteLength,"buffer body must have content length");C.cork();C.write(n);C.uncork();C.end();A.onBodySent(n);A.onRequestSent()}else if(r.isBlobLike(n)){if(typeof n.stream==="function"){writeIterable({client:e,request:A,contentLength:I,h2stream:C,expectsPayload:B,body:n.stream(),socket:e[j],header:""})}else{writeBlob({body:n,client:e,request:A,contentLength:I,expectsPayload:B,h2stream:C,header:"",socket:e[j]})}}else if(r.isStream(n)){writeStream({body:n,client:e,request:A,contentLength:I,expectsPayload:B,socket:e[j],h2stream:C,header:""})}else if(r.isIterable(n)){writeIterable({body:n,client:e,request:A,contentLength:I,expectsPayload:B,header:"",h2stream:C,socket:e[j]})}else{i(false)}}}function writeStream({h2stream:e,body:t,client:A,request:n,socket:s,contentLength:a,header:c,expectsPayload:l}){i(a!==0||A[N]===0,"stream body cannot be pipelined");if(A[pe]==="h2"){const g=o(t,e,(A=>{if(A){r.destroy(t,A);r.destroy(e,A)}else{n.onRequestSent()}}));g.on("data",onPipeData);g.once("end",(()=>{g.removeListener("data",onPipeData);r.destroy(g)}));function onPipeData(e){n.onBodySent(e)}return}let u=false;const p=new AsyncWriter({socket:s,request:n,contentLength:a,client:A,expectsPayload:l,header:c});const onData=function(e){if(u){return}try{if(!p.write(e)&&this.pause){this.pause()}}catch(e){r.destroy(this,e)}};const onDrain=function(){if(u){return}if(t.resume){t.resume()}};const onAbort=function(){onFinished(new d)};const onFinished=function(e){if(u){return}u=true;i(s.destroyed||s[M]&&A[N]<=1);s.off("drain",onDrain).off("error",onFinished);t.removeListener("data",onData).removeListener("end",onFinished).removeListener("error",onFinished).removeListener("close",onAbort);if(!e){try{p.end()}catch(t){e=t}}p.destroy(e);if(e&&(e.code!=="UND_ERR_INFO"||e.message!=="reset")){r.destroy(t,e)}else{r.destroy(t)}};t.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onAbort);if(t.resume){t.resume()}s.on("drain",onDrain).on("error",onFinished)}async function writeBlob({h2stream:e,body:t,client:A,request:n,socket:s,contentLength:o,header:a,expectsPayload:c}){i(o===t.size,"blob body must have content length");const l=A[pe]==="h2";try{if(o!=null&&o!==t.size){throw new u}const i=Buffer.from(await t.arrayBuffer());if(l){e.cork();e.write(i);e.uncork()}else{s.cork();s.write(`${a}content-length: ${o}\r\n\r\n`,"latin1");s.write(i);s.uncork()}n.onBodySent(i);n.onRequestSent();if(!c){s[w]=true}resume(A)}catch(t){r.destroy(l?e:s,t)}}async function writeIterable({h2stream:e,body:t,client:A,request:n,socket:s,contentLength:o,header:r,expectsPayload:a}){i(o!==0||A[N]===0,"iterator body cannot be pipelined");let c=null;function onDrain(){if(c){const e=c;c=null;e()}}const waitForDrain=()=>new Promise(((e,t)=>{i(c===null);if(s[q]){t(s[q])}else{c=e}}));if(A[pe]==="h2"){e.on("close",onDrain).on("drain",onDrain);try{for await(const A of t){if(s[q]){throw s[q]}const t=e.write(A);n.onBodySent(A);if(!t){await waitForDrain()}}}catch(t){e.destroy(t)}finally{n.onRequestSent();e.end();e.off("close",onDrain).off("drain",onDrain)}return}s.on("close",onDrain).on("drain",onDrain);const l=new AsyncWriter({socket:s,request:n,contentLength:o,client:A,expectsPayload:a,header:r});try{for await(const e of t){if(s[q]){throw s[q]}if(!l.write(e)){await waitForDrain()}}l.end()}catch(e){l.destroy(e)}finally{s.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({socket:e,request:t,contentLength:A,client:i,expectsPayload:n,header:s}){this.socket=e;this.request=t;this.contentLength=A;this.client=i;this.bytesWritten=0;this.expectsPayload=n;this.header=s;e[M]=true}write(e){const{socket:t,request:A,contentLength:i,client:n,bytesWritten:s,expectsPayload:o,header:r}=this;if(t[q]){throw t[q]}if(t.destroyed){return false}const a=Buffer.byteLength(e);if(!a){return true}if(i!==null&&s+a>i){if(n[te]){throw new u}process.emitWarning(new u)}t.cork();if(s===0){if(!o){t[w]=true}if(i===null){t.write(`${r}transfer-encoding: chunked\r\n`,"latin1")}else{t.write(`${r}content-length: ${i}\r\n\r\n`,"latin1")}}if(i===null){t.write(`\r\n${a.toString(16)}\r\n`,"latin1")}this.bytesWritten+=a;const c=t.write(e);t.uncork();A.onBodySent(e);if(!c){if(t[D].timeout&&t[D].timeoutType===He){if(t[D].timeout.refresh){t[D].timeout.refresh()}}}return c}end(){const{socket:e,contentLength:t,client:A,bytesWritten:i,expectsPayload:n,header:s,request:o}=this;o.onRequestSent();e[M]=false;if(e[q]){throw e[q]}if(e.destroyed){return}if(i===0){if(n){e.write(`${s}content-length: 0\r\n\r\n`,"latin1")}else{e.write(`${s}\r\n`,"latin1")}}else if(t===null){e.write("\r\n0\r\n\r\n","latin1")}if(t!==null&&i!==t){if(A[te]){throw new u}else{process.emitWarning(new u)}}if(e[D].timeout&&e[D].timeoutType===He){if(e[D].timeout.refresh){e[D].timeout.refresh()}}resume(A)}destroy(e){const{socket:t,client:A}=this;t[M]=false;if(e){i(A[N]<=1,"pipeline should only contain this request");r.destroy(t,e)}}}function errorRequest(e,t,A){try{t.onError(A);i(t.aborted)}catch(A){e.emit("error",A)}}e.exports=Client},6835:(e,t,A)=>{const{kConnected:i,kSize:n}=A(7282);class CompatWeakRef{constructor(e){this.value=e}deref(){return this.value[i]===0&&this.value[n]===0?undefined:this.value}}class CompatFinalizer{constructor(e){this.finalizer=e}register(e,t){if(e.on){e.on("disconnect",(()=>{if(e[i]===0&&e[n]===0){this.finalizer(t)}}))}}}e.exports=function(){if(process.env.NODE_V8_COVERAGE){return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:global.WeakRef||CompatWeakRef,FinalizationRegistry:global.FinalizationRegistry||CompatFinalizer}}},1526:e=>{const t=1024;const A=4096;e.exports={maxAttributeValueSize:t,maxNameValuePairSize:A}},3087:(e,t,A)=>{const{parseSetCookie:i}=A(6388);const{stringify:n,getHeadersList:s}=A(4001);const{webidl:o}=A(9342);const{Headers:r}=A(7941);function getCookies(e){o.argumentLengthCheck(arguments,1,{header:"getCookies"});o.brandCheck(e,r,{strict:false});const t=e.get("cookie");const A={};if(!t){return A}for(const e of t.split(";")){const[t,...i]=e.split("=");A[t.trim()]=i.join("=")}return A}function deleteCookie(e,t,A){o.argumentLengthCheck(arguments,2,{header:"deleteCookie"});o.brandCheck(e,r,{strict:false});t=o.converters.DOMString(t);A=o.converters.DeleteCookieAttributes(A);setCookie(e,{name:t,value:"",expires:new Date(0),...A})}function getSetCookies(e){o.argumentLengthCheck(arguments,1,{header:"getSetCookies"});o.brandCheck(e,r,{strict:false});const t=s(e).cookies;if(!t){return[]}return t.map((e=>i(Array.isArray(e)?e[1]:e)))}function setCookie(e,t){o.argumentLengthCheck(arguments,2,{header:"setCookie"});o.brandCheck(e,r,{strict:false});t=o.converters.Cookie(t);const A=n(t);if(A){e.append("Set-Cookie",n(t))}}o.converters.DeleteCookieAttributes=o.dictionaryConverter([{converter:o.nullableConverter(o.converters.DOMString),key:"path",defaultValue:null},{converter:o.nullableConverter(o.converters.DOMString),key:"domain",defaultValue:null}]);o.converters.Cookie=o.dictionaryConverter([{converter:o.converters.DOMString,key:"name"},{converter:o.converters.DOMString,key:"value"},{converter:o.nullableConverter((e=>{if(typeof e==="number"){return o.converters["unsigned long long"](e)}return new Date(e)})),key:"expires",defaultValue:null},{converter:o.nullableConverter(o.converters["long long"]),key:"maxAge",defaultValue:null},{converter:o.nullableConverter(o.converters.DOMString),key:"domain",defaultValue:null},{converter:o.nullableConverter(o.converters.DOMString),key:"path",defaultValue:null},{converter:o.nullableConverter(o.converters.boolean),key:"secure",defaultValue:null},{converter:o.nullableConverter(o.converters.boolean),key:"httpOnly",defaultValue:null},{converter:o.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:o.sequenceConverter(o.converters.DOMString),key:"unparsed",defaultValue:[]}]);e.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},6388:(e,t,A)=>{const{maxNameValuePairSize:i,maxAttributeValueSize:n}=A(1526);const{isCTLExcludingHtab:s}=A(4001);const{collectASequenceOfCodePointsFast:o}=A(3513);const r=A(9491);function parseSetCookie(e){if(s(e)){return null}let t="";let A="";let n="";let r="";if(e.includes(";")){const i={position:0};t=o(";",e,i);A=e.slice(i.position)}else{t=e}if(!t.includes("=")){r=t}else{const e={position:0};n=o("=",t,e);r=t.slice(e.position+1)}n=n.trim();r=r.trim();if(n.length+r.length>i){return null}return{name:n,value:r,...parseUnparsedAttributes(A)}}function parseUnparsedAttributes(e,t={}){if(e.length===0){return t}r(e[0]===";");e=e.slice(1);let A="";if(e.includes(";")){A=o(";",e,{position:0});e=e.slice(A.length)}else{A=e;e=""}let i="";let s="";if(A.includes("=")){const e={position:0};i=o("=",A,e);s=A.slice(e.position+1)}else{i=A}i=i.trim();s=s.trim();if(s.length>n){return parseUnparsedAttributes(e,t)}const a=i.toLowerCase();if(a==="expires"){const e=new Date(s);t.expires=e}else if(a==="max-age"){const A=s.charCodeAt(0);if((A<48||A>57)&&s[0]!=="-"){return parseUnparsedAttributes(e,t)}if(!/^\d+$/.test(s)){return parseUnparsedAttributes(e,t)}const i=Number(s);t.maxAge=i}else if(a==="domain"){let e=s;if(e[0]==="."){e=e.slice(1)}e=e.toLowerCase();t.domain=e}else if(a==="path"){let e="";if(s.length===0||s[0]!=="/"){e="/"}else{e=s}t.path=e}else if(a==="secure"){t.secure=true}else if(a==="httponly"){t.httpOnly=true}else if(a==="samesite"){let e="Default";const A=s.toLowerCase();if(A.includes("none")){e="None"}if(A.includes("strict")){e="Strict"}if(A.includes("lax")){e="Lax"}t.sameSite=e}else{t.unparsed??=[];t.unparsed.push(`${i}=${s}`)}return parseUnparsedAttributes(e,t)}e.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},4001:(e,t,A)=>{const i=A(9491);const{kHeadersList:n}=A(7282);function isCTLExcludingHtab(e){if(e.length===0){return false}for(const t of e){const e=t.charCodeAt(0);if(e>=0||e<=8||(e>=10||e<=31)||e===127){return false}}}function validateCookieName(e){for(const t of e){const e=t.charCodeAt(0);if(e<=32||e>127||t==="("||t===")"||t===">"||t==="<"||t==="@"||t===","||t===";"||t===":"||t==="\\"||t==='"'||t==="/"||t==="["||t==="]"||t==="?"||t==="="||t==="{"||t==="}"){throw new Error("Invalid cookie name")}}}function validateCookieValue(e){for(const t of e){const e=t.charCodeAt(0);if(e<33||e===34||e===44||e===59||e===92||e>126){throw new Error("Invalid header value")}}}function validateCookiePath(e){for(const t of e){const e=t.charCodeAt(0);if(e<33||t===";"){throw new Error("Invalid cookie path")}}}function validateCookieDomain(e){if(e.startsWith("-")||e.endsWith(".")||e.endsWith("-")){throw new Error("Invalid cookie domain")}}function toIMFDate(e){if(typeof e==="number"){e=new Date(e)}const t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const i=t[e.getUTCDay()];const n=e.getUTCDate().toString().padStart(2,"0");const s=A[e.getUTCMonth()];const o=e.getUTCFullYear();const r=e.getUTCHours().toString().padStart(2,"0");const a=e.getUTCMinutes().toString().padStart(2,"0");const c=e.getUTCSeconds().toString().padStart(2,"0");return`${i}, ${n} ${s} ${o} ${r}:${a}:${c} GMT`}function validateCookieMaxAge(e){if(e<0){throw new Error("Invalid cookie max-age")}}function stringify(e){if(e.name.length===0){return null}validateCookieName(e.name);validateCookieValue(e.value);const t=[`${e.name}=${e.value}`];if(e.name.startsWith("__Secure-")){e.secure=true}if(e.name.startsWith("__Host-")){e.secure=true;e.domain=null;e.path="/"}if(e.secure){t.push("Secure")}if(e.httpOnly){t.push("HttpOnly")}if(typeof e.maxAge==="number"){validateCookieMaxAge(e.maxAge);t.push(`Max-Age=${e.maxAge}`)}if(e.domain){validateCookieDomain(e.domain);t.push(`Domain=${e.domain}`)}if(e.path){validateCookiePath(e.path);t.push(`Path=${e.path}`)}if(e.expires&&e.expires.toString()!=="Invalid Date"){t.push(`Expires=${toIMFDate(e.expires)}`)}if(e.sameSite){t.push(`SameSite=${e.sameSite}`)}for(const A of e.unparsed){if(!A.includes("=")){throw new Error("Invalid unparsed")}const[e,...i]=A.split("=");t.push(`${e.trim()}=${i.join("=")}`)}return t.join("; ")}let s;function getHeadersList(e){if(e[n]){return e[n]}if(!s){s=Object.getOwnPropertySymbols(e).find((e=>e.description==="headers list"));i(s,"Headers cannot be parsed")}const t=e[s];i(t);return t}e.exports={isCTLExcludingHtab:isCTLExcludingHtab,stringify:stringify,getHeadersList:getHeadersList}},7899:(e,t,A)=>{const i=A(1808);const n=A(9491);const s=A(9980);const{InvalidArgumentError:o,ConnectTimeoutError:r}=A(5143);let a;let c;if(global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE){c=class WeakSessionCache{constructor(e){this._maxCachedSessions=e;this._sessionCache=new Map;this._sessionRegistry=new global.FinalizationRegistry((e=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:e}=this._sessionCache.keys().next();this._sessionCache.delete(e)}this._sessionCache.set(e,t)}}}function buildConnector({allowH2:e,maxCachedSessions:t,socketPath:r,timeout:l,...u}){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new o("maxCachedSessions must be a positive integer or zero")}const p={path:r,...u};const g=new c(t==null?100:t);l=l==null?1e4:l;e=e!=null?e:false;return function connect({hostname:t,host:o,protocol:r,port:c,servername:u,localAddress:d,httpSocket:h},E){let C;if(r==="https:"){if(!a){a=A(4404)}u=u||p.servername||s.getServerName(o)||null;const i=u||t;const r=g.get(i)||null;n(i);C=a.connect({highWaterMark:16384,...p,servername:u,session:r,localAddress:d,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:h,port:c||443,host:t});C.on("session",(function(e){g.set(i,e)}))}else{n(!h,"httpSocket can only be sent on TLS update");C=i.connect({highWaterMark:64*1024,...p,localAddress:d,port:c||80,host:t})}if(p.keepAlive==null||p.keepAlive){const e=p.keepAliveInitialDelay===undefined?6e4:p.keepAliveInitialDelay;C.setKeepAlive(true,e)}const Q=setupTimeout((()=>onConnectTimeout(C)),l);C.setNoDelay(true).once(r==="https:"?"secureConnect":"connect",(function(){Q();if(E){const e=E;E=null;e(null,this)}})).on("error",(function(e){Q();if(E){const t=E;E=null;t(e)}}));return C}}function setupTimeout(e,t){if(!t){return()=>{}}let A=null;let i=null;const n=setTimeout((()=>{A=setImmediate((()=>{if(process.platform==="win32"){i=setImmediate((()=>e()))}else{e()}}))}),t);return()=>{clearTimeout(n);clearImmediate(A);clearImmediate(i)}}function onConnectTimeout(e){s.destroy(e,new r)}e.exports=buildConnector},5143:e=>{class UndiciError extends Error{constructor(e){super(e);this.name="UndiciError";this.code="UND_ERR"}}class ConnectTimeoutError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,ConnectTimeoutError);this.name="ConnectTimeoutError";this.message=e||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}}class HeadersTimeoutError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,HeadersTimeoutError);this.name="HeadersTimeoutError";this.message=e||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}}class HeadersOverflowError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,HeadersOverflowError);this.name="HeadersOverflowError";this.message=e||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}}class BodyTimeoutError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,BodyTimeoutError);this.name="BodyTimeoutError";this.message=e||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}}class ResponseStatusCodeError extends UndiciError{constructor(e,t,A,i){super(e);Error.captureStackTrace(this,ResponseStatusCodeError);this.name="ResponseStatusCodeError";this.message=e||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=i;this.status=t;this.statusCode=t;this.headers=A}}class InvalidArgumentError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,InvalidArgumentError);this.name="InvalidArgumentError";this.message=e||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}}class InvalidReturnValueError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,InvalidReturnValueError);this.name="InvalidReturnValueError";this.message=e||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}}class RequestAbortedError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,RequestAbortedError);this.name="AbortError";this.message=e||"Request aborted";this.code="UND_ERR_ABORTED"}}class InformationalError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,InformationalError);this.name="InformationalError";this.message=e||"Request information";this.code="UND_ERR_INFO"}}class RequestContentLengthMismatchError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,RequestContentLengthMismatchError);this.name="RequestContentLengthMismatchError";this.message=e||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}}class ResponseContentLengthMismatchError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,ResponseContentLengthMismatchError);this.name="ResponseContentLengthMismatchError";this.message=e||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}}class ClientDestroyedError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,ClientDestroyedError);this.name="ClientDestroyedError";this.message=e||"The client is destroyed";this.code="UND_ERR_DESTROYED"}}class ClientClosedError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,ClientClosedError);this.name="ClientClosedError";this.message=e||"The client is closed";this.code="UND_ERR_CLOSED"}}class SocketError extends UndiciError{constructor(e,t){super(e);Error.captureStackTrace(this,SocketError);this.name="SocketError";this.message=e||"Socket error";this.code="UND_ERR_SOCKET";this.socket=t}}class NotSupportedError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,NotSupportedError);this.name="NotSupportedError";this.message=e||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}}class BalancedPoolMissingUpstreamError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,NotSupportedError);this.name="MissingUpstreamError";this.message=e||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}}class HTTPParserError extends Error{constructor(e,t,A){super(e);Error.captureStackTrace(this,HTTPParserError);this.name="HTTPParserError";this.code=t?`HPE_${t}`:undefined;this.data=A?A.toString():undefined}}class ResponseExceededMaxSizeError extends UndiciError{constructor(e){super(e);Error.captureStackTrace(this,ResponseExceededMaxSizeError);this.name="ResponseExceededMaxSizeError";this.message=e||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}}e.exports={HTTPParserError:HTTPParserError,UndiciError:UndiciError,HeadersTimeoutError:HeadersTimeoutError,HeadersOverflowError:HeadersOverflowError,BodyTimeoutError:BodyTimeoutError,RequestContentLengthMismatchError:RequestContentLengthMismatchError,ConnectTimeoutError:ConnectTimeoutError,ResponseStatusCodeError:ResponseStatusCodeError,InvalidArgumentError:InvalidArgumentError,InvalidReturnValueError:InvalidReturnValueError,RequestAbortedError:RequestAbortedError,ClientDestroyedError:ClientDestroyedError,ClientClosedError:ClientClosedError,InformationalError:InformationalError,SocketError:SocketError,NotSupportedError:NotSupportedError,ResponseContentLengthMismatchError:ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError:BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError:ResponseExceededMaxSizeError}},2691:(e,t,A)=>{const{InvalidArgumentError:i,NotSupportedError:n}=A(5143);const s=A(9491);const{kHTTP2BuildRequest:o,kHTTP2CopyHeaders:r,kHTTP1BuildRequest:a}=A(7282);const c=A(9980);const l=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;const u=/[^\t\x20-\x7e\x80-\xff]/;const p=/[^\u0021-\u00ff]/;const g=Symbol("handler");const d={};let h;try{const e=A(7643);d.create=e.channel("undici:request:create");d.bodySent=e.channel("undici:request:bodySent");d.headers=e.channel("undici:request:headers");d.trailers=e.channel("undici:request:trailers");d.error=e.channel("undici:request:error")}catch{d.create={hasSubscribers:false};d.bodySent={hasSubscribers:false};d.headers={hasSubscribers:false};d.trailers={hasSubscribers:false};d.error={hasSubscribers:false}}class Request{constructor(e,{path:t,method:n,body:s,headers:o,query:r,idempotent:a,blocking:u,upgrade:E,headersTimeout:C,bodyTimeout:Q,reset:f,throwOnError:B,expectContinue:I},m){if(typeof t!=="string"){throw new i("path must be a string")}else if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&n!=="CONNECT"){throw new i("path must be an absolute URL or start with a slash")}else if(p.exec(t)!==null){throw new i("invalid request path")}if(typeof n!=="string"){throw new i("method must be a string")}else if(l.exec(n)===null){throw new i("invalid request method")}if(E&&typeof E!=="string"){throw new i("upgrade must be a string")}if(C!=null&&(!Number.isFinite(C)||C<0)){throw new i("invalid headersTimeout")}if(Q!=null&&(!Number.isFinite(Q)||Q<0)){throw new i("invalid bodyTimeout")}if(f!=null&&typeof f!=="boolean"){throw new i("invalid reset")}if(I!=null&&typeof I!=="boolean"){throw new i("invalid expectContinue")}this.headersTimeout=C;this.bodyTimeout=Q;this.throwOnError=B===true;this.method=n;this.abort=null;if(s==null){this.body=null}else if(c.isStream(s)){this.body=s;const e=this.body._readableState;if(!e||!e.autoDestroy){this.endHandler=function autoDestroy(){c.destroy(this)};this.body.on("end",this.endHandler)}this.errorHandler=e=>{if(this.abort){this.abort(e)}else{this.error=e}};this.body.on("error",this.errorHandler)}else if(c.isBuffer(s)){this.body=s.byteLength?s:null}else if(ArrayBuffer.isView(s)){this.body=s.buffer.byteLength?Buffer.from(s.buffer,s.byteOffset,s.byteLength):null}else if(s instanceof ArrayBuffer){this.body=s.byteLength?Buffer.from(s):null}else if(typeof s==="string"){this.body=s.length?Buffer.from(s):null}else if(c.isFormDataLike(s)||c.isIterable(s)||c.isBlobLike(s)){this.body=s}else{throw new i("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=E||null;this.path=r?c.buildURL(t,r):t;this.origin=e;this.idempotent=a==null?n==="HEAD"||n==="GET":a;this.blocking=u==null?false:u;this.reset=f==null?null:f;this.host=null;this.contentLength=null;this.contentType=null;this.headers="";this.expectContinue=I!=null?I:false;if(Array.isArray(o)){if(o.length%2!==0){throw new i("headers array must be even")}for(let e=0;e{e.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kHeadersList:Symbol("headers list"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kHTTP2BuildRequest:Symbol("http2 build request"),kHTTP1BuildRequest:Symbol("http1 build request"),kHTTP2CopyHeaders:Symbol("http2 copy headers"),kHTTPConnVersion:Symbol("http connection version")}},9980:(e,t,A)=>{const i=A(9491);const{kDestroyed:n,kBodyUsed:s}=A(7282);const{IncomingMessage:o}=A(3685);const r=A(2781);const a=A(1808);const{InvalidArgumentError:c}=A(5143);const{Blob:l}=A(4300);const u=A(3837);const{stringify:p}=A(3477);const[g,d]=process.versions.node.split(".").map((e=>Number(e)));function nop(){}function isStream(e){return e&&typeof e==="object"&&typeof e.pipe==="function"&&typeof e.on==="function"}function isBlobLike(e){return l&&e instanceof l||e&&typeof e==="object"&&(typeof e.stream==="function"||typeof e.arrayBuffer==="function")&&/^(Blob|File)$/.test(e[Symbol.toStringTag])}function buildURL(e,t){if(e.includes("?")||e.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const A=p(t);if(A){e+="?"+A}return e}function parseURL(e){if(typeof e==="string"){e=new URL(e);if(!/^https?:/.test(e.origin||e.protocol)){throw new c("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}if(!e||typeof e!=="object"){throw new c("Invalid URL: The URL argument must be a non-null object.")}if(!/^https?:/.test(e.origin||e.protocol)){throw new c("Invalid URL protocol: the URL must start with `http:` or `https:`.")}if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&!Number.isFinite(parseInt(e.port))){throw new c("Invalid URL: port must be a valid integer or a string representation of an integer.")}if(e.path!=null&&typeof e.path!=="string"){throw new c("Invalid URL path: the path must be a string or null/undefined.")}if(e.pathname!=null&&typeof e.pathname!=="string"){throw new c("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(e.hostname!=null&&typeof e.hostname!=="string"){throw new c("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(e.origin!=null&&typeof e.origin!=="string"){throw new c("Invalid URL origin: the origin must be a string or null/undefined.")}const t=e.port!=null?e.port:e.protocol==="https:"?443:80;let A=e.origin!=null?e.origin:`${e.protocol}//${e.hostname}:${t}`;let i=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;if(A.endsWith("/")){A=A.substring(0,A.length-1)}if(i&&!i.startsWith("/")){i=`/${i}`}e=new URL(A+i)}return e}function parseOrigin(e){e=parseURL(e);if(e.pathname!=="/"||e.search||e.hash){throw new c("invalid url")}return e}function getHostname(e){if(e[0]==="["){const t=e.indexOf("]");i(t!==-1);return e.substr(1,t-1)}const t=e.indexOf(":");if(t===-1)return e;return e.substr(0,t)}function getServerName(e){if(!e){return null}i.strictEqual(typeof e,"string");const t=getHostname(e);if(a.isIP(t)){return""}return t}function deepClone(e){return JSON.parse(JSON.stringify(e))}function isAsyncIterable(e){return!!(e!=null&&typeof e[Symbol.asyncIterator]==="function")}function isIterable(e){return!!(e!=null&&(typeof e[Symbol.iterator]==="function"||typeof e[Symbol.asyncIterator]==="function"))}function bodyLength(e){if(e==null){return 0}else if(isStream(e)){const t=e._readableState;return t&&t.objectMode===false&&t.ended===true&&Number.isFinite(t.length)?t.length:null}else if(isBlobLike(e)){return e.size!=null?e.size:null}else if(isBuffer(e)){return e.byteLength}return null}function isDestroyed(e){return!e||!!(e.destroyed||e[n])}function isReadableAborted(e){const t=e&&e._readableState;return isDestroyed(e)&&t&&!t.endEmitted}function destroy(e,t){if(e==null||!isStream(e)||isDestroyed(e)){return}if(typeof e.destroy==="function"){if(Object.getPrototypeOf(e).constructor===o){e.socket=null}e.destroy(t)}else if(t){process.nextTick(((e,t)=>{e.emit("error",t)}),e,t)}if(e.destroyed!==true){e[n]=true}}const h=/timeout=(\d+)/;function parseKeepAliveTimeout(e){const t=e.toString().match(h);return t?parseInt(t[1],10)*1e3:null}function parseHeaders(e,t={}){if(!Array.isArray(e))return e;for(let A=0;A{e.close()}))}else{const t=Buffer.isBuffer(i)?i:Buffer.from(i);e.enqueue(new Uint8Array(t))}return e.desiredSize>0},async cancel(e){await t.return()}},0)}function isFormDataLike(e){return e&&typeof e==="object"&&typeof e.append==="function"&&typeof e.delete==="function"&&typeof e.get==="function"&&typeof e.getAll==="function"&&typeof e.has==="function"&&typeof e.set==="function"&&e[Symbol.toStringTag]==="FormData"}function throwIfAborted(e){if(!e){return}if(typeof e.throwIfAborted==="function"){e.throwIfAborted()}else{if(e.aborted){const e=new Error("The operation was aborted");e.name="AbortError";throw e}}}let C;function addAbortListener(e,t){if(typeof Symbol.dispose==="symbol"){if(!C){C=A(2361)}if(typeof C.addAbortListener==="function"&&"aborted"in e){return C.addAbortListener(e,t)}}if("addEventListener"in e){e.addEventListener("abort",t,{once:true});return()=>e.removeEventListener("abort",t)}e.addListener("abort",t);return()=>e.removeListener("abort",t)}const Q=!!String.prototype.toWellFormed;function toUSVString(e){if(Q){return`${e}`.toWellFormed()}else if(u.toUSVString){return u.toUSVString(e)}return`${e}`}const f=Object.create(null);f.enumerable=true;e.exports={kEnumerableProperty:f,nop:nop,isDisturbed:isDisturbed,isErrored:isErrored,isReadable:isReadable,toUSVString:toUSVString,isReadableAborted:isReadableAborted,isBlobLike:isBlobLike,parseOrigin:parseOrigin,parseURL:parseURL,getServerName:getServerName,isStream:isStream,isIterable:isIterable,isAsyncIterable:isAsyncIterable,isDestroyed:isDestroyed,parseRawHeaders:parseRawHeaders,parseHeaders:parseHeaders,parseKeepAliveTimeout:parseKeepAliveTimeout,destroy:destroy,bodyLength:bodyLength,deepClone:deepClone,ReadableStreamFrom:ReadableStreamFrom,isBuffer:isBuffer,validateHandler:validateHandler,getSocketInfo:getSocketInfo,isFormDataLike:isFormDataLike,buildURL:buildURL,throwIfAborted:throwIfAborted,addAbortListener:addAbortListener,nodeMajor:g,nodeMinor:d,nodeHasAutoSelectFamily:g>18||g===18&&d>=13}},7958:(e,t,A)=>{const i=A(3678);const{ClientDestroyedError:n,ClientClosedError:s,InvalidArgumentError:o}=A(5143);const{kDestroy:r,kClose:a,kDispatch:c,kInterceptors:l}=A(7282);const u=Symbol("destroyed");const p=Symbol("closed");const g=Symbol("onDestroyed");const d=Symbol("onClosed");const h=Symbol("Intercepted Dispatch");class DispatcherBase extends i{constructor(){super();this[u]=false;this[g]=null;this[p]=false;this[d]=[]}get destroyed(){return this[u]}get closed(){return this[p]}get interceptors(){return this[l]}set interceptors(e){if(e){for(let t=e.length-1;t>=0;t--){const e=this[l][t];if(typeof e!=="function"){throw new o("interceptor must be an function")}}}this[l]=e}close(e){if(e===undefined){return new Promise(((e,t)=>{this.close(((A,i)=>A?t(A):e(i)))}))}if(typeof e!=="function"){throw new o("invalid callback")}if(this[u]){queueMicrotask((()=>e(new n,null)));return}if(this[p]){if(this[d]){this[d].push(e)}else{queueMicrotask((()=>e(null,null)))}return}this[p]=true;this[d].push(e);const onClosed=()=>{const e=this[d];this[d]=null;for(let t=0;tthis.destroy())).then((()=>{queueMicrotask(onClosed)}))}destroy(e,t){if(typeof e==="function"){t=e;e=null}if(t===undefined){return new Promise(((t,A)=>{this.destroy(e,((e,i)=>e?A(e):t(i)))}))}if(typeof t!=="function"){throw new o("invalid callback")}if(this[u]){if(this[g]){this[g].push(t)}else{queueMicrotask((()=>t(null,null)))}return}if(!e){e=new n}this[u]=true;this[g]=this[g]||[];this[g].push(t);const onDestroyed=()=>{const e=this[g];this[g]=null;for(let t=0;t{queueMicrotask(onDestroyed)}))}[h](e,t){if(!this[l]||this[l].length===0){this[h]=this[c];return this[c](e,t)}let A=this[c].bind(this);for(let e=this[l].length-1;e>=0;e--){A=this[l][e](A)}this[h]=A;return A(e,t)}dispatch(e,t){if(!t||typeof t!=="object"){throw new o("handler must be an object")}try{if(!e||typeof e!=="object"){throw new o("opts must be an object.")}if(this[u]||this[g]){throw new n}if(this[p]){throw new s}return this[h](e,t)}catch(e){if(typeof t.onError!=="function"){throw new o("invalid onError method")}t.onError(e);return false}}}e.exports=DispatcherBase},3678:(e,t,A)=>{const i=A(2361);class Dispatcher extends i{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}}e.exports=Dispatcher},1161:(e,t,A)=>{const i=A(9974);const n=A(9980);const{ReadableStreamFrom:s,isBlobLike:o,isReadableStreamLike:r,readableStreamClose:a,createDeferredPromise:c,fullyReadBody:l}=A(5422);const{FormData:u}=A(5061);const{kState:p}=A(3166);const{webidl:g}=A(9342);const{DOMException:d,structuredClone:h}=A(9596);const{Blob:E,File:C}=A(4300);const{kBodyUsed:Q}=A(7282);const f=A(9491);const{isErrored:B}=A(9980);const{isUint8Array:I,isArrayBuffer:m}=A(9830);const{File:b}=A(233);const{parseMIMEType:y,serializeAMimeType:w}=A(3513);let v=globalThis.ReadableStream;const R=C??b;const x=new TextEncoder;const D=new TextDecoder;function extractBody(e,t=false){if(!v){v=A(5356).ReadableStream}let i=null;if(e instanceof v){i=e}else if(o(e)){i=e.stream()}else{i=new v({async pull(e){e.enqueue(typeof l==="string"?x.encode(l):l);queueMicrotask((()=>a(e)))},start(){},type:undefined})}f(r(i));let c=null;let l=null;let u=null;let p=null;if(typeof e==="string"){l=e;p="text/plain;charset=UTF-8"}else if(e instanceof URLSearchParams){l=e.toString();p="application/x-www-form-urlencoded;charset=UTF-8"}else if(m(e)){l=new Uint8Array(e.slice())}else if(ArrayBuffer.isView(e)){l=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength))}else if(n.isFormDataLike(e)){const t=`----formdata-undici-0${`${Math.floor(Math.random()*1e11)}`.padStart(11,"0")}`;const A=`--${t}\r\nContent-Disposition: form-data` +/*! formdata-polyfill. MIT License. Jimmy Wärting */;const escape=e=>e.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=e=>e.replace(/\r?\n|\r/g,"\r\n");const i=[];const n=new Uint8Array([13,10]);u=0;let s=false;for(const[t,o]of e){if(typeof o==="string"){const e=x.encode(A+`; name="${escape(normalizeLinefeeds(t))}"`+`\r\n\r\n${normalizeLinefeeds(o)}\r\n`);i.push(e);u+=e.byteLength}else{const e=x.encode(`${A}; name="${escape(normalizeLinefeeds(t))}"`+(o.name?`; filename="${escape(o.name)}"`:"")+"\r\n"+`Content-Type: ${o.type||"application/octet-stream"}\r\n\r\n`);i.push(e,o,n);if(typeof o.size==="number"){u+=e.byteLength+o.size+n.byteLength}else{s=true}}}const o=x.encode(`--${t}--`);i.push(o);u+=o.byteLength;if(s){u=null}l=e;c=async function*(){for(const e of i){if(e.stream){yield*e.stream()}else{yield e}}};p="multipart/form-data; boundary="+t}else if(o(e)){l=e;u=e.size;if(e.type){p=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(t){throw new TypeError("keepalive")}if(n.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}i=e instanceof v?e:s(e)}if(typeof l==="string"||n.isBuffer(l)){u=Buffer.byteLength(l)}if(c!=null){let t;i=new v({async start(){t=c(e)[Symbol.asyncIterator]()},async pull(e){const{value:A,done:n}=await t.next();if(n){queueMicrotask((()=>{e.close()}))}else{if(!B(i)){e.enqueue(new Uint8Array(A))}}return e.desiredSize>0},async cancel(e){await t.return()},type:undefined})}const g={stream:i,source:l,length:u};return[g,p]}function safelyExtractBody(e,t=false){if(!v){v=A(5356).ReadableStream}if(e instanceof v){f(!n.isDisturbed(e),"The body has already been consumed.");f(!e.locked,"The stream is locked.")}return extractBody(e,t)}function cloneBody(e){const[t,A]=e.stream.tee();const i=h(A,{transfer:[A]});const[,n]=i.tee();e.stream=t;return{stream:n,length:e.length,source:e.source}}async function*consumeBody(e){if(e){if(I(e)){yield e}else{const t=e.stream;if(n.isDisturbed(t)){throw new TypeError("The body has already been consumed.")}if(t.locked){throw new TypeError("The stream is locked.")}t[Q]=true;yield*t}}}function throwIfAborted(e){if(e.aborted){throw new d("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const t={blob(){return specConsumeBody(this,(e=>{let t=bodyMimeType(this);if(t==="failure"){t=""}else if(t){t=w(t)}return new E([e],{type:t})}),e)},arrayBuffer(){return specConsumeBody(this,(e=>new Uint8Array(e).buffer),e)},text(){return specConsumeBody(this,utf8DecodeBytes,e)},json(){return specConsumeBody(this,parseJSONFromBytes,e)},async formData(){g.brandCheck(this,e);throwIfAborted(this[p]);const t=this.headers.get("Content-Type");if(/multipart\/form-data/.test(t)){const e={};for(const[t,A]of this.headers)e[t.toLowerCase()]=A;const t=new u;let A;try{A=new i({headers:e,preservePath:true})}catch(e){throw new d(`${e}`,"AbortError")}A.on("field",((e,A)=>{t.append(e,A)}));A.on("file",((e,A,i,n,s)=>{const o=[];if(n==="base64"||n.toLowerCase()==="base64"){let n="";A.on("data",(e=>{n+=e.toString().replace(/[\r\n]/gm,"");const t=n.length-n.length%4;o.push(Buffer.from(n.slice(0,t),"base64"));n=n.slice(t)}));A.on("end",(()=>{o.push(Buffer.from(n,"base64"));t.append(e,new R(o,i,{type:s}))}))}else{A.on("data",(e=>{o.push(e)}));A.on("end",(()=>{t.append(e,new R(o,i,{type:s}))}))}}));const n=new Promise(((e,t)=>{A.on("finish",e);A.on("error",(e=>t(new TypeError(e))))}));if(this.body!==null)for await(const e of consumeBody(this[p].body))A.write(e);A.end();await n;return t}else if(/application\/x-www-form-urlencoded/.test(t)){let e;try{let t="";const A=new TextDecoder("utf-8",{ignoreBOM:true});for await(const e of consumeBody(this[p].body)){if(!I(e)){throw new TypeError("Expected Uint8Array chunk")}t+=A.decode(e,{stream:true})}t+=A.decode();e=new URLSearchParams(t)}catch(e){throw Object.assign(new TypeError,{cause:e})}const t=new u;for(const[A,i]of e){t.append(A,i)}return t}else{await Promise.resolve();throwIfAborted(this[p]);throw g.errors.exception({header:`${e.name}.formData`,message:"Could not parse content as FormData."})}}};return t}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function specConsumeBody(e,t,A){g.brandCheck(e,A);throwIfAborted(e[p]);if(bodyUnusable(e[p].body)){throw new TypeError("Body is unusable")}const i=c();const errorSteps=e=>i.reject(e);const successSteps=e=>{try{i.resolve(t(e))}catch(e){errorSteps(e)}};if(e[p].body==null){successSteps(new Uint8Array);return i.promise}await l(e[p].body,successSteps,errorSteps);return i.promise}function bodyUnusable(e){return e!=null&&(e.stream.locked||n.isDisturbed(e.stream))}function utf8DecodeBytes(e){if(e.length===0){return""}if(e[0]===239&&e[1]===187&&e[2]===191){e=e.subarray(3)}const t=D.decode(e);return t}function parseJSONFromBytes(e){return JSON.parse(utf8DecodeBytes(e))}function bodyMimeType(e){const{headersList:t}=e[p];const A=t.get("content-type");if(A===null){return"failure"}return y(A)}e.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody}},9596:(e,t,A)=>{const{MessageChannel:i,receiveMessageOnPort:n}=A(1267);const s=["GET","HEAD","POST"];const o=new Set(s);const r=[101,204,205,304];const a=[301,302,303,307,308];const c=new Set(a);const l=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","5060","5061","6000","6566","6665","6666","6667","6668","6669","6697","10080"];const u=new Set(l);const p=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const g=new Set(p);const d=["follow","manual","error"];const h=["GET","HEAD","OPTIONS","TRACE"];const E=new Set(h);const C=["navigate","same-origin","no-cors","cors"];const Q=["omit","same-origin","include"];const f=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const B=["content-encoding","content-language","content-location","content-type","content-length"];const I=["half"];const m=["CONNECT","TRACE","TRACK"];const b=new Set(m);const y=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const w=new Set(y);const v=globalThis.DOMException??(()=>{try{atob("~")}catch(e){return Object.getPrototypeOf(e).constructor}})();let R;const x=globalThis.structuredClone??function structuredClone(e,t=undefined){if(arguments.length===0){throw new TypeError("missing argument")}if(!R){R=new i}R.port1.unref();R.port2.unref();R.port1.postMessage(e,t?.transfer);return n(R.port2).message};e.exports={DOMException:v,structuredClone:x,subresource:y,forbiddenMethods:m,requestBodyHeader:B,referrerPolicy:p,requestRedirect:d,requestMode:C,requestCredentials:Q,requestCache:f,redirectStatus:a,corsSafeListedMethods:s,nullBodyStatus:r,safeMethods:h,badPorts:l,requestDuplex:I,subresourceSet:w,badPortsSet:u,redirectStatusSet:c,corsSafeListedMethodsSet:o,safeMethodsSet:E,forbiddenMethodsSet:b,referrerPolicySet:g}},3513:(e,t,A)=>{const i=A(9491);const{atob:n}=A(4300);const{isomorphicDecode:s}=A(5422);const o=new TextEncoder;const r=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;const a=/(\u000A|\u000D|\u0009|\u0020)/;const c=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function dataURLProcessor(e){i(e.protocol==="data:");let t=URLSerializer(e,true);t=t.slice(5);const A={position:0};let n=collectASequenceOfCodePointsFast(",",t,A);const o=n.length;n=removeASCIIWhitespace(n,true,true);if(A.position>=t.length){return"failure"}A.position++;const r=t.slice(o+1);let a=stringPercentDecode(r);if(/;(\u0020){0,}base64$/i.test(n)){const e=s(a);a=forgivingBase64(e);if(a==="failure"){return"failure"}n=n.slice(0,-6);n=n.replace(/(\u0020)+$/,"");n=n.slice(0,-1)}if(n.startsWith(";")){n="text/plain"+n}let c=parseMIMEType(n);if(c==="failure"){c=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:c,body:a}}function URLSerializer(e,t=false){const A=e.href;if(!t){return A}const i=A.lastIndexOf("#");if(i===-1){return A}return A.slice(0,i)}function collectASequenceOfCodePoints(e,t,A){let i="";while(A.positione.length){return"failure"}t.position++;let i=collectASequenceOfCodePointsFast(";",e,t);i=removeHTTPWhitespace(i,false,true);if(i.length===0||!r.test(i)){return"failure"}const n=A.toLowerCase();const s=i.toLowerCase();const o={type:n,subtype:s,parameters:new Map,essence:`${n}/${s}`};while(t.positiona.test(e)),e,t);let A=collectASequenceOfCodePoints((e=>e!==";"&&e!=="="),e,t);A=A.toLowerCase();if(t.positione.length){break}let i=null;if(e[t.position]==='"'){i=collectAnHTTPQuotedString(e,t,true);collectASequenceOfCodePointsFast(";",e,t)}else{i=collectASequenceOfCodePointsFast(";",e,t);i=removeHTTPWhitespace(i,false,true);if(i.length===0){continue}}if(A.length!==0&&r.test(A)&&(i.length===0||c.test(i))&&!o.parameters.has(A)){o.parameters.set(A,i)}}return o}function forgivingBase64(e){e=e.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,"");if(e.length%4===0){e=e.replace(/=?=$/,"")}if(e.length%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(e)){return"failure"}const t=n(e);const A=new Uint8Array(t.length);for(let e=0;ee!=='"'&&e!=="\\"),e,t);if(t.position>=e.length){break}const A=e[t.position];t.position++;if(A==="\\"){if(t.position>=e.length){s+="\\";break}s+=e[t.position];t.position++}else{i(A==='"');break}}if(A){return s}return e.slice(n,t.position)}function serializeAMimeType(e){i(e!=="failure");const{parameters:t,essence:A}=e;let n=A;for(let[e,A]of t.entries()){n+=";";n+=e;n+="=";if(!r.test(A)){A=A.replace(/(\\|")/g,"\\$1");A='"'+A;A+='"'}n+=A}return n}function isHTTPWhiteSpace(e){return e==="\r"||e==="\n"||e==="\t"||e===" "}function removeHTTPWhitespace(e,t=true,A=true){let i=0;let n=e.length-1;if(t){for(;i0&&isHTTPWhiteSpace(e[n]);n--);}return e.slice(i,n+1)}function isASCIIWhitespace(e){return e==="\r"||e==="\n"||e==="\t"||e==="\f"||e===" "}function removeASCIIWhitespace(e,t=true,A=true){let i=0;let n=e.length-1;if(t){for(;i0&&isASCIIWhitespace(e[n]);n--);}return e.slice(i,n+1)}e.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType}},233:(e,t,A)=>{const{Blob:i,File:n}=A(4300);const{types:s}=A(3837);const{kState:o}=A(3166);const{isBlobLike:r}=A(5422);const{webidl:a}=A(9342);const{parseMIMEType:c,serializeAMimeType:l}=A(3513);const{kEnumerableProperty:u}=A(9980);const p=new TextEncoder;class File extends i{constructor(e,t,A={}){a.argumentLengthCheck(arguments,2,{header:"File constructor"});e=a.converters["sequence"](e);t=a.converters.USVString(t);A=a.converters.FilePropertyBag(A);const i=t;let n=A.type;let s;e:{if(n){n=c(n);if(n==="failure"){n="";break e}n=l(n).toLowerCase()}s=A.lastModified}super(processBlobParts(e,A),{type:n});this[o]={name:i,lastModified:s,type:n}}get name(){a.brandCheck(this,File);return this[o].name}get lastModified(){a.brandCheck(this,File);return this[o].lastModified}get type(){a.brandCheck(this,File);return this[o].type}}class FileLike{constructor(e,t,A={}){const i=t;const n=A.type;const s=A.lastModified??Date.now();this[o]={blobLike:e,name:i,type:n,lastModified:s}}stream(...e){a.brandCheck(this,FileLike);return this[o].blobLike.stream(...e)}arrayBuffer(...e){a.brandCheck(this,FileLike);return this[o].blobLike.arrayBuffer(...e)}slice(...e){a.brandCheck(this,FileLike);return this[o].blobLike.slice(...e)}text(...e){a.brandCheck(this,FileLike);return this[o].blobLike.text(...e)}get size(){a.brandCheck(this,FileLike);return this[o].blobLike.size}get type(){a.brandCheck(this,FileLike);return this[o].blobLike.type}get name(){a.brandCheck(this,FileLike);return this[o].name}get lastModified(){a.brandCheck(this,FileLike);return this[o].lastModified}get[Symbol.toStringTag](){return"File"}}Object.defineProperties(File.prototype,{[Symbol.toStringTag]:{value:"File",configurable:true},name:u,lastModified:u});a.converters.Blob=a.interfaceConverter(i);a.converters.BlobPart=function(e,t){if(a.util.Type(e)==="Object"){if(r(e)){return a.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||s.isAnyArrayBuffer(e)){return a.converters.BufferSource(e,t)}}return a.converters.USVString(e,t)};a.converters["sequence"]=a.sequenceConverter(a.converters.BlobPart);a.converters.FilePropertyBag=a.dictionaryConverter([{key:"lastModified",converter:a.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:a.converters.DOMString,defaultValue:""},{key:"endings",converter:e=>{e=a.converters.DOMString(e);e=e.toLowerCase();if(e!=="native"){e="transparent"}return e},defaultValue:"transparent"}]);function processBlobParts(e,t){const A=[];for(const i of e){if(typeof i==="string"){let e=i;if(t.endings==="native"){e=convertLineEndingsNative(e)}A.push(p.encode(e))}else if(s.isAnyArrayBuffer(i)||s.isTypedArray(i)){if(!i.buffer){A.push(new Uint8Array(i))}else{A.push(new Uint8Array(i.buffer,i.byteOffset,i.byteLength))}}else if(r(i)){A.push(i)}}return A}function convertLineEndingsNative(e){let t="\n";if(process.platform==="win32"){t="\r\n"}return e.replace(/\r?\n/g,t)}function isFileLike(e){return n&&e instanceof n||e instanceof File||e&&(typeof e.stream==="function"||typeof e.arrayBuffer==="function")&&e[Symbol.toStringTag]==="File"}e.exports={File:File,FileLike:FileLike,isFileLike:isFileLike}},5061:(e,t,A)=>{const{isBlobLike:i,toUSVString:n,makeIterator:s}=A(5422);const{kState:o}=A(3166);const{File:r,FileLike:a,isFileLike:c}=A(233);const{webidl:l}=A(9342);const{Blob:u,File:p}=A(4300);const g=p??r;class FormData{constructor(e){if(e!==undefined){throw l.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[o]=[]}append(e,t,A=undefined){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,2,{header:"FormData.append"});if(arguments.length===3&&!i(t)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}e=l.converters.USVString(e);t=i(t)?l.converters.Blob(t,{strict:false}):l.converters.USVString(t);A=arguments.length===3?l.converters.USVString(A):undefined;const n=makeEntry(e,t,A);this[o].push(n)}delete(e){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,1,{header:"FormData.delete"});e=l.converters.USVString(e);this[o]=this[o].filter((t=>t.name!==e))}get(e){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,1,{header:"FormData.get"});e=l.converters.USVString(e);const t=this[o].findIndex((t=>t.name===e));if(t===-1){return null}return this[o][t].value}getAll(e){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,1,{header:"FormData.getAll"});e=l.converters.USVString(e);return this[o].filter((t=>t.name===e)).map((e=>e.value))}has(e){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,1,{header:"FormData.has"});e=l.converters.USVString(e);return this[o].findIndex((t=>t.name===e))!==-1}set(e,t,A=undefined){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,2,{header:"FormData.set"});if(arguments.length===3&&!i(t)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}e=l.converters.USVString(e);t=i(t)?l.converters.Blob(t,{strict:false}):l.converters.USVString(t);A=arguments.length===3?n(A):undefined;const s=makeEntry(e,t,A);const r=this[o].findIndex((t=>t.name===e));if(r!==-1){this[o]=[...this[o].slice(0,r),s,...this[o].slice(r+1).filter((t=>t.name!==e))]}else{this[o].push(s)}}entries(){l.brandCheck(this,FormData);return s((()=>this[o].map((e=>[e.name,e.value]))),"FormData","key+value")}keys(){l.brandCheck(this,FormData);return s((()=>this[o].map((e=>[e.name,e.value]))),"FormData","key")}values(){l.brandCheck(this,FormData);return s((()=>this[o].map((e=>[e.name,e.value]))),"FormData","value")}forEach(e,t=globalThis){l.brandCheck(this,FormData);l.argumentLengthCheck(arguments,1,{header:"FormData.forEach"});if(typeof e!=="function"){throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.")}for(const[A,i]of this){e.apply(t,[i,A,this])}}}FormData.prototype[Symbol.iterator]=FormData.prototype.entries;Object.defineProperties(FormData.prototype,{[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(e,t,A){e=Buffer.from(e).toString("utf8");if(typeof t==="string"){t=Buffer.from(t).toString("utf8")}else{if(!c(t)){t=t instanceof u?new g([t],"blob",{type:t.type}):new a(t,"blob",{type:t.type})}if(A!==undefined){const e={type:t.type,lastModified:t.lastModified};t=p&&t instanceof p||t instanceof r?new g([t],A,e):new a(t,A,e)}}return{name:e,value:t}}e.exports={FormData:FormData}},1709:e=>{const t=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[t]}function setGlobalOrigin(e){if(e===undefined){Object.defineProperty(globalThis,t,{value:undefined,writable:true,enumerable:false,configurable:false});return}const A=new URL(e);if(A.protocol!=="http:"&&A.protocol!=="https:"){throw new TypeError(`Only http & https urls are allowed, received ${A.protocol}`)}Object.defineProperty(globalThis,t,{value:A,writable:true,enumerable:false,configurable:false})}e.exports={getGlobalOrigin:getGlobalOrigin,setGlobalOrigin:setGlobalOrigin}},7941:(e,t,A)=>{const{kHeadersList:i}=A(7282);const{kGuard:n}=A(3166);const{kEnumerableProperty:s}=A(9980);const{makeIterator:o,isValidHeaderName:r,isValidHeaderValue:a}=A(5422);const{webidl:c}=A(9342);const l=A(9491);const u=Symbol("headers map");const p=Symbol("headers map sorted");function headerValueNormalize(e){let t=e.length;while(/[\r\n\t ]/.test(e.charAt(--t)));return e.slice(0,t+1).replace(/^[\r\n\t ]+/,"")}function fill(e,t){if(Array.isArray(t)){for(const A of t){if(A.length!==2){throw c.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${A.length}.`})}e.append(A[0],A[1])}}else if(typeof t==="object"&&t!==null){for(const[A,i]of Object.entries(t)){e.append(A,i)}}else{throw c.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})}}class HeadersList{cookies=null;constructor(e){if(e instanceof HeadersList){this[u]=new Map(e[u]);this[p]=e[p];this.cookies=e.cookies}else{this[u]=new Map(e);this[p]=null}}contains(e){e=e.toLowerCase();return this[u].has(e)}clear(){this[u].clear();this[p]=null;this.cookies=null}append(e,t){this[p]=null;const A=e.toLowerCase();const i=this[u].get(A);if(i){const e=A==="cookie"?"; ":", ";this[u].set(A,{name:i.name,value:`${i.value}${e}${t}`})}else{this[u].set(A,{name:e,value:t})}if(A==="set-cookie"){this.cookies??=[];this.cookies.push(t)}}set(e,t){this[p]=null;const A=e.toLowerCase();if(A==="set-cookie"){this.cookies=[t]}return this[u].set(A,{name:e,value:t})}delete(e){this[p]=null;e=e.toLowerCase();if(e==="set-cookie"){this.cookies=null}return this[u].delete(e)}get(e){if(!this.contains(e)){return null}return this[u].get(e.toLowerCase())?.value??null}*[Symbol.iterator](){for(const[e,{value:t}]of this[u]){yield[e,t]}}get entries(){const e={};if(this[u].size){for(const{name:t,value:A}of this[u].values()){e[t]=A}}return e}}class Headers{constructor(e=undefined){this[i]=new HeadersList;this[n]="none";if(e!==undefined){e=c.converters.HeadersInit(e);fill(this,e)}}append(e,t){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,2,{header:"Headers.append"});e=c.converters.ByteString(e);t=c.converters.ByteString(t);t=headerValueNormalize(t);if(!r(e)){throw c.errors.invalidArgument({prefix:"Headers.append",value:e,type:"header name"})}else if(!a(t)){throw c.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}if(this[n]==="immutable"){throw new TypeError("immutable")}else if(this[n]==="request-no-cors"){}return this[i].append(e,t)}delete(e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.delete"});e=c.converters.ByteString(e);if(!r(e)){throw c.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"})}if(this[n]==="immutable"){throw new TypeError("immutable")}else if(this[n]==="request-no-cors"){}if(!this[i].contains(e)){return}return this[i].delete(e)}get(e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.get"});e=c.converters.ByteString(e);if(!r(e)){throw c.errors.invalidArgument({prefix:"Headers.get",value:e,type:"header name"})}return this[i].get(e)}has(e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.has"});e=c.converters.ByteString(e);if(!r(e)){throw c.errors.invalidArgument({prefix:"Headers.has",value:e,type:"header name"})}return this[i].contains(e)}set(e,t){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,2,{header:"Headers.set"});e=c.converters.ByteString(e);t=c.converters.ByteString(t);t=headerValueNormalize(t);if(!r(e)){throw c.errors.invalidArgument({prefix:"Headers.set",value:e,type:"header name"})}else if(!a(t)){throw c.errors.invalidArgument({prefix:"Headers.set",value:t,type:"header value"})}if(this[n]==="immutable"){throw new TypeError("immutable")}else if(this[n]==="request-no-cors"){}return this[i].set(e,t)}getSetCookie(){c.brandCheck(this,Headers);const e=this[i].cookies;if(e){return[...e]}return[]}get[p](){if(this[i][p]){return this[i][p]}const e=[];const t=[...this[i]].sort(((e,t)=>e[0][...this[p].values()]),"Headers","key")}values(){c.brandCheck(this,Headers);return o((()=>[...this[p].values()]),"Headers","value")}entries(){c.brandCheck(this,Headers);return o((()=>[...this[p].values()]),"Headers","key+value")}forEach(e,t=globalThis){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.forEach"});if(typeof e!=="function"){throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.")}for(const[A,i]of this){e.apply(t,[i,A,this])}}[Symbol.for("nodejs.util.inspect.custom")](){c.brandCheck(this,Headers);return this[i]}}Headers.prototype[Symbol.iterator]=Headers.prototype.entries;Object.defineProperties(Headers.prototype,{append:s,delete:s,get:s,has:s,set:s,getSetCookie:s,keys:s,values:s,entries:s,forEach:s,[Symbol.iterator]:{enumerable:false},[Symbol.toStringTag]:{value:"Headers",configurable:true}});c.converters.HeadersInit=function(e){if(c.util.Type(e)==="Object"){if(e[Symbol.iterator]){return c.converters["sequence>"](e)}return c.converters["record"](e)}throw c.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};e.exports={fill:fill,Headers:Headers,HeadersList:HeadersList}},8874:(e,t,A)=>{const{Response:i,makeNetworkError:n,makeAppropriateNetworkError:s,filterResponse:o,makeResponse:r}=A(5450);const{Headers:a}=A(7941);const{Request:c,makeRequest:l}=A(3010);const u=A(9796);const{bytesMatch:p,makePolicyContainer:g,clonePolicyContainer:d,requestBadPort:h,TAOCheck:E,appendRequestOriginHeader:C,responseLocationURL:Q,requestCurrentURL:f,setRequestReferrerPolicyOnRedirect:B,tryUpgradeRequestToAPotentiallyTrustworthyURL:I,createOpaqueTimingInfo:m,appendFetchMetadata:b,corsCheck:y,crossOriginResourcePolicyCheck:w,determineRequestsReferrer:v,coarsenedSharedCurrentTime:R,createDeferredPromise:x,isBlobLike:D,sameOrigin:k,isCancelled:F,isAborted:S,isErrorLike:N,fullyReadBody:U,readableStreamClose:L,isomorphicEncode:M,urlIsLocal:T,urlIsHttpHttpsScheme:_,urlHasHttpsScheme:Y}=A(5422);const{kState:H,kHeaders:J,kGuard:G,kRealm:O}=A(3166);const V=A(9491);const{safelyExtractBody:P}=A(1161);const{redirectStatusSet:q,nullBodyStatus:W,safeMethodsSet:j,requestBodyHeader:z,subresourceSet:X,DOMException:Z}=A(9596);const{kHeadersList:K}=A(7282);const $=A(2361);const{Readable:ee,pipeline:te}=A(2781);const{addAbortListener:Ae,isErrored:ie,isReadable:ne,nodeMajor:se,nodeMinor:oe}=A(9980);const{dataURLProcessor:re,serializeAMimeType:ae}=A(3513);const{TransformStream:ce}=A(5356);const{getGlobalDispatcher:le}=A(4339);const{webidl:ue}=A(9342);const{STATUS_CODES:pe}=A(3685);const ge=["GET","HEAD"];let de;let he=globalThis.ReadableStream;class Fetch extends ${constructor(e){super();this.dispatcher=e;this.connection=null;this.dump=false;this.state="ongoing";this.setMaxListeners(21)}terminate(e){if(this.state!=="ongoing"){return}this.state="terminated";this.connection?.destroy(e);this.emit("terminated",e)}abort(e){if(this.state!=="ongoing"){return}this.state="aborted";if(!e){e=new Z("The operation was aborted.","AbortError")}this.serializedAbortReason=e;this.connection?.destroy(e);this.emit("terminated",e)}}function fetch(e,t={}){ue.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});const A=x();let n;try{n=new c(e,t)}catch(e){A.reject(e);return A.promise}const s=n[H];if(n.signal.aborted){abortFetch(A,s,null,n.signal.reason);return A.promise}const o=s.client.globalObject;if(o?.constructor?.name==="ServiceWorkerGlobalScope"){s.serviceWorkers="none"}let r=null;const a=null;let l=false;let u=null;Ae(n.signal,(()=>{l=true;V(u!=null);u.abort(n.signal.reason);abortFetch(A,s,r,n.signal.reason)}));const handleFetchDone=e=>finalizeAndReportTiming(e,"fetch");const processResponse=e=>{if(l){return Promise.resolve()}if(e.aborted){abortFetch(A,s,r,u.serializedAbortReason);return Promise.resolve()}if(e.type==="error"){A.reject(Object.assign(new TypeError("fetch failed"),{cause:e.error}));return Promise.resolve()}r=new i;r[H]=e;r[O]=a;r[J][K]=e.headersList;r[J][G]="immutable";r[J][O]=a;A.resolve(r)};u=fetching({request:s,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:t.dispatcher??le()});return A.promise}function finalizeAndReportTiming(e,t="other"){if(e.type==="error"&&e.aborted){return}if(!e.urlList?.length){return}const A=e.urlList[0];let i=e.timingInfo;let n=e.cacheState;if(!_(A)){return}if(i===null){return}if(!i.timingAllowPassed){i=m({startTime:i.startTime});n=""}i.endTime=R();e.timingInfo=i;markResourceTiming(i,A,t,globalThis,n)}function markResourceTiming(e,t,A,i,n){if(se>18||se===18&&oe>=2){performance.markResourceTiming(e,t.href,A,i,n)}}function abortFetch(e,t,A,i){if(!i){i=new Z("The operation was aborted.","AbortError")}e.reject(i);if(t.body!=null&&ne(t.body?.stream)){t.body.stream.cancel(i).catch((e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e}))}if(A==null){return}const n=A[H];if(n.body!=null&&ne(n.body?.stream)){n.body.stream.cancel(i).catch((e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e}))}}function fetching({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:i,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:o=false,dispatcher:r}){let a=null;let c=false;if(e.client!=null){a=e.client.globalObject;c=e.client.crossOriginIsolatedCapability}const l=R(c);const u=m({startTime:l});const p={controller:new Fetch(r),request:e,timingInfo:u,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:i,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:c};V(!e.body||e.body.stream);if(e.window==="client"){e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"}if(e.origin==="client"){e.origin=e.client?.origin}if(e.policyContainer==="client"){if(e.client!=null){e.policyContainer=d(e.client.policyContainer)}else{e.policyContainer=g()}}if(!e.headersList.contains("accept")){const t="*/*";e.headersList.append("accept",t)}if(!e.headersList.contains("accept-language")){e.headersList.append("accept-language","*")}if(e.priority===null){}if(X.has(e.destination)){}mainFetch(p).catch((e=>{p.controller.terminate(e)}));return p.controller}async function mainFetch(e,t=false){const A=e.request;let i=null;if(A.localURLsOnly&&!T(f(A))){i=n("local URLs only")}I(A);if(h(A)==="blocked"){i=n("bad port")}if(A.referrerPolicy===""){A.referrerPolicy=A.policyContainer.referrerPolicy}if(A.referrer!=="no-referrer"){A.referrer=v(A)}if(i===null){i=await(async()=>{const t=f(A);if(k(t,A.url)&&A.responseTainting==="basic"||t.protocol==="data:"||(A.mode==="navigate"||A.mode==="websocket")){A.responseTainting="basic";return await schemeFetch(e)}if(A.mode==="same-origin"){return n('request mode cannot be "same-origin"')}if(A.mode==="no-cors"){if(A.redirect!=="follow"){return n('redirect mode cannot be "follow" for "no-cors" request')}A.responseTainting="opaque";return await schemeFetch(e)}if(!_(f(A))){return n("URL scheme must be a HTTP(S) scheme")}A.responseTainting="cors";return await httpFetch(e)})()}if(t){return i}if(i.status!==0&&!i.internalResponse){if(A.responseTainting==="cors"){}if(A.responseTainting==="basic"){i=o(i,"basic")}else if(A.responseTainting==="cors"){i=o(i,"cors")}else if(A.responseTainting==="opaque"){i=o(i,"opaque")}else{V(false)}}let s=i.status===0?i:i.internalResponse;if(s.urlList.length===0){s.urlList.push(...A.urlList)}if(!A.timingAllowFailed){i.timingAllowPassed=true}if(i.type==="opaque"&&s.status===206&&s.rangeRequested&&!A.headers.contains("range")){i=s=n()}if(i.status!==0&&(A.method==="HEAD"||A.method==="CONNECT"||W.includes(s.status))){s.body=null;e.controller.dump=true}if(A.integrity){const processBodyError=t=>fetchFinale(e,n(t));if(A.responseTainting==="opaque"||i.body==null){processBodyError(i.error);return}const processBody=t=>{if(!p(t,A.integrity)){processBodyError("integrity mismatch");return}i.body=P(t)[0];fetchFinale(e,i)};await U(i.body,processBody,processBodyError)}else{fetchFinale(e,i)}}function schemeFetch(e){if(F(e)&&e.request.redirectCount===0){return Promise.resolve(s(e))}const{request:t}=e;const{protocol:i}=f(t);switch(i){case"about:":{return Promise.resolve(n("about scheme is not supported"))}case"blob:":{if(!de){de=A(4300).resolveObjectURL}const e=f(t);if(e.search.length!==0){return Promise.resolve(n("NetworkError when attempting to fetch resource."))}const i=de(e.toString());if(t.method!=="GET"||!D(i)){return Promise.resolve(n("invalid method"))}const s=P(i);const o=s[0];const a=M(`${o.length}`);const c=s[1]??"";const l=r({statusText:"OK",headersList:[["content-length",{name:"Content-Length",value:a}],["content-type",{name:"Content-Type",value:c}]]});l.body=o;return Promise.resolve(l)}case"data:":{const e=f(t);const A=re(e);if(A==="failure"){return Promise.resolve(n("failed to fetch the data URL"))}const i=ae(A.mimeType);return Promise.resolve(r({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:i}]],body:P(A.body)[0]}))}case"file:":{return Promise.resolve(n("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(e).catch((e=>n(e)))}default:{return Promise.resolve(n("unknown scheme"))}}}function finalizeResponse(e,t){e.request.done=true;if(e.processResponseDone!=null){queueMicrotask((()=>e.processResponseDone(t)))}}function fetchFinale(e,t){if(t.type==="error"){t.urlList=[e.request.urlList[0]];t.timingInfo=m({startTime:e.timingInfo.startTime})}const processResponseEndOfBody=()=>{e.request.done=true;if(e.processResponseEndOfBody!=null){queueMicrotask((()=>e.processResponseEndOfBody(t)))}};if(e.processResponse!=null){queueMicrotask((()=>e.processResponse(t)))}if(t.body==null){processResponseEndOfBody()}else{const identityTransformAlgorithm=(e,t)=>{t.enqueue(e)};const e=new ce({start(){},transform:identityTransformAlgorithm,flush:processResponseEndOfBody},{size(){return 1}},{size(){return 1}});t.body={stream:t.body.stream.pipeThrough(e)}}if(e.processResponseConsumeBody!=null){const processBody=A=>e.processResponseConsumeBody(t,A);const processBodyError=A=>e.processResponseConsumeBody(t,A);if(t.body==null){queueMicrotask((()=>processBody(null)))}else{return U(t.body,processBody,processBodyError)}return Promise.resolve()}}async function httpFetch(e){const t=e.request;let A=null;let i=null;const s=e.timingInfo;if(t.serviceWorkers==="all"){}if(A===null){if(t.redirect==="follow"){t.serviceWorkers="none"}i=A=await httpNetworkOrCacheFetch(e);if(t.responseTainting==="cors"&&y(t,A)==="failure"){return n("cors failure")}if(E(t,A)==="failure"){t.timingAllowFailed=true}}if((t.responseTainting==="opaque"||A.type==="opaque")&&w(t.origin,t.client,t.destination,i)==="blocked"){return n("blocked")}if(q.has(i.status)){if(t.redirect!=="manual"){e.controller.connection.destroy()}if(t.redirect==="error"){A=n("unexpected redirect")}else if(t.redirect==="manual"){A=i}else if(t.redirect==="follow"){A=await httpRedirectFetch(e,A)}else{V(false)}}A.timingInfo=s;return A}function httpRedirectFetch(e,t){const A=e.request;const i=t.internalResponse?t.internalResponse:t;let s;try{s=Q(i,f(A).hash);if(s==null){return t}}catch(e){return Promise.resolve(n(e))}if(!_(s)){return Promise.resolve(n("URL scheme must be a HTTP(S) scheme"))}if(A.redirectCount===20){return Promise.resolve(n("redirect count exceeded"))}A.redirectCount+=1;if(A.mode==="cors"&&(s.username||s.password)&&!k(A,s)){return Promise.resolve(n('cross origin not allowed for request mode "cors"'))}if(A.responseTainting==="cors"&&(s.username||s.password)){return Promise.resolve(n('URL cannot contain credentials for request mode "cors"'))}if(i.status!==303&&A.body!=null&&A.body.source==null){return Promise.resolve(n())}if([301,302].includes(i.status)&&A.method==="POST"||i.status===303&&!ge.includes(A.method)){A.method="GET";A.body=null;for(const e of z){A.headersList.delete(e)}}if(!k(f(A),s)){A.headersList.delete("authorization");A.headersList.delete("cookie");A.headersList.delete("host")}if(A.body!=null){V(A.body.source!=null);A.body=P(A.body.source)[0]}const o=e.timingInfo;o.redirectEndTime=o.postRedirectStartTime=R(e.crossOriginIsolatedCapability);if(o.redirectStartTime===0){o.redirectStartTime=o.startTime}A.urlList.push(s);B(A,i);return mainFetch(e,true)}async function httpNetworkOrCacheFetch(e,t=false,A=false){const i=e.request;let o=null;let r=null;let a=null;const c=null;const u=false;if(i.window==="no-window"&&i.redirect==="error"){o=e;r=i}else{r=l(i);o={...e};o.request=r}const p=i.credentials==="include"||i.credentials==="same-origin"&&i.responseTainting==="basic";const g=r.body?r.body.length:null;let d=null;if(r.body==null&&["POST","PUT"].includes(r.method)){d="0"}if(g!=null){d=M(`${g}`)}if(d!=null){r.headersList.append("content-length",d)}if(g!=null&&r.keepalive){}if(r.referrer instanceof URL){r.headersList.append("referer",M(r.referrer.href))}C(r);b(r);if(!r.headersList.contains("user-agent")){r.headersList.append("user-agent",typeof esbuildDetection==="undefined"?"undici":"node")}if(r.cache==="default"&&(r.headersList.contains("if-modified-since")||r.headersList.contains("if-none-match")||r.headersList.contains("if-unmodified-since")||r.headersList.contains("if-match")||r.headersList.contains("if-range"))){r.cache="no-store"}if(r.cache==="no-cache"&&!r.preventNoCacheCacheControlHeaderModification&&!r.headersList.contains("cache-control")){r.headersList.append("cache-control","max-age=0")}if(r.cache==="no-store"||r.cache==="reload"){if(!r.headersList.contains("pragma")){r.headersList.append("pragma","no-cache")}if(!r.headersList.contains("cache-control")){r.headersList.append("cache-control","no-cache")}}if(r.headersList.contains("range")){r.headersList.append("accept-encoding","identity")}if(!r.headersList.contains("accept-encoding")){if(Y(f(r))){r.headersList.append("accept-encoding","br, gzip, deflate")}else{r.headersList.append("accept-encoding","gzip, deflate")}}r.headersList.delete("host");if(p){}if(c==null){r.cache="no-store"}if(r.mode!=="no-store"&&r.mode!=="reload"){}if(a==null){if(r.mode==="only-if-cached"){return n("only if cached")}const e=await httpNetworkFetch(o,p,A);if(!j.has(r.method)&&e.status>=200&&e.status<=399){}if(u&&e.status===304){}if(a==null){a=e}}a.urlList=[...r.urlList];if(r.headersList.contains("range")){a.rangeRequested=true}a.requestIncludesCredentials=p;if(a.status===407){if(i.window==="no-window"){return n()}if(F(e)){return s(e)}return n("proxy authentication required")}if(a.status===421&&!A&&(i.body==null||i.body.source!=null)){if(F(e)){return s(e)}e.controller.connection.destroy();a=await httpNetworkOrCacheFetch(e,t,true)}if(t){}return a}async function httpNetworkFetch(e,t=false,i=false){V(!e.controller.connection||e.controller.connection.destroyed);e.controller.connection={abort:null,destroyed:false,destroy(e){if(!this.destroyed){this.destroyed=true;this.abort?.(e??new Z("The operation was aborted.","AbortError"))}}};const o=e.request;let c=null;const l=e.timingInfo;const p=null;if(p==null){o.cache="no-store"}const g=i?"yes":"no";if(o.mode==="websocket"){}else{}let d=null;if(o.body==null&&e.processRequestEndOfBody){queueMicrotask((()=>e.processRequestEndOfBody()))}else if(o.body!=null){const processBodyChunk=async function*(t){if(F(e)){return}yield t;e.processRequestBodyChunkLength?.(t.byteLength)};const processEndOfBody=()=>{if(F(e)){return}if(e.processRequestEndOfBody){e.processRequestEndOfBody()}};const processBodyError=t=>{if(F(e)){return}if(t.name==="AbortError"){e.controller.abort()}else{e.controller.terminate(t)}};d=async function*(){try{for await(const e of o.body.stream){yield*processBodyChunk(e)}processEndOfBody()}catch(e){processBodyError(e)}}()}try{const{body:t,status:A,statusText:i,headersList:n,socket:s}=await dispatch({body:d});if(s){c=r({status:A,statusText:i,headersList:n,socket:s})}else{const s=t[Symbol.asyncIterator]();e.controller.next=()=>s.next();c=r({status:A,statusText:i,headersList:n})}}catch(t){if(t.name==="AbortError"){e.controller.connection.destroy();return s(e,t)}return n(t)}const pullAlgorithm=()=>{e.controller.resume()};const cancelAlgorithm=t=>{e.controller.abort(t)};if(!he){he=A(5356).ReadableStream}const h=new he({async start(t){e.controller.controller=t},async pull(e){await pullAlgorithm(e)},async cancel(e){await cancelAlgorithm(e)}},{highWaterMark:0,size(){return 1}});c.body={stream:h};e.controller.on("terminated",onAborted);e.controller.resume=async()=>{while(true){let t;let A;try{const{done:A,value:i}=await e.controller.next();if(S(e)){break}t=A?undefined:i}catch(i){if(e.controller.ended&&!l.encodedBodySize){t=undefined}else{t=i;A=true}}if(t===undefined){L(e.controller.controller);finalizeResponse(e,c);return}l.decodedBodySize+=t?.byteLength??0;if(A){e.controller.terminate(t);return}e.controller.controller.enqueue(new Uint8Array(t));if(ie(h)){e.controller.terminate();return}if(!e.controller.controller.desiredSize){return}}};function onAborted(t){if(S(e)){c.aborted=true;if(ne(h)){e.controller.controller.error(e.controller.serializedAbortReason)}}else{if(ne(h)){e.controller.controller.error(new TypeError("terminated",{cause:N(t)?t:undefined}))}}e.controller.connection.destroy()}return c;async function dispatch({body:t}){const A=f(o);const i=e.controller.dispatcher;return new Promise(((n,s)=>i.dispatch({path:A.pathname+A.search,origin:A.origin,method:o.method,body:e.controller.dispatcher.isMockActive?o.body&&o.body.source:t,headers:o.headersList.entries,maxRedirections:0,upgrade:o.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(t){const{connection:A}=e.controller;if(A.destroyed){t(new Z("The operation was aborted.","AbortError"))}else{e.controller.on("terminated",t);this.abort=A.abort=t}},onHeaders(e,t,A,i){if(e<200){return}let s=[];let r="";const c=new a;if(Array.isArray(t)){for(let e=0;ee.trim()))}else if(A.toLowerCase()==="location"){r=i}c.append(A,i)}}else{const e=Object.keys(t);for(const A of e){const e=t[A];if(A.toLowerCase()==="content-encoding"){s=e.toLowerCase().split(",").map((e=>e.trim())).reverse()}else if(A.toLowerCase()==="location"){r=e}c.append(A,e)}}this.body=new ee({read:A});const l=[];const p=o.redirect==="follow"&&r&&q.has(e);if(o.method!=="HEAD"&&o.method!=="CONNECT"&&!W.includes(e)&&!p){for(const e of s){if(e==="x-gzip"||e==="gzip"){l.push(u.createGunzip({flush:u.constants.Z_SYNC_FLUSH,finishFlush:u.constants.Z_SYNC_FLUSH}))}else if(e==="deflate"){l.push(u.createInflate())}else if(e==="br"){l.push(u.createBrotliDecompress())}else{l.length=0;break}}}n({status:e,statusText:i,headersList:c[K],body:l.length?te(this.body,...l,(()=>{})):this.body.on("error",(()=>{}))});return true},onData(t){if(e.controller.dump){return}const A=t;l.encodedBodySize+=A.byteLength;return this.body.push(A)},onComplete(){if(this.abort){e.controller.off("terminated",this.abort)}e.controller.ended=true;this.body.push(null)},onError(t){if(this.abort){e.controller.off("terminated",this.abort)}this.body?.destroy(t);e.controller.terminate(t);s(t)},onUpgrade(e,t,A){if(e!==101){return}const i=new a;for(let e=0;e{const{extractBody:i,mixinBody:n,cloneBody:s}=A(1161);const{Headers:o,fill:r,HeadersList:a}=A(7941);const{FinalizationRegistry:c}=A(6835)();const l=A(9980);const{isValidHTTPToken:u,sameOrigin:p,normalizeMethod:g,makePolicyContainer:d}=A(5422);const{forbiddenMethodsSet:h,corsSafeListedMethodsSet:E,referrerPolicy:C,requestRedirect:Q,requestMode:f,requestCredentials:B,requestCache:I,requestDuplex:m}=A(9596);const{kEnumerableProperty:b}=l;const{kHeaders:y,kSignal:w,kState:v,kGuard:R,kRealm:x}=A(3166);const{webidl:D}=A(9342);const{getGlobalOrigin:k}=A(1709);const{URLSerializer:F}=A(3513);const{kHeadersList:S}=A(7282);const N=A(9491);const{getMaxListeners:U,setMaxListeners:L,getEventListeners:M,defaultMaxListeners:T}=A(2361);let _=globalThis.TransformStream;const Y=Symbol("init");const H=Symbol("abortController");const J=new c((({signal:e,abort:t})=>{e.removeEventListener("abort",t)}));class Request{constructor(e,t={}){if(e===Y){return}D.argumentLengthCheck(arguments,1,{header:"Request constructor"});e=D.converters.RequestInfo(e);t=D.converters.RequestInit(t);this[x]={settingsObject:{baseUrl:k(),get origin(){return this.baseUrl?.origin},policyContainer:d()}};let n=null;let s=null;const a=this[x].settingsObject.baseUrl;let c=null;if(typeof e==="string"){let t;try{t=new URL(e,a)}catch(t){throw new TypeError("Failed to parse URL from "+e,{cause:t})}if(t.username||t.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e)}n=makeRequest({urlList:[t]});s="cors"}else{N(e instanceof Request);n=e[v];c=e[w]}const C=this[x].settingsObject.origin;let Q="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&p(n.window,C)){Q=n.window}if(t.window!=null){throw new TypeError(`'window' option '${Q}' must be null`)}if("window"in t){Q="no-window"}n=makeRequest({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:this[x].settingsObject,window:Q,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});if(Object.keys(t).length>0){if(n.mode==="navigate"){n.mode="same-origin"}n.reloadNavigation=false;n.historyNavigation=false;n.origin="client";n.referrer="client";n.referrerPolicy="";n.url=n.urlList[n.urlList.length-1];n.urlList=[n.url]}if(t.referrer!==undefined){const e=t.referrer;if(e===""){n.referrer="no-referrer"}else{let t;try{t=new URL(e,a)}catch(t){throw new TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}if(t.protocol==="about:"&&t.hostname==="client"||C&&!p(t,this[x].settingsObject.baseUrl)){n.referrer="client"}else{n.referrer=t}}}if(t.referrerPolicy!==undefined){n.referrerPolicy=t.referrerPolicy}let f;if(t.mode!==undefined){f=t.mode}else{f=s}if(f==="navigate"){throw D.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(f!=null){n.mode=f}if(t.credentials!==undefined){n.credentials=t.credentials}if(t.cache!==undefined){n.cache=t.cache}if(n.cache==="only-if-cached"&&n.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(t.redirect!==undefined){n.redirect=t.redirect}if(t.integrity!==undefined&&t.integrity!=null){n.integrity=String(t.integrity)}if(t.keepalive!==undefined){n.keepalive=Boolean(t.keepalive)}if(t.method!==undefined){let e=t.method;if(!u(t.method)){throw TypeError(`'${t.method}' is not a valid HTTP method.`)}if(h.has(e.toUpperCase())){throw TypeError(`'${t.method}' HTTP method is unsupported.`)}e=g(t.method);n.method=e}if(t.signal!==undefined){c=t.signal}this[v]=n;const B=new AbortController;this[w]=B.signal;this[w][x]=this[x];if(c!=null){if(!c||typeof c.aborted!=="boolean"||typeof c.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(c.aborted){B.abort(c.reason)}else{this[H]=B;const e=new WeakRef(B);const abort=function(){const t=e.deref();if(t!==undefined){t.abort(this.reason)}};try{if(typeof U==="function"&&U(c)===T){L(100,c)}else if(M(c,"abort").length>=T){L(100,c)}}catch{}l.addAbortListener(c,abort);J.register(B,{signal:c,abort:abort})}}this[y]=new o;this[y][S]=n.headersList;this[y][R]="request";this[y][x]=this[x];if(f==="no-cors"){if(!E.has(n.method)){throw new TypeError(`'${n.method} is unsupported in no-cors mode.`)}this[y][R]="request-no-cors"}if(Object.keys(t).length!==0){let e=new o(this[y]);if(t.headers!==undefined){e=t.headers}this[y][S].clear();if(e.constructor.name==="Headers"){for(const[t,A]of e){this[y].append(t,A)}}else{r(this[y],e)}}const I=e instanceof Request?e[v].body:null;if((t.body!=null||I!=null)&&(n.method==="GET"||n.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let m=null;if(t.body!=null){const[e,A]=i(t.body,n.keepalive);m=e;if(A&&!this[y][S].contains("content-type")){this[y].append("content-type",A)}}const b=m??I;if(b!=null&&b.source==null){if(m!=null&&t.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(n.mode!=="same-origin"&&n.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}n.useCORSPreflightFlag=true}let F=b;if(m==null&&I!=null){if(l.isDisturbed(I.stream)||I.stream.locked){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}if(!_){_=A(5356).TransformStream}const e=new _;I.stream.pipeThrough(e);F={source:I.source,length:I.length,stream:e.readable}}this[v].body=F}get method(){D.brandCheck(this,Request);return this[v].method}get url(){D.brandCheck(this,Request);return F(this[v].url)}get headers(){D.brandCheck(this,Request);return this[y]}get destination(){D.brandCheck(this,Request);return this[v].destination}get referrer(){D.brandCheck(this,Request);if(this[v].referrer==="no-referrer"){return""}if(this[v].referrer==="client"){return"about:client"}return this[v].referrer.toString()}get referrerPolicy(){D.brandCheck(this,Request);return this[v].referrerPolicy}get mode(){D.brandCheck(this,Request);return this[v].mode}get credentials(){return this[v].credentials}get cache(){D.brandCheck(this,Request);return this[v].cache}get redirect(){D.brandCheck(this,Request);return this[v].redirect}get integrity(){D.brandCheck(this,Request);return this[v].integrity}get keepalive(){D.brandCheck(this,Request);return this[v].keepalive}get isReloadNavigation(){D.brandCheck(this,Request);return this[v].reloadNavigation}get isHistoryNavigation(){D.brandCheck(this,Request);return this[v].historyNavigation}get signal(){D.brandCheck(this,Request);return this[w]}get body(){D.brandCheck(this,Request);return this[v].body?this[v].body.stream:null}get bodyUsed(){D.brandCheck(this,Request);return!!this[v].body&&l.isDisturbed(this[v].body.stream)}get duplex(){D.brandCheck(this,Request);return"half"}clone(){D.brandCheck(this,Request);if(this.bodyUsed||this.body?.locked){throw new TypeError("unusable")}const e=cloneRequest(this[v]);const t=new Request(Y);t[v]=e;t[x]=this[x];t[y]=new o;t[y][S]=e.headersList;t[y][R]=this[y][R];t[y][x]=this[y][x];const A=new AbortController;if(this.signal.aborted){A.abort(this.signal.reason)}else{l.addAbortListener(this.signal,(()=>{A.abort(this.signal.reason)}))}t[w]=A.signal;return t}}n(Request);function makeRequest(e){const t={method:"GET",localURLsOnly:false,unsafeRequest:false,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:false,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:false,credentials:"same-origin",useCredentials:false,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:false,historyNavigation:false,userActivation:false,taintedOrigin:false,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:false,done:false,timingAllowFailed:false,...e,headersList:e.headersList?new a(e.headersList):new a};t.url=t.urlList[0];return t}function cloneRequest(e){const t=makeRequest({...e,body:null});if(e.body!=null){t.body=s(e.body)}return t}Object.defineProperties(Request.prototype,{method:b,url:b,headers:b,redirect:b,clone:b,signal:b,duplex:b,destination:b,body:b,bodyUsed:b,isHistoryNavigation:b,isReloadNavigation:b,keepalive:b,integrity:b,cache:b,credentials:b,attribute:b,referrerPolicy:b,referrer:b,mode:b,[Symbol.toStringTag]:{value:"Request",configurable:true}});D.converters.Request=D.interfaceConverter(Request);D.converters.RequestInfo=function(e){if(typeof e==="string"){return D.converters.USVString(e)}if(e instanceof Request){return D.converters.Request(e)}return D.converters.USVString(e)};D.converters.AbortSignal=D.interfaceConverter(AbortSignal);D.converters.RequestInit=D.dictionaryConverter([{key:"method",converter:D.converters.ByteString},{key:"headers",converter:D.converters.HeadersInit},{key:"body",converter:D.nullableConverter(D.converters.BodyInit)},{key:"referrer",converter:D.converters.USVString},{key:"referrerPolicy",converter:D.converters.DOMString,allowedValues:C},{key:"mode",converter:D.converters.DOMString,allowedValues:f},{key:"credentials",converter:D.converters.DOMString,allowedValues:B},{key:"cache",converter:D.converters.DOMString,allowedValues:I},{key:"redirect",converter:D.converters.DOMString,allowedValues:Q},{key:"integrity",converter:D.converters.DOMString},{key:"keepalive",converter:D.converters.boolean},{key:"signal",converter:D.nullableConverter((e=>D.converters.AbortSignal(e,{strict:false})))},{key:"window",converter:D.converters.any},{key:"duplex",converter:D.converters.DOMString,allowedValues:m}]);e.exports={Request:Request,makeRequest:makeRequest}},5450:(e,t,A)=>{const{Headers:i,HeadersList:n,fill:s}=A(7941);const{extractBody:o,cloneBody:r,mixinBody:a}=A(1161);const c=A(9980);const{kEnumerableProperty:l}=c;const{isValidReasonPhrase:u,isCancelled:p,isAborted:g,isBlobLike:d,serializeJavascriptValueToJSONString:h,isErrorLike:E,isomorphicEncode:C}=A(5422);const{redirectStatusSet:Q,nullBodyStatus:f,DOMException:B}=A(9596);const{kState:I,kHeaders:m,kGuard:b,kRealm:y}=A(3166);const{webidl:w}=A(9342);const{FormData:v}=A(5061);const{getGlobalOrigin:R}=A(1709);const{URLSerializer:x}=A(3513);const{kHeadersList:D}=A(7282);const k=A(9491);const{types:F}=A(3837);const S=globalThis.ReadableStream||A(5356).ReadableStream;const N=new TextEncoder("utf-8");class Response{static error(){const e={settingsObject:{}};const t=new Response;t[I]=makeNetworkError();t[y]=e;t[m][D]=t[I].headersList;t[m][b]="immutable";t[m][y]=e;return t}static json(e,t={}){w.argumentLengthCheck(arguments,1,{header:"Response.json"});if(t!==null){t=w.converters.ResponseInit(t)}const A=N.encode(h(e));const i=o(A);const n={settingsObject:{}};const s=new Response;s[y]=n;s[m][b]="response";s[m][y]=n;initializeResponse(s,t,{body:i[0],type:"application/json"});return s}static redirect(e,t=302){const A={settingsObject:{}};w.argumentLengthCheck(arguments,1,{header:"Response.redirect"});e=w.converters.USVString(e);t=w.converters["unsigned short"](t);let i;try{i=new URL(e,R())}catch(t){throw Object.assign(new TypeError("Failed to parse URL from "+e),{cause:t})}if(!Q.has(t)){throw new RangeError("Invalid status code "+t)}const n=new Response;n[y]=A;n[m][b]="immutable";n[m][y]=A;n[I].status=t;const s=C(x(i));n[I].headersList.append("location",s);return n}constructor(e=null,t={}){if(e!==null){e=w.converters.BodyInit(e)}t=w.converters.ResponseInit(t);this[y]={settingsObject:{}};this[I]=makeResponse({});this[m]=new i;this[m][b]="response";this[m][D]=this[I].headersList;this[m][y]=this[y];let A=null;if(e!=null){const[t,i]=o(e);A={body:t,type:i}}initializeResponse(this,t,A)}get type(){w.brandCheck(this,Response);return this[I].type}get url(){w.brandCheck(this,Response);const e=this[I].urlList;const t=e[e.length-1]??null;if(t===null){return""}return x(t,true)}get redirected(){w.brandCheck(this,Response);return this[I].urlList.length>1}get status(){w.brandCheck(this,Response);return this[I].status}get ok(){w.brandCheck(this,Response);return this[I].status>=200&&this[I].status<=299}get statusText(){w.brandCheck(this,Response);return this[I].statusText}get headers(){w.brandCheck(this,Response);return this[m]}get body(){w.brandCheck(this,Response);return this[I].body?this[I].body.stream:null}get bodyUsed(){w.brandCheck(this,Response);return!!this[I].body&&c.isDisturbed(this[I].body.stream)}clone(){w.brandCheck(this,Response);if(this.bodyUsed||this.body&&this.body.locked){throw w.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const e=cloneResponse(this[I]);const t=new Response;t[I]=e;t[y]=this[y];t[m][D]=e.headersList;t[m][b]=this[m][b];t[m][y]=this[m][y];return t}}a(Response);Object.defineProperties(Response.prototype,{type:l,url:l,status:l,ok:l,redirected:l,statusText:l,headers:l,clone:l,body:l,bodyUsed:l,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:l,redirect:l,error:l});function cloneResponse(e){if(e.internalResponse){return filterResponse(cloneResponse(e.internalResponse),e.type)}const t=makeResponse({...e,body:null});if(e.body!=null){t.body=r(e.body)}return t}function makeResponse(e){return{aborted:false,rangeRequested:false,timingAllowPassed:false,requestIncludesCredentials:false,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e.headersList?new n(e.headersList):new n,urlList:e.urlList?[...e.urlList]:[]}}function makeNetworkError(e){const t=E(e);return makeResponse({type:"error",status:0,error:t?e:new Error(e?String(e):e),aborted:e&&e.name==="AbortError"})}function makeFilteredResponse(e,t){t={internalResponse:e,...t};return new Proxy(e,{get(e,A){return A in t?t[A]:e[A]},set(e,A,i){k(!(A in t));e[A]=i;return true}})}function filterResponse(e,t){if(t==="basic"){return makeFilteredResponse(e,{type:"basic",headersList:e.headersList})}else if(t==="cors"){return makeFilteredResponse(e,{type:"cors",headersList:e.headersList})}else if(t==="opaque"){return makeFilteredResponse(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null})}else if(t==="opaqueredirect"){return makeFilteredResponse(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{k(false)}}function makeAppropriateNetworkError(e,t=null){k(p(e));return g(e)?makeNetworkError(Object.assign(new B("The operation was aborted.","AbortError"),{cause:t})):makeNetworkError(Object.assign(new B("Request was cancelled."),{cause:t}))}function initializeResponse(e,t,A){if(t.status!==null&&(t.status<200||t.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in t&&t.statusText!=null){if(!u(String(t.statusText))){throw new TypeError("Invalid statusText")}}if("status"in t&&t.status!=null){e[I].status=t.status}if("statusText"in t&&t.statusText!=null){e[I].statusText=t.statusText}if("headers"in t&&t.headers!=null){s(e[m],t.headers)}if(A){if(f.includes(e.status)){throw w.errors.exception({header:"Response constructor",message:"Invalid response status code "+e.status})}e[I].body=A.body;if(A.type!=null&&!e[I].headersList.contains("Content-Type")){e[I].headersList.append("content-type",A.type)}}}w.converters.ReadableStream=w.interfaceConverter(S);w.converters.FormData=w.interfaceConverter(v);w.converters.URLSearchParams=w.interfaceConverter(URLSearchParams);w.converters.XMLHttpRequestBodyInit=function(e){if(typeof e==="string"){return w.converters.USVString(e)}if(d(e)){return w.converters.Blob(e,{strict:false})}if(F.isAnyArrayBuffer(e)||F.isTypedArray(e)||F.isDataView(e)){return w.converters.BufferSource(e)}if(c.isFormDataLike(e)){return w.converters.FormData(e,{strict:false})}if(e instanceof URLSearchParams){return w.converters.URLSearchParams(e)}return w.converters.DOMString(e)};w.converters.BodyInit=function(e){if(e instanceof S){return w.converters.ReadableStream(e)}if(e?.[Symbol.asyncIterator]){return e}return w.converters.XMLHttpRequestBodyInit(e)};w.converters.ResponseInit=w.dictionaryConverter([{key:"status",converter:w.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:w.converters.ByteString,defaultValue:""},{key:"headers",converter:w.converters.HeadersInit}]);e.exports={makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse}},3166:e=>{e.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm")}},5422:(e,t,A)=>{const{redirectStatusSet:i,referrerPolicySet:n,badPortsSet:s}=A(9596);const{getGlobalOrigin:o}=A(1709);const{performance:r}=A(4074);const{isBlobLike:a,toUSVString:c,ReadableStreamFrom:l}=A(9980);const u=A(9491);const{isUint8Array:p}=A(9830);let g;try{g=A(6113)}catch{}function responseURL(e){const t=e.urlList;const A=t.length;return A===0?null:t[A-1].toString()}function responseLocationURL(e,t){if(!i.has(e.status)){return null}let A=e.headersList.get("location");if(A!==null&&isValidHeaderValue(A)){A=new URL(A,responseURL(e))}if(A&&!A.hash){A.hash=t}return A}function requestCurrentURL(e){return e.urlList[e.urlList.length-1]}function requestBadPort(e){const t=requestCurrentURL(e);if(urlIsHttpHttpsScheme(t)&&s.has(t.port)){return"blocked"}return"allowed"}function isErrorLike(e){return e instanceof Error||(e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException")}function isValidReasonPhrase(e){for(let t=0;t=32&&A<=126||A>=128&&A<=255)){return false}}return true}function isTokenChar(e){return!(e>=127||e<=32||e==="("||e===")"||e==="<"||e===">"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}")}function isValidHTTPToken(e){if(!e||typeof e!=="string"){return false}for(let t=0;t127||!isTokenChar(A)){return false}}return true}function isValidHeaderName(e){if(e.length===0){return false}return isValidHTTPToken(e)}function isValidHeaderValue(e){if(e.startsWith("\t")||e.startsWith(" ")||e.endsWith("\t")||e.endsWith(" ")){return false}if(e.includes("\0")||e.includes("\r")||e.includes("\n")){return false}return true}function setRequestReferrerPolicyOnRedirect(e,t){const{headersList:A}=t;const i=(A.get("referrer-policy")??"").split(",");let s="";if(i.length>0){for(let e=i.length;e!==0;e--){const t=i[e-1].trim();if(n.has(t)){s=t;break}}}if(s!==""){e.referrerPolicy=s}}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(e){let t=null;t=e.mode;e.headersList.set("sec-fetch-mode",t)}function appendRequestOriginHeader(e){let t=e.origin;if(e.responseTainting==="cors"||e.mode==="websocket"){if(t){e.headersList.append("origin",t)}}else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":t=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(e.origin&&urlHasHttpsScheme(e.origin)&&!urlHasHttpsScheme(requestCurrentURL(e))){t=null}break;case"same-origin":if(!sameOrigin(e,requestCurrentURL(e))){t=null}break;default:}if(t){e.headersList.append("origin",t)}}}function coarsenedSharedCurrentTime(e){return r.now()}function createOpaqueTimingInfo(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function makePolicyContainer(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function clonePolicyContainer(e){return{referrerPolicy:e.referrerPolicy}}function determineRequestsReferrer(e){const t=e.referrerPolicy;u(t);let A=null;if(e.referrer==="client"){const e=o();if(!e||e.origin==="null"){return"no-referrer"}A=new URL(e)}else if(e.referrer instanceof URL){A=e.referrer}let i=stripURLForReferrer(A);const n=stripURLForReferrer(A,true);if(i.toString().length>4096){i=n}const s=sameOrigin(e,i);const r=isURLPotentiallyTrustworthy(i)&&!isURLPotentiallyTrustworthy(e.url);switch(t){case"origin":return n!=null?n:stripURLForReferrer(A,true);case"unsafe-url":return i;case"same-origin":return s?n:"no-referrer";case"origin-when-cross-origin":return s?i:n;case"strict-origin-when-cross-origin":{const t=requestCurrentURL(e);if(sameOrigin(i,t)){return i}if(isURLPotentiallyTrustworthy(i)&&!isURLPotentiallyTrustworthy(t)){return"no-referrer"}return n}case"strict-origin":case"no-referrer-when-downgrade":default:return r?"no-referrer":n}}function stripURLForReferrer(e,t){u(e instanceof URL);if(e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"){return"no-referrer"}e.username="";e.password="";e.hash="";if(t){e.pathname="";e.search=""}return e}function isURLPotentiallyTrustworthy(e){if(!(e instanceof URL)){return false}if(e.href==="about:blank"||e.href==="about:srcdoc"){return true}if(e.protocol==="data:")return true;if(e.protocol==="file:")return true;return isOriginPotentiallyTrustworthy(e.origin);function isOriginPotentiallyTrustworthy(e){if(e==null||e==="null")return false;const t=new URL(e);if(t.protocol==="https:"||t.protocol==="wss:"){return true}if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(t.hostname)||(t.hostname==="localhost"||t.hostname.includes("localhost."))||t.hostname.endsWith(".localhost")){return true}return false}}function bytesMatch(e,t){if(g===undefined){return true}const A=parseMetadata(t);if(A==="no metadata"){return true}if(A.length===0){return true}const i=A.sort(((e,t)=>t.algo.localeCompare(e.algo)));const n=i[0].algo;const s=i.filter((e=>e.algo===n));for(const t of s){const A=t.algo;let i=t.hash;if(i.endsWith("==")){i=i.slice(0,-2)}let n=g.createHash(A).update(e).digest("base64");if(n.endsWith("==")){n=n.slice(0,-2)}if(n===i){return true}let s=g.createHash(A).update(e).digest("base64url");if(s.endsWith("==")){s=s.slice(0,-2)}if(s===i){return true}}return false}const d=/((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i;function parseMetadata(e){const t=[];let A=true;const i=g.getHashes();for(const n of e.split(" ")){A=false;const e=d.exec(n);if(e===null||e.groups===undefined){continue}const s=e.groups.algo;if(i.includes(s.toLowerCase())){t.push(e.groups)}}if(A===true){return"no metadata"}return t}function tryUpgradeRequestToAPotentiallyTrustworthyURL(e){}function sameOrigin(e,t){if(e.origin===t.origin&&e.origin==="null"){return true}if(e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port){return true}return false}function createDeferredPromise(){let e;let t;const A=new Promise(((A,i)=>{e=A;t=i}));return{promise:A,resolve:e,reject:t}}function isAborted(e){return e.controller.state==="aborted"}function isCancelled(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function normalizeMethod(e){return/^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(e)?e.toUpperCase():e}function serializeJavascriptValueToJSONString(e){const t=JSON.stringify(e);if(t===undefined){throw new TypeError("Value is not JSON serializable")}u(typeof t==="string");return t}const h=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function makeIterator(e,t,A){const i={index:0,kind:A,target:e};const n={next(){if(Object.getPrototypeOf(this)!==n){throw new TypeError(`'next' called on an object that does not implement interface ${t} Iterator.`)}const{index:e,kind:A,target:s}=i;const o=s();const r=o.length;if(e>=r){return{value:undefined,done:true}}const a=o[e];i.index=e+1;return iteratorResult(a,A)},[Symbol.toStringTag]:`${t} Iterator`};Object.setPrototypeOf(n,h);return Object.setPrototypeOf({},n)}function iteratorResult(e,t){let A;switch(t){case"key":{A=e[0];break}case"value":{A=e[1];break}case"key+value":{A=e;break}}return{value:A,done:false}}async function fullyReadBody(e,t,A){const i=t;const n=A;let s;try{s=e.stream.getReader()}catch(e){n(e);return}try{const e=await readAllBytes(s);i(e)}catch(e){n(e)}}let E=globalThis.ReadableStream;function isReadableStreamLike(e){if(!E){E=A(5356).ReadableStream}return e instanceof E||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee==="function"}const C=65535;function isomorphicDecode(e){if(e.lengthe+String.fromCharCode(t)),"")}function readableStreamClose(e){try{e.close()}catch(e){if(!e.message.includes("Controller is already closed")){throw e}}}function isomorphicEncode(e){for(let t=0;tObject.prototype.hasOwnProperty.call(e,t));e.exports={isAborted:isAborted,isCancelled:isCancelled,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:l,toUSVString:c,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:isValidHTTPToken,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:a,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,makeIterator:makeIterator,isValidHeaderName:isValidHeaderName,isValidHeaderValue:isValidHeaderValue,hasOwn:Q,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,isomorphicDecode:isomorphicDecode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes}},9342:(e,t,A)=>{const{types:i}=A(3837);const{hasOwn:n,toUSVString:s}=A(5422);const o={};o.converters={};o.util={};o.errors={};o.errors.exception=function(e){return new TypeError(`${e.header}: ${e.message}`)};o.errors.conversionFailed=function(e){const t=e.types.length===1?"":" one of";const A=`${e.argument} could not be converted to`+`${t}: ${e.types.join(", ")}.`;return o.errors.exception({header:e.prefix,message:A})};o.errors.invalidArgument=function(e){return o.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};o.brandCheck=function(e,t,A=undefined){if(A?.strict!==false&&!(e instanceof t)){throw new TypeError("Illegal invocation")}else{return e?.[Symbol.toStringTag]===t.prototype[Symbol.toStringTag]}};o.argumentLengthCheck=function({length:e},t,A){if(en){throw o.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${n}, got ${r}.`})}return r}if(!Number.isNaN(r)&&i.clamp===true){r=Math.min(Math.max(r,s),n);if(Math.floor(r)%2===0){r=Math.floor(r)}else{r=Math.ceil(r)}return r}if(Number.isNaN(r)||r===0&&Object.is(0,r)||r===Number.POSITIVE_INFINITY||r===Number.NEGATIVE_INFINITY){return 0}r=o.util.IntegerPart(r);r=r%Math.pow(2,t);if(A==="signed"&&r>=Math.pow(2,t)-1){return r-Math.pow(2,t)}return r};o.util.IntegerPart=function(e){const t=Math.floor(Math.abs(e));if(e<0){return-1*t}return t};o.sequenceConverter=function(e){return t=>{if(o.util.Type(t)!=="Object"){throw o.errors.exception({header:"Sequence",message:`Value of type ${o.util.Type(t)} is not an Object.`})}const A=t?.[Symbol.iterator]?.();const i=[];if(A===undefined||typeof A.next!=="function"){throw o.errors.exception({header:"Sequence",message:"Object is not an iterator."})}while(true){const{done:t,value:n}=A.next();if(t){break}i.push(e(n))}return i}};o.recordConverter=function(e,t){return A=>{if(o.util.Type(A)!=="Object"){throw o.errors.exception({header:"Record",message:`Value of type ${o.util.Type(A)} is not an Object.`})}const n={};if(!i.isProxy(A)){const i=Object.keys(A);for(const s of i){const i=e(s);const o=t(A[s]);n[i]=o}return n}const s=Reflect.ownKeys(A);for(const i of s){const s=Reflect.getOwnPropertyDescriptor(A,i);if(s?.enumerable){const s=e(i);const o=t(A[i]);n[s]=o}}return n}};o.interfaceConverter=function(e){return(t,A={})=>{if(A.strict!==false&&!(t instanceof e)){throw o.errors.exception({header:e.name,message:`Expected ${t} to be an instance of ${e.name}.`})}return t}};o.dictionaryConverter=function(e){return t=>{const A=o.util.Type(t);const i={};if(A==="Null"||A==="Undefined"){return i}else if(A!=="Object"){throw o.errors.exception({header:"Dictionary",message:`Expected ${t} to be one of: Null, Undefined, Object.`})}for(const A of e){const{key:e,defaultValue:s,required:r,converter:a}=A;if(r===true){if(!n(t,e)){throw o.errors.exception({header:"Dictionary",message:`Missing required key "${e}".`})}}let c=t[e];const l=n(A,"defaultValue");if(l&&c!==null){c=c??s}if(r||l||c!==undefined){c=a(c);if(A.allowedValues&&!A.allowedValues.includes(c)){throw o.errors.exception({header:"Dictionary",message:`${c} is not an accepted type. Expected one of ${A.allowedValues.join(", ")}.`})}i[e]=c}}return i}};o.nullableConverter=function(e){return t=>{if(t===null){return t}return e(t)}};o.converters.DOMString=function(e,t={}){if(e===null&&t.legacyNullToEmptyString){return""}if(typeof e==="symbol"){throw new TypeError("Could not convert argument of type symbol to string.")}return String(e)};o.converters.ByteString=function(e){const t=o.converters.DOMString(e);for(let e=0;e255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${e} has a value of ${A} which is greater than 255.`)}}return t};o.converters.USVString=s;o.converters.boolean=function(e){const t=Boolean(e);return t};o.converters.any=function(e){return e};o.converters["long long"]=function(e){const t=o.util.ConvertToInt(e,64,"signed");return t};o.converters["unsigned long long"]=function(e){const t=o.util.ConvertToInt(e,64,"unsigned");return t};o.converters["unsigned long"]=function(e){const t=o.util.ConvertToInt(e,32,"unsigned");return t};o.converters["unsigned short"]=function(e,t){const A=o.util.ConvertToInt(e,16,"unsigned",t);return A};o.converters.ArrayBuffer=function(e,t={}){if(o.util.Type(e)!=="Object"||!i.isAnyArrayBuffer(e)){throw o.errors.conversionFailed({prefix:`${e}`,argument:`${e}`,types:["ArrayBuffer"]})}if(t.allowShared===false&&i.isSharedArrayBuffer(e)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return e};o.converters.TypedArray=function(e,t,A={}){if(o.util.Type(e)!=="Object"||!i.isTypedArray(e)||e.constructor.name!==t.name){throw o.errors.conversionFailed({prefix:`${t.name}`,argument:`${e}`,types:[t.name]})}if(A.allowShared===false&&i.isSharedArrayBuffer(e.buffer)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return e};o.converters.DataView=function(e,t={}){if(o.util.Type(e)!=="Object"||!i.isDataView(e)){throw o.errors.exception({header:"DataView",message:"Object is not a DataView."})}if(t.allowShared===false&&i.isSharedArrayBuffer(e.buffer)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return e};o.converters.BufferSource=function(e,t={}){if(i.isAnyArrayBuffer(e)){return o.converters.ArrayBuffer(e,t)}if(i.isTypedArray(e)){return o.converters.TypedArray(e,e.constructor)}if(i.isDataView(e)){return o.converters.DataView(e,t)}throw new TypeError(`Could not convert ${e} to a BufferSource.`)};o.converters["sequence"]=o.sequenceConverter(o.converters.ByteString);o.converters["sequence>"]=o.sequenceConverter(o.converters["sequence"]);o.converters["record"]=o.recordConverter(o.converters.ByteString,o.converters.ByteString);e.exports={webidl:o}},9936:e=>{function getEncoding(e){if(!e){return"failure"}switch(e.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}e.exports={getEncoding:getEncoding}},962:(e,t,A)=>{const{staticPropertyDescriptors:i,readOperation:n,fireAProgressEvent:s}=A(2076);const{kState:o,kError:r,kResult:a,kEvents:c,kAborted:l}=A(1174);const{webidl:u}=A(9342);const{kEnumerableProperty:p}=A(9980);class FileReader extends EventTarget{constructor(){super();this[o]="empty";this[a]=null;this[r]=null;this[c]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(e){u.brandCheck(this,FileReader);u.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"});e=u.converters.Blob(e,{strict:false});n(this,e,"ArrayBuffer")}readAsBinaryString(e){u.brandCheck(this,FileReader);u.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"});e=u.converters.Blob(e,{strict:false});n(this,e,"BinaryString")}readAsText(e,t=undefined){u.brandCheck(this,FileReader);u.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"});e=u.converters.Blob(e,{strict:false});if(t!==undefined){t=u.converters.DOMString(t)}n(this,e,"Text",t)}readAsDataURL(e){u.brandCheck(this,FileReader);u.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"});e=u.converters.Blob(e,{strict:false});n(this,e,"DataURL")}abort(){if(this[o]==="empty"||this[o]==="done"){this[a]=null;return}if(this[o]==="loading"){this[o]="done";this[a]=null}this[l]=true;s("abort",this);if(this[o]!=="loading"){s("loadend",this)}}get readyState(){u.brandCheck(this,FileReader);switch(this[o]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){u.brandCheck(this,FileReader);return this[a]}get error(){u.brandCheck(this,FileReader);return this[r]}get onloadend(){u.brandCheck(this,FileReader);return this[c].loadend}set onloadend(e){u.brandCheck(this,FileReader);if(this[c].loadend){this.removeEventListener("loadend",this[c].loadend)}if(typeof e==="function"){this[c].loadend=e;this.addEventListener("loadend",e)}else{this[c].loadend=null}}get onerror(){u.brandCheck(this,FileReader);return this[c].error}set onerror(e){u.brandCheck(this,FileReader);if(this[c].error){this.removeEventListener("error",this[c].error)}if(typeof e==="function"){this[c].error=e;this.addEventListener("error",e)}else{this[c].error=null}}get onloadstart(){u.brandCheck(this,FileReader);return this[c].loadstart}set onloadstart(e){u.brandCheck(this,FileReader);if(this[c].loadstart){this.removeEventListener("loadstart",this[c].loadstart)}if(typeof e==="function"){this[c].loadstart=e;this.addEventListener("loadstart",e)}else{this[c].loadstart=null}}get onprogress(){u.brandCheck(this,FileReader);return this[c].progress}set onprogress(e){u.brandCheck(this,FileReader);if(this[c].progress){this.removeEventListener("progress",this[c].progress)}if(typeof e==="function"){this[c].progress=e;this.addEventListener("progress",e)}else{this[c].progress=null}}get onload(){u.brandCheck(this,FileReader);return this[c].load}set onload(e){u.brandCheck(this,FileReader);if(this[c].load){this.removeEventListener("load",this[c].load)}if(typeof e==="function"){this[c].load=e;this.addEventListener("load",e)}else{this[c].load=null}}get onabort(){u.brandCheck(this,FileReader);return this[c].abort}set onabort(e){u.brandCheck(this,FileReader);if(this[c].abort){this.removeEventListener("abort",this[c].abort)}if(typeof e==="function"){this[c].abort=e;this.addEventListener("abort",e)}else{this[c].abort=null}}}FileReader.EMPTY=FileReader.prototype.EMPTY=0;FileReader.LOADING=FileReader.prototype.LOADING=1;FileReader.DONE=FileReader.prototype.DONE=2;Object.defineProperties(FileReader.prototype,{EMPTY:i,LOADING:i,DONE:i,readAsArrayBuffer:p,readAsBinaryString:p,readAsText:p,readAsDataURL:p,abort:p,readyState:p,result:p,error:p,onloadstart:p,onprogress:p,onload:p,onabort:p,onerror:p,onloadend:p,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:i,LOADING:i,DONE:i});e.exports={FileReader:FileReader}},7011:(e,t,A)=>{const{webidl:i}=A(9342);const n=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(e,t={}){e=i.converters.DOMString(e);t=i.converters.ProgressEventInit(t??{});super(e,t);this[n]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){i.brandCheck(this,ProgressEvent);return this[n].lengthComputable}get loaded(){i.brandCheck(this,ProgressEvent);return this[n].loaded}get total(){i.brandCheck(this,ProgressEvent);return this[n].total}}i.converters.ProgressEventInit=i.dictionaryConverter([{key:"lengthComputable",converter:i.converters.boolean,defaultValue:false},{key:"loaded",converter:i.converters["unsigned long long"],defaultValue:0},{key:"total",converter:i.converters["unsigned long long"],defaultValue:0},{key:"bubbles",converter:i.converters.boolean,defaultValue:false},{key:"cancelable",converter:i.converters.boolean,defaultValue:false},{key:"composed",converter:i.converters.boolean,defaultValue:false}]);e.exports={ProgressEvent:ProgressEvent}},1174:e=>{e.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}},2076:(e,t,A)=>{const{kState:i,kError:n,kResult:s,kAborted:o,kLastProgressEventFired:r}=A(1174);const{ProgressEvent:a}=A(7011);const{getEncoding:c}=A(9936);const{DOMException:l}=A(9596);const{serializeAMimeType:u,parseMIMEType:p}=A(3513);const{types:g}=A(3837);const{StringDecoder:d}=A(1576);const{btoa:h}=A(4300);const E={enumerable:true,writable:false,configurable:false};function readOperation(e,t,A,a){if(e[i]==="loading"){throw new l("Invalid state","InvalidStateError")}e[i]="loading";e[s]=null;e[n]=null;const c=t.stream();const u=c.getReader();const p=[];let d=u.read();let h=true;(async()=>{while(!e[o]){try{const{done:c,value:l}=await d;if(h&&!e[o]){queueMicrotask((()=>{fireAProgressEvent("loadstart",e)}))}h=false;if(!c&&g.isUint8Array(l)){p.push(l);if((e[r]===undefined||Date.now()-e[r]>=50)&&!e[o]){e[r]=Date.now();queueMicrotask((()=>{fireAProgressEvent("progress",e)}))}d=u.read()}else if(c){queueMicrotask((()=>{e[i]="done";try{const i=packageData(p,A,t.type,a);if(e[o]){return}e[s]=i;fireAProgressEvent("load",e)}catch(t){e[n]=t;fireAProgressEvent("error",e)}if(e[i]!=="loading"){fireAProgressEvent("loadend",e)}}));break}}catch(t){if(e[o]){return}queueMicrotask((()=>{e[i]="done";e[n]=t;fireAProgressEvent("error",e);if(e[i]!=="loading"){fireAProgressEvent("loadend",e)}}));break}}})()}function fireAProgressEvent(e,t){const A=new a(e,{bubbles:false,cancelable:false});t.dispatchEvent(A)}function packageData(e,t,A,i){switch(t){case"DataURL":{let t="data:";const i=p(A||"application/octet-stream");if(i!=="failure"){t+=u(i)}t+=";base64,";const n=new d("latin1");for(const A of e){t+=h(n.write(A))}t+=h(n.end());return t}case"Text":{let t="failure";if(i){t=c(i)}if(t==="failure"&&A){const e=p(A);if(e!=="failure"){t=c(e.parameters.get("charset"))}}if(t==="failure"){t="UTF-8"}return decode(e,t)}case"ArrayBuffer":{const t=combineByteSequences(e);return t.buffer}case"BinaryString":{let t="";const A=new d("latin1");for(const i of e){t+=A.write(i)}t+=A.end();return t}}}function decode(e,t){const A=combineByteSequences(e);const i=BOMSniffing(A);let n=0;if(i!==null){t=i;n=i==="UTF-8"?3:2}const s=A.slice(n);return new TextDecoder(t).decode(s)}function BOMSniffing(e){const[t,A,i]=e;if(t===239&&A===187&&i===191){return"UTF-8"}else if(t===254&&A===255){return"UTF-16BE"}else if(t===255&&A===254){return"UTF-16LE"}return null}function combineByteSequences(e){const t=e.reduce(((e,t)=>e+t.byteLength),0);let A=0;return e.reduce(((e,t)=>{e.set(t,A);A+=t.byteLength;return e}),new Uint8Array(t))}e.exports={staticPropertyDescriptors:E,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},4339:(e,t,A)=>{const i=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:n}=A(5143);const s=A(2584);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new s)}function setGlobalDispatcher(e){if(!e||typeof e.dispatch!=="function"){throw new n("Argument agent must implement Agent")}Object.defineProperty(globalThis,i,{value:e,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[i]}e.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},3646:e=>{e.exports=class DecoratorHandler{constructor(e){this.handler=e}onConnect(...e){return this.handler.onConnect(...e)}onError(...e){return this.handler.onError(...e)}onUpgrade(...e){return this.handler.onUpgrade(...e)}onHeaders(...e){return this.handler.onHeaders(...e)}onData(...e){return this.handler.onData(...e)}onComplete(...e){return this.handler.onComplete(...e)}onBodySent(...e){return this.handler.onBodySent(...e)}}},5838:(e,t,A)=>{const i=A(9980);const{kBodyUsed:n}=A(7282);const s=A(9491);const{InvalidArgumentError:o}=A(5143);const r=A(2361);const a=[300,301,302,303,307,308];const c=Symbol("body");class BodyAsyncIterable{constructor(e){this[c]=e;this[n]=false}async*[Symbol.asyncIterator](){s(!this[n],"disturbed");this[n]=true;yield*this[c]}}class RedirectHandler{constructor(e,t,A,a){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new o("maxRedirections must be a positive number")}i.validateHandler(a,A.method,A.upgrade);this.dispatch=e;this.location=null;this.abort=null;this.opts={...A,maxRedirections:0};this.maxRedirections=t;this.handler=a;this.history=[];if(i.isStream(this.opts.body)){if(i.bodyLength(this.opts.body)===0){this.opts.body.on("data",(function(){s(false)}))}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[n]=false;r.prototype.on.call(this.opts.body,"data",(function(){this[n]=true}))}}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function"){this.opts.body=new BodyAsyncIterable(this.opts.body)}else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&i.isIterable(this.opts.body)){this.opts.body=new BodyAsyncIterable(this.opts.body)}}onConnect(e){this.abort=e;this.handler.onConnect(e,{history:this.history})}onUpgrade(e,t,A){this.handler.onUpgrade(e,t,A)}onError(e){this.handler.onError(e)}onHeaders(e,t,A,n){this.location=this.history.length>=this.maxRedirections||i.isDisturbed(this.opts.body)?null:parseLocation(e,t);if(this.opts.origin){this.history.push(new URL(this.opts.path,this.opts.origin))}if(!this.location){return this.handler.onHeaders(e,t,A,n)}const{origin:s,pathname:o,search:r}=i.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const a=r?`${o}${r}`:o;this.opts.headers=cleanRequestHeaders(this.opts.headers,e===303,this.opts.origin!==s);this.opts.path=a;this.opts.origin=s;this.opts.maxRedirections=0;this.opts.query=null;if(e===303&&this.opts.method!=="HEAD"){this.opts.method="GET";this.opts.body=null}}onData(e){if(this.location){}else{return this.handler.onData(e)}}onComplete(e){if(this.location){this.location=null;this.abort=null;this.dispatch(this.opts,this)}else{this.handler.onComplete(e)}}onBodySent(e){if(this.handler.onBodySent){this.handler.onBodySent(e)}}}function parseLocation(e,t){if(a.indexOf(e)===-1){return null}for(let e=0;e{const i=A(5838);function createRedirectInterceptor({maxRedirections:e}){return t=>function Intercept(A,n){const{maxRedirections:s=e}=A;if(!s){return t(A,n)}const o=new i(t,s,A,n);A={...A,maxRedirections:0};return t(A,o)}}e.exports=createRedirectInterceptor},5082:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t.SPECIAL_HEADERS=t.HEADER_STATE=t.MINOR=t.MAJOR=t.CONNECTION_TOKEN_CHARS=t.HEADER_CHARS=t.TOKEN=t.STRICT_TOKEN=t.HEX=t.URL_CHAR=t.STRICT_URL_CHAR=t.USERINFO_CHARS=t.MARK=t.ALPHANUM=t.NUM=t.HEX_MAP=t.NUM_MAP=t.ALPHA=t.FINISH=t.H_METHOD_MAP=t.METHOD_MAP=t.METHODS_RTSP=t.METHODS_ICE=t.METHODS_HTTP=t.METHODS=t.LENIENT_FLAGS=t.FLAGS=t.TYPE=t.ERROR=void 0;const i=A(8977);var n;(function(e){e[e["OK"]=0]="OK";e[e["INTERNAL"]=1]="INTERNAL";e[e["STRICT"]=2]="STRICT";e[e["LF_EXPECTED"]=3]="LF_EXPECTED";e[e["UNEXPECTED_CONTENT_LENGTH"]=4]="UNEXPECTED_CONTENT_LENGTH";e[e["CLOSED_CONNECTION"]=5]="CLOSED_CONNECTION";e[e["INVALID_METHOD"]=6]="INVALID_METHOD";e[e["INVALID_URL"]=7]="INVALID_URL";e[e["INVALID_CONSTANT"]=8]="INVALID_CONSTANT";e[e["INVALID_VERSION"]=9]="INVALID_VERSION";e[e["INVALID_HEADER_TOKEN"]=10]="INVALID_HEADER_TOKEN";e[e["INVALID_CONTENT_LENGTH"]=11]="INVALID_CONTENT_LENGTH";e[e["INVALID_CHUNK_SIZE"]=12]="INVALID_CHUNK_SIZE";e[e["INVALID_STATUS"]=13]="INVALID_STATUS";e[e["INVALID_EOF_STATE"]=14]="INVALID_EOF_STATE";e[e["INVALID_TRANSFER_ENCODING"]=15]="INVALID_TRANSFER_ENCODING";e[e["CB_MESSAGE_BEGIN"]=16]="CB_MESSAGE_BEGIN";e[e["CB_HEADERS_COMPLETE"]=17]="CB_HEADERS_COMPLETE";e[e["CB_MESSAGE_COMPLETE"]=18]="CB_MESSAGE_COMPLETE";e[e["CB_CHUNK_HEADER"]=19]="CB_CHUNK_HEADER";e[e["CB_CHUNK_COMPLETE"]=20]="CB_CHUNK_COMPLETE";e[e["PAUSED"]=21]="PAUSED";e[e["PAUSED_UPGRADE"]=22]="PAUSED_UPGRADE";e[e["PAUSED_H2_UPGRADE"]=23]="PAUSED_H2_UPGRADE";e[e["USER"]=24]="USER"})(n=t.ERROR||(t.ERROR={}));var s;(function(e){e[e["BOTH"]=0]="BOTH";e[e["REQUEST"]=1]="REQUEST";e[e["RESPONSE"]=2]="RESPONSE"})(s=t.TYPE||(t.TYPE={}));var o;(function(e){e[e["CONNECTION_KEEP_ALIVE"]=1]="CONNECTION_KEEP_ALIVE";e[e["CONNECTION_CLOSE"]=2]="CONNECTION_CLOSE";e[e["CONNECTION_UPGRADE"]=4]="CONNECTION_UPGRADE";e[e["CHUNKED"]=8]="CHUNKED";e[e["UPGRADE"]=16]="UPGRADE";e[e["CONTENT_LENGTH"]=32]="CONTENT_LENGTH";e[e["SKIPBODY"]=64]="SKIPBODY";e[e["TRAILING"]=128]="TRAILING";e[e["TRANSFER_ENCODING"]=512]="TRANSFER_ENCODING"})(o=t.FLAGS||(t.FLAGS={}));var r;(function(e){e[e["HEADERS"]=1]="HEADERS";e[e["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";e[e["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(r=t.LENIENT_FLAGS||(t.LENIENT_FLAGS={}));var a;(function(e){e[e["DELETE"]=0]="DELETE";e[e["GET"]=1]="GET";e[e["HEAD"]=2]="HEAD";e[e["POST"]=3]="POST";e[e["PUT"]=4]="PUT";e[e["CONNECT"]=5]="CONNECT";e[e["OPTIONS"]=6]="OPTIONS";e[e["TRACE"]=7]="TRACE";e[e["COPY"]=8]="COPY";e[e["LOCK"]=9]="LOCK";e[e["MKCOL"]=10]="MKCOL";e[e["MOVE"]=11]="MOVE";e[e["PROPFIND"]=12]="PROPFIND";e[e["PROPPATCH"]=13]="PROPPATCH";e[e["SEARCH"]=14]="SEARCH";e[e["UNLOCK"]=15]="UNLOCK";e[e["BIND"]=16]="BIND";e[e["REBIND"]=17]="REBIND";e[e["UNBIND"]=18]="UNBIND";e[e["ACL"]=19]="ACL";e[e["REPORT"]=20]="REPORT";e[e["MKACTIVITY"]=21]="MKACTIVITY";e[e["CHECKOUT"]=22]="CHECKOUT";e[e["MERGE"]=23]="MERGE";e[e["M-SEARCH"]=24]="M-SEARCH";e[e["NOTIFY"]=25]="NOTIFY";e[e["SUBSCRIBE"]=26]="SUBSCRIBE";e[e["UNSUBSCRIBE"]=27]="UNSUBSCRIBE";e[e["PATCH"]=28]="PATCH";e[e["PURGE"]=29]="PURGE";e[e["MKCALENDAR"]=30]="MKCALENDAR";e[e["LINK"]=31]="LINK";e[e["UNLINK"]=32]="UNLINK";e[e["SOURCE"]=33]="SOURCE";e[e["PRI"]=34]="PRI";e[e["DESCRIBE"]=35]="DESCRIBE";e[e["ANNOUNCE"]=36]="ANNOUNCE";e[e["SETUP"]=37]="SETUP";e[e["PLAY"]=38]="PLAY";e[e["PAUSE"]=39]="PAUSE";e[e["TEARDOWN"]=40]="TEARDOWN";e[e["GET_PARAMETER"]=41]="GET_PARAMETER";e[e["SET_PARAMETER"]=42]="SET_PARAMETER";e[e["REDIRECT"]=43]="REDIRECT";e[e["RECORD"]=44]="RECORD";e[e["FLUSH"]=45]="FLUSH"})(a=t.METHODS||(t.METHODS={}));t.METHODS_HTTP=[a.DELETE,a.GET,a.HEAD,a.POST,a.PUT,a.CONNECT,a.OPTIONS,a.TRACE,a.COPY,a.LOCK,a.MKCOL,a.MOVE,a.PROPFIND,a.PROPPATCH,a.SEARCH,a.UNLOCK,a.BIND,a.REBIND,a.UNBIND,a.ACL,a.REPORT,a.MKACTIVITY,a.CHECKOUT,a.MERGE,a["M-SEARCH"],a.NOTIFY,a.SUBSCRIBE,a.UNSUBSCRIBE,a.PATCH,a.PURGE,a.MKCALENDAR,a.LINK,a.UNLINK,a.PRI,a.SOURCE];t.METHODS_ICE=[a.SOURCE];t.METHODS_RTSP=[a.OPTIONS,a.DESCRIBE,a.ANNOUNCE,a.SETUP,a.PLAY,a.PAUSE,a.TEARDOWN,a.GET_PARAMETER,a.SET_PARAMETER,a.REDIRECT,a.RECORD,a.FLUSH,a.GET,a.POST];t.METHOD_MAP=i.enumToMap(a);t.H_METHOD_MAP={};Object.keys(t.METHOD_MAP).forEach((e=>{if(/^H/.test(e)){t.H_METHOD_MAP[e]=t.METHOD_MAP[e]}}));var c;(function(e){e[e["SAFE"]=0]="SAFE";e[e["SAFE_WITH_CB"]=1]="SAFE_WITH_CB";e[e["UNSAFE"]=2]="UNSAFE"})(c=t.FINISH||(t.FINISH={}));t.ALPHA=[];for(let e="A".charCodeAt(0);e<="Z".charCodeAt(0);e++){t.ALPHA.push(String.fromCharCode(e));t.ALPHA.push(String.fromCharCode(e+32))}t.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};t.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};t.NUM=["0","1","2","3","4","5","6","7","8","9"];t.ALPHANUM=t.ALPHA.concat(t.NUM);t.MARK=["-","_",".","!","~","*","'","(",")"];t.USERINFO_CHARS=t.ALPHANUM.concat(t.MARK).concat(["%",";",":","&","=","+","$",","]);t.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(t.ALPHANUM);t.URL_CHAR=t.STRICT_URL_CHAR.concat(["\t","\f"]);for(let e=128;e<=255;e++){t.URL_CHAR.push(e)}t.HEX=t.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);t.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(t.ALPHANUM);t.TOKEN=t.STRICT_TOKEN.concat([" "]);t.HEADER_CHARS=["\t"];for(let e=32;e<=255;e++){if(e!==127){t.HEADER_CHARS.push(e)}}t.CONNECTION_TOKEN_CHARS=t.HEADER_CHARS.filter((e=>e!==44));t.MAJOR=t.NUM_MAP;t.MINOR=t.MAJOR;var l;(function(e){e[e["GENERAL"]=0]="GENERAL";e[e["CONNECTION"]=1]="CONNECTION";e[e["CONTENT_LENGTH"]=2]="CONTENT_LENGTH";e[e["TRANSFER_ENCODING"]=3]="TRANSFER_ENCODING";e[e["UPGRADE"]=4]="UPGRADE";e[e["CONNECTION_KEEP_ALIVE"]=5]="CONNECTION_KEEP_ALIVE";e[e["CONNECTION_CLOSE"]=6]="CONNECTION_CLOSE";e[e["CONNECTION_UPGRADE"]=7]="CONNECTION_UPGRADE";e[e["TRANSFER_ENCODING_CHUNKED"]=8]="TRANSFER_ENCODING_CHUNKED"})(l=t.HEADER_STATE||(t.HEADER_STATE={}));t.SPECIAL_HEADERS={connection:l.CONNECTION,"content-length":l.CONTENT_LENGTH,"proxy-connection":l.CONNECTION,"transfer-encoding":l.TRANSFER_ENCODING,upgrade:l.UPGRADE}},3720:e=>{e.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="},7410:e=>{e.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="},8977:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.enumToMap=void 0;function enumToMap(e){const t={};Object.keys(e).forEach((A=>{const i=e[A];if(typeof i==="number"){t[A]=i}}));return t}t.enumToMap=enumToMap},902:(e,t,A)=>{const{kClients:i}=A(7282);const n=A(2584);const{kAgent:s,kMockAgentSet:o,kMockAgentGet:r,kDispatches:a,kIsMockActive:c,kNetConnect:l,kGetNetConnect:u,kOptions:p,kFactory:g}=A(8745);const d=A(8015);const h=A(9928);const{matchValue:E,buildMockOptions:C}=A(4307);const{InvalidArgumentError:Q,UndiciError:f}=A(5143);const B=A(3678);const I=A(3655);const m=A(7580);class FakeWeakRef{constructor(e){this.value=e}deref(){return this.value}}class MockAgent extends B{constructor(e){super(e);this[l]=true;this[c]=true;if(e&&e.agent&&typeof e.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}const t=e&&e.agent?e.agent:new n(e);this[s]=t;this[i]=t[i];this[p]=C(e)}get(e){let t=this[r](e);if(!t){t=this[g](e);this[o](e,t)}return t}dispatch(e,t){this.get(e.origin);return this[s].dispatch(e,t)}async close(){await this[s].close();this[i].clear()}deactivate(){this[c]=false}activate(){this[c]=true}enableNetConnect(e){if(typeof e==="string"||typeof e==="function"||e instanceof RegExp){if(Array.isArray(this[l])){this[l].push(e)}else{this[l]=[e]}}else if(typeof e==="undefined"){this[l]=true}else{throw new Q("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[l]=false}get isMockActive(){return this[c]}[o](e,t){this[i].set(e,new FakeWeakRef(t))}[g](e){const t=Object.assign({agent:this},this[p]);return this[p]&&this[p].connections===1?new d(e,t):new h(e,t)}[r](e){const t=this[i].get(e);if(t){return t.deref()}if(typeof e!=="string"){const t=this[g]("http://localhost:9999");this[o](e,t);return t}for(const[t,A]of Array.from(this[i])){const i=A.deref();if(i&&typeof t!=="string"&&E(t,e)){const t=this[g](e);this[o](e,t);t[a]=i[a];return t}}}[u](){return this[l]}pendingInterceptors(){const e=this[i];return Array.from(e.entries()).flatMap((([e,t])=>t.deref()[a].map((t=>({...t,origin:e}))))).filter((({pending:e})=>e))}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new m}={}){const t=this.pendingInterceptors();if(t.length===0){return}const A=new I("interceptor","interceptors").pluralize(t.length);throw new f(`\n${A.count} ${A.noun} ${A.is} pending:\n\n${e.format(t)}\n`.trim())}}e.exports=MockAgent},8015:(e,t,A)=>{const{promisify:i}=A(3837);const n=A(2520);const{buildMockDispatch:s}=A(4307);const{kDispatches:o,kMockAgent:r,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:u,kConnected:p}=A(8745);const{MockInterceptor:g}=A(5613);const d=A(7282);const{InvalidArgumentError:h}=A(5143);class MockClient extends n{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new h("Argument opts.agent must implement Agent")}this[r]=t.agent;this[l]=e;this[o]=[];this[p]=1;this[u]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=s.call(this);this.close=this[a]}get[d.kConnected](){return this[p]}intercept(e){return new g(e,this[o])}async[a](){await i(this[c])();this[p]=0;this[r][d.kClients].delete(this[l])}}e.exports=MockClient},7526:(e,t,A)=>{const{UndiciError:i}=A(5143);class MockNotMatchedError extends i{constructor(e){super(e);Error.captureStackTrace(this,MockNotMatchedError);this.name="MockNotMatchedError";this.message=e||"The request does not match any registered mock dispatches";this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}}e.exports={MockNotMatchedError:MockNotMatchedError}},5613:(e,t,A)=>{const{getResponseData:i,buildKey:n,addMockDispatch:s}=A(4307);const{kDispatches:o,kDispatchKey:r,kDefaultHeaders:a,kDefaultTrailers:c,kContentLength:l,kMockDispatch:u}=A(8745);const{InvalidArgumentError:p}=A(5143);const{buildURL:g}=A(9980);class MockScope{constructor(e){this[u]=e}delay(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new p("waitInMs must be a valid integer > 0")}this[u].delay=e;return this}persist(){this[u].persist=true;return this}times(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new p("repeatTimes must be a valid integer > 0")}this[u].times=e;return this}}class MockInterceptor{constructor(e,t){if(typeof e!=="object"){throw new p("opts must be an object")}if(typeof e.path==="undefined"){throw new p("opts.path must be defined")}if(typeof e.method==="undefined"){e.method="GET"}if(typeof e.path==="string"){if(e.query){e.path=g(e.path,e.query)}else{const t=new URL(e.path,"data://");e.path=t.pathname+t.search}}if(typeof e.method==="string"){e.method=e.method.toUpperCase()}this[r]=n(e);this[o]=t;this[a]={};this[c]={};this[l]=false}createMockScopeDispatchData(e,t,A={}){const n=i(t);const s=this[l]?{"content-length":n.length}:{};const o={...this[a],...s,...A.headers};const r={...this[c],...A.trailers};return{statusCode:e,data:t,headers:o,trailers:r}}validateReplyParameters(e,t,A){if(typeof e==="undefined"){throw new p("statusCode must be defined")}if(typeof t==="undefined"){throw new p("data must be defined")}if(typeof A!=="object"){throw new p("responseOptions must be an object")}}reply(e){if(typeof e==="function"){const wrappedDefaultsCallback=t=>{const A=e(t);if(typeof A!=="object"){throw new p("reply options callback must return an object")}const{statusCode:i,data:n="",responseOptions:s={}}=A;this.validateReplyParameters(i,n,s);return{...this.createMockScopeDispatchData(i,n,s)}};const t=s(this[o],this[r],wrappedDefaultsCallback);return new MockScope(t)}const[t,A="",i={}]=[...arguments];this.validateReplyParameters(t,A,i);const n=this.createMockScopeDispatchData(t,A,i);const a=s(this[o],this[r],n);return new MockScope(a)}replyWithError(e){if(typeof e==="undefined"){throw new p("error must be defined")}const t=s(this[o],this[r],{error:e});return new MockScope(t)}defaultReplyHeaders(e){if(typeof e==="undefined"){throw new p("headers must be defined")}this[a]=e;return this}defaultReplyTrailers(e){if(typeof e==="undefined"){throw new p("trailers must be defined")}this[c]=e;return this}replyContentLength(){this[l]=true;return this}}e.exports.MockInterceptor=MockInterceptor;e.exports.MockScope=MockScope},9928:(e,t,A)=>{const{promisify:i}=A(3837);const n=A(8429);const{buildMockDispatch:s}=A(4307);const{kDispatches:o,kMockAgent:r,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:u,kConnected:p}=A(8745);const{MockInterceptor:g}=A(5613);const d=A(7282);const{InvalidArgumentError:h}=A(5143);class MockPool extends n{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new h("Argument opts.agent must implement Agent")}this[r]=t.agent;this[l]=e;this[o]=[];this[p]=1;this[u]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=s.call(this);this.close=this[a]}get[d.kConnected](){return this[p]}intercept(e){return new g(e,this[o])}async[a](){await i(this[c])();this[p]=0;this[r][d.kClients].delete(this[l])}}e.exports=MockPool},8745:e=>{e.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}},4307:(e,t,A)=>{const{MockNotMatchedError:i}=A(7526);const{kDispatches:n,kMockAgent:s,kOriginalDispatch:o,kOrigin:r,kGetNetConnect:a}=A(8745);const{buildURL:c,nop:l}=A(9980);const{STATUS_CODES:u}=A(3685);const{types:{isPromise:p}}=A(3837);function matchValue(e,t){if(typeof e==="string"){return e===t}if(e instanceof RegExp){return e.test(t)}if(typeof e==="function"){return e(t)===true}return false}function lowerCaseEntries(e){return Object.fromEntries(Object.entries(e).map((([e,t])=>[e.toLocaleLowerCase(),t])))}function getHeaderByName(e,t){if(Array.isArray(e)){for(let A=0;A!e)).filter((({path:e})=>matchValue(safeUrl(e),n)));if(s.length===0){throw new i(`Mock dispatch not matched for path '${n}'`)}s=s.filter((({method:e})=>matchValue(e,t.method)));if(s.length===0){throw new i(`Mock dispatch not matched for method '${t.method}'`)}s=s.filter((({body:e})=>typeof e!=="undefined"?matchValue(e,t.body):true));if(s.length===0){throw new i(`Mock dispatch not matched for body '${t.body}'`)}s=s.filter((e=>matchHeaders(e,t.headers)));if(s.length===0){throw new i(`Mock dispatch not matched for headers '${typeof t.headers==="object"?JSON.stringify(t.headers):t.headers}'`)}return s[0]}function addMockDispatch(e,t,A){const i={timesInvoked:0,times:1,persist:false,consumed:false};const n=typeof A==="function"?{callback:A}:{...A};const s={...i,...t,pending:true,data:{error:null,...n}};e.push(s);return s}function deleteMockDispatch(e,t){const A=e.findIndex((e=>{if(!e.consumed){return false}return matchKey(e,t)}));if(A!==-1){e.splice(A,1)}}function buildKey(e){const{path:t,method:A,body:i,headers:n,query:s}=e;return{path:t,method:A,body:i,headers:n,query:s}}function generateKeyValues(e){return Object.entries(e).reduce(((e,[t,A])=>[...e,Buffer.from(`${t}`),Array.isArray(A)?A.map((e=>Buffer.from(`${e}`))):Buffer.from(`${A}`)]),[])}function getStatusText(e){return u[e]||"unknown"}async function getResponse(e){const t=[];for await(const A of e){t.push(A)}return Buffer.concat(t).toString("utf8")}function mockDispatch(e,t){const A=buildKey(e);const i=getMockDispatch(this[n],A);i.timesInvoked++;if(i.data.callback){i.data={...i.data,...i.data.callback(e)}}const{data:{statusCode:s,data:o,headers:r,trailers:a,error:c},delay:u,persist:g}=i;const{timesInvoked:d,times:h}=i;i.consumed=!g&&d>=h;i.pending=d0){setTimeout((()=>{handleReply(this[n])}),u)}else{handleReply(this[n])}function handleReply(i,n=o){const c=Array.isArray(e.headers)?buildHeadersFromArray(e.headers):e.headers;const u=typeof n==="function"?n({...e,headers:c}):n;if(p(u)){u.then((e=>handleReply(i,e)));return}const g=getResponseData(u);const d=generateKeyValues(r);const h=generateKeyValues(a);t.abort=l;t.onHeaders(s,d,resume,getStatusText(s));t.onData(Buffer.from(g));t.onComplete(h);deleteMockDispatch(i,A)}function resume(){}return true}function buildMockDispatch(){const e=this[s];const t=this[r];const A=this[o];return function dispatch(n,s){if(e.isMockActive){try{mockDispatch.call(this,n,s)}catch(o){if(o instanceof i){const r=e[a]();if(r===false){throw new i(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`)}if(checkNetConnect(r,t)){A.call(this,n,s)}else{throw new i(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}}else{throw o}}}else{A.call(this,n,s)}}}function checkNetConnect(e,t){const A=new URL(t);if(e===true){return true}else if(Array.isArray(e)&&e.some((e=>matchValue(e,A.host)))){return true}return false}function buildMockOptions(e){if(e){const{agent:t,...A}=e;return A}}e.exports={getResponseData:getResponseData,getMockDispatch:getMockDispatch,addMockDispatch:addMockDispatch,deleteMockDispatch:deleteMockDispatch,buildKey:buildKey,generateKeyValues:generateKeyValues,matchValue:matchValue,getResponse:getResponse,getStatusText:getStatusText,mockDispatch:mockDispatch,buildMockDispatch:buildMockDispatch,checkNetConnect:checkNetConnect,buildMockOptions:buildMockOptions,getHeaderByName:getHeaderByName}},7580:(e,t,A)=>{const{Transform:i}=A(2781);const{Console:n}=A(6206);e.exports=class PendingInterceptorsFormatter{constructor({disableColors:e}={}){this.transform=new i({transform(e,t,A){A(null,e)}});this.logger=new n({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){const t=e.map((({method:e,path:t,data:{statusCode:A},persist:i,times:n,timesInvoked:s,origin:o})=>({Method:e,Origin:o,Path:t,"Status code":A,Persistent:i?"✅":"❌",Invocations:s,Remaining:i?Infinity:n-s})));this.logger.table(t);return this.transform.read().toString()}}},3655:e=>{const t={pronoun:"it",is:"is",was:"was",this:"this"};const A={pronoun:"they",is:"are",was:"were",this:"these"};e.exports=class Pluralizer{constructor(e,t){this.singular=e;this.plural=t}pluralize(e){const i=e===1;const n=i?t:A;const s=i?this.singular:this.plural;return{...n,count:e,noun:s}}}},3946:e=>{const t=2048;const A=t-1;class FixedCircularBuffer{constructor(){this.bottom=0;this.top=0;this.list=new Array(t);this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&A)===this.bottom}push(e){this.list[this.top]=e;this.top=this.top+1&A}shift(){const e=this.list[this.bottom];if(e===undefined)return null;this.list[this.bottom]=undefined;this.bottom=this.bottom+1&A;return e}}e.exports=class FixedQueue{constructor(){this.head=this.tail=new FixedCircularBuffer}isEmpty(){return this.head.isEmpty()}push(e){if(this.head.isFull()){this.head=this.head.next=new FixedCircularBuffer}this.head.push(e)}shift(){const e=this.tail;const t=e.shift();if(e.isEmpty()&&e.next!==null){this.tail=e.next}return t}}},8234:(e,t,A)=>{const i=A(7958);const n=A(3946);const{kConnected:s,kSize:o,kRunning:r,kPending:a,kQueued:c,kBusy:l,kFree:u,kUrl:p,kClose:g,kDestroy:d,kDispatch:h}=A(7282);const E=A(2103);const C=Symbol("clients");const Q=Symbol("needDrain");const f=Symbol("queue");const B=Symbol("closed resolve");const I=Symbol("onDrain");const m=Symbol("onConnect");const b=Symbol("onDisconnect");const y=Symbol("onConnectionError");const w=Symbol("get dispatcher");const v=Symbol("add client");const R=Symbol("remove client");const x=Symbol("stats");class PoolBase extends i{constructor(){super();this[f]=new n;this[C]=[];this[c]=0;const e=this;this[I]=function onDrain(t,A){const i=e[f];let n=false;while(!n){const t=i.shift();if(!t){break}e[c]--;n=!this.dispatch(t.opts,t.handler)}this[Q]=n;if(!this[Q]&&e[Q]){e[Q]=false;e.emit("drain",t,[e,...A])}if(e[B]&&i.isEmpty()){Promise.all(e[C].map((e=>e.close()))).then(e[B])}};this[m]=(t,A)=>{e.emit("connect",t,[e,...A])};this[b]=(t,A,i)=>{e.emit("disconnect",t,[e,...A],i)};this[y]=(t,A,i)=>{e.emit("connectionError",t,[e,...A],i)};this[x]=new E(this)}get[l](){return this[Q]}get[s](){return this[C].filter((e=>e[s])).length}get[u](){return this[C].filter((e=>e[s]&&!e[Q])).length}get[a](){let e=this[c];for(const{[a]:t}of this[C]){e+=t}return e}get[r](){let e=0;for(const{[r]:t}of this[C]){e+=t}return e}get[o](){let e=this[c];for(const{[o]:t}of this[C]){e+=t}return e}get stats(){return this[x]}async[g](){if(this[f].isEmpty()){return Promise.all(this[C].map((e=>e.close())))}else{return new Promise((e=>{this[B]=e}))}}async[d](e){while(true){const t=this[f].shift();if(!t){break}t.handler.onError(e)}return Promise.all(this[C].map((t=>t.destroy(e))))}[h](e,t){const A=this[w]();if(!A){this[Q]=true;this[f].push({opts:e,handler:t});this[c]++}else if(!A.dispatch(e,t)){A[Q]=true;this[Q]=!this[w]()}return!this[Q]}[v](e){e.on("drain",this[I]).on("connect",this[m]).on("disconnect",this[b]).on("connectionError",this[y]);this[C].push(e);if(this[Q]){process.nextTick((()=>{if(this[Q]){this[I](e[p],[this,e])}}))}return this}[R](e){e.close((()=>{const t=this[C].indexOf(e);if(t!==-1){this[C].splice(t,1)}}));this[Q]=this[C].some((e=>!e[Q]&&e.closed!==true&&e.destroyed!==true))}}e.exports={PoolBase:PoolBase,kClients:C,kNeedDrain:Q,kAddClient:v,kRemoveClient:R,kGetDispatcher:w}},2103:(e,t,A)=>{const{kFree:i,kConnected:n,kPending:s,kQueued:o,kRunning:r,kSize:a}=A(7282);const c=Symbol("pool");class PoolStats{constructor(e){this[c]=e}get connected(){return this[c][n]}get free(){return this[c][i]}get pending(){return this[c][s]}get queued(){return this[c][o]}get running(){return this[c][r]}get size(){return this[c][a]}}e.exports=PoolStats},8429:(e,t,A)=>{const{PoolBase:i,kClients:n,kNeedDrain:s,kAddClient:o,kGetDispatcher:r}=A(8234);const a=A(2520);const{InvalidArgumentError:c}=A(5143);const l=A(9980);const{kUrl:u,kInterceptors:p}=A(7282);const g=A(7899);const d=Symbol("options");const h=Symbol("connections");const E=Symbol("factory");function defaultFactory(e,t){return new a(e,t)}class Pool extends i{constructor(e,{connections:t,factory:A=defaultFactory,connect:i,connectTimeout:n,tls:s,maxCachedSessions:o,socketPath:r,autoSelectFamily:a,autoSelectFamilyAttemptTimeout:C,allowH2:Q,...f}={}){super();if(t!=null&&(!Number.isFinite(t)||t<0)){throw new c("invalid connections")}if(typeof A!=="function"){throw new c("factory must be a function.")}if(i!=null&&typeof i!=="function"&&typeof i!=="object"){throw new c("connect must be a function or an object")}if(typeof i!=="function"){i=g({...s,maxCachedSessions:o,allowH2:Q,socketPath:r,timeout:n,...l.nodeHasAutoSelectFamily&&a?{autoSelectFamily:a,autoSelectFamilyAttemptTimeout:C}:undefined,...i})}this[p]=f.interceptors&&f.interceptors.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[];this[h]=t||null;this[u]=l.parseOrigin(e);this[d]={...l.deepClone(f),connect:i,allowH2:Q};this[d].interceptors=f.interceptors?{...f.interceptors}:undefined;this[E]=A}[r](){let e=this[n].find((e=>!e[s]));if(e){return e}if(!this[h]||this[n].length{const{kProxy:i,kClose:n,kDestroy:s,kInterceptors:o}=A(7282);const{URL:r}=A(7310);const a=A(2584);const c=A(8429);const l=A(7958);const{InvalidArgumentError:u,RequestAbortedError:p}=A(5143);const g=A(7899);const d=Symbol("proxy agent");const h=Symbol("proxy client");const E=Symbol("proxy headers");const C=Symbol("request tls settings");const Q=Symbol("proxy tls settings");const f=Symbol("connect endpoint function");function defaultProtocolPort(e){return e==="https:"?443:80}function buildProxyOptions(e){if(typeof e==="string"){e={uri:e}}if(!e||!e.uri){throw new u("Proxy opts.uri is mandatory")}return{uri:e.uri,protocol:e.protocol||"https"}}function defaultFactory(e,t){return new c(e,t)}class ProxyAgent extends l{constructor(e){super(e);this[i]=buildProxyOptions(e);this[d]=new a(e);this[o]=e.interceptors&&e.interceptors.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[];if(typeof e==="string"){e={uri:e}}if(!e||!e.uri){throw new u("Proxy opts.uri is mandatory")}const{clientFactory:t=defaultFactory}=e;if(typeof t!=="function"){throw new u("Proxy opts.clientFactory must be a function.")}this[C]=e.requestTls;this[Q]=e.proxyTls;this[E]=e.headers||{};if(e.auth&&e.token){throw new u("opts.auth cannot be used in combination with opts.token")}else if(e.auth){this[E]["proxy-authorization"]=`Basic ${e.auth}`}else if(e.token){this[E]["proxy-authorization"]=e.token}const A=new r(e.uri);const{origin:n,port:s,host:c}=A;const l=g({...e.proxyTls});this[f]=g({...e.requestTls});this[h]=t(A,{connect:l});this[d]=new a({...e,connect:async(e,t)=>{let A=e.host;if(!e.port){A+=`:${defaultProtocolPort(e.protocol)}`}try{const{socket:i,statusCode:o}=await this[h].connect({origin:n,port:s,path:A,signal:e.signal,headers:{...this[E],host:c}});if(o!==200){i.on("error",(()=>{})).destroy();t(new p("Proxy response !== 200 when HTTP Tunneling"))}if(e.protocol!=="https:"){t(null,i);return}let r;if(this[C]){r=this[C].servername}else{r=e.servername}this[f]({...e,servername:r,httpSocket:i},t)}catch(e){t(e)}}})}dispatch(e,t){const{host:A}=new r(e.origin);const i=buildHeaders(e.headers);throwIfProxyAuthIsSent(i);return this[d].dispatch({...e,headers:{...i,host:A}},t)}async[n](){await this[d].close();await this[h].close()}async[s](){await this[d].destroy();await this[h].destroy()}}function buildHeaders(e){if(Array.isArray(e)){const t={};for(let A=0;Ae.toLowerCase()==="proxy-authorization"));if(t){throw new u("Proxy-Authorization should be sent in ProxyAgent constructor")}}e.exports=ProxyAgent},7018:e=>{let t=Date.now();let A;const i=[];function onTimeout(){t=Date.now();let e=i.length;let A=0;while(A0&&t>=n.state){n.state=-1;n.callback(n.opaque)}if(n.state===-1){n.state=-2;if(A!==e-1){i[A]=i.pop()}else{i.pop()}e-=1}else{A+=1}}if(i.length>0){refreshTimeout()}}function refreshTimeout(){if(A&&A.refresh){A.refresh()}else{clearTimeout(A);A=setTimeout(onTimeout,1e3);if(A.unref){A.unref()}}}class Timeout{constructor(e,t,A){this.callback=e;this.delay=t;this.opaque=A;this.state=-2;this.refresh()}refresh(){if(this.state===-2){i.push(this);if(!A||i.length===1){refreshTimeout()}}this.state=0}clear(){this.state=-1}}e.exports={setTimeout(e,t,A){return t<1e3?setTimeout(e,t,A):new Timeout(e,t,A)},clearTimeout(e){if(e instanceof Timeout){e.clear()}else{clearTimeout(e)}}}},7726:(e,t,A)=>{const i=A(7643);const{uid:n,states:s}=A(4593);const{kReadyState:o,kSentClose:r,kByteParser:a,kReceivedClose:c}=A(4298);const{fireEvent:l,failWebsocketConnection:u}=A(6678);const{CloseEvent:p}=A(8648);const{makeRequest:g}=A(3010);const{fetching:d}=A(8874);const{Headers:h}=A(7941);const{getGlobalDispatcher:E}=A(4339);const{kHeadersList:C}=A(7282);const Q={};Q.open=i.channel("undici:websocket:open");Q.close=i.channel("undici:websocket:close");Q.socketError=i.channel("undici:websocket:socket_error");let f;try{f=A(6113)}catch{}function establishWebSocketConnection(e,t,A,i,s){const o=e;o.protocol=e.protocol==="ws:"?"http:":"https:";const r=g({urlList:[o],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(s.headers){const e=new h(s.headers)[C];r.headersList=e}const a=f.randomBytes(16).toString("base64");r.headersList.append("sec-websocket-key",a);r.headersList.append("sec-websocket-version","13");for(const e of t){r.headersList.append("sec-websocket-protocol",e)}const c="";const l=d({request:r,useParallelQueue:true,dispatcher:s.dispatcher??E(),processResponse(e){if(e.type==="error"||e.status!==101){u(A,"Received network error or non-101 status code.");return}if(t.length!==0&&!e.headersList.get("Sec-WebSocket-Protocol")){u(A,"Server did not respond with sent protocols.");return}if(e.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){u(A,'Server did not set Upgrade header to "websocket".');return}if(e.headersList.get("Connection")?.toLowerCase()!=="upgrade"){u(A,'Server did not set Connection header to "upgrade".');return}const s=e.headersList.get("Sec-WebSocket-Accept");const o=f.createHash("sha1").update(a+n).digest("base64");if(s!==o){u(A,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const l=e.headersList.get("Sec-WebSocket-Extensions");if(l!==null&&l!==c){u(A,"Received different permessage-deflate than the one set.");return}const p=e.headersList.get("Sec-WebSocket-Protocol");if(p!==null&&p!==r.headersList.get("Sec-WebSocket-Protocol")){u(A,"Protocol was not set in the opening handshake.");return}e.socket.on("data",onSocketData);e.socket.on("close",onSocketClose);e.socket.on("error",onSocketError);if(Q.open.hasSubscribers){Q.open.publish({address:e.socket.address(),protocol:p,extensions:l})}i(e)}});return l}function onSocketData(e){if(!this.ws[a].write(e)){this.pause()}}function onSocketClose(){const{ws:e}=this;const t=e[r]&&e[c];let A=1005;let i="";const n=e[a].closingInfo;if(n){A=n.code??1005;i=n.reason}else if(!e[r]){A=1006}e[o]=s.CLOSED;l("close",e,p,{wasClean:t,code:A,reason:i});if(Q.close.hasSubscribers){Q.close.publish({websocket:e,code:A,reason:i})}}function onSocketError(e){const{ws:t}=this;t[o]=s.CLOSING;if(Q.socketError.hasSubscribers){Q.socketError.publish(e)}this.destroy()}e.exports={establishWebSocketConnection:establishWebSocketConnection}},4593:e=>{const t="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const A={enumerable:true,writable:false,configurable:false};const i={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const n={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const s=2**16-1;const o={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const r=Buffer.allocUnsafe(0);e.exports={uid:t,staticPropertyDescriptors:A,states:i,opcodes:n,maxUnsigned16Bit:s,parserStates:o,emptyBuffer:r}},8648:(e,t,A)=>{const{webidl:i}=A(9342);const{kEnumerableProperty:n}=A(9980);const{MessagePort:s}=A(1267);class MessageEvent extends Event{#s;constructor(e,t={}){i.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"});e=i.converters.DOMString(e);t=i.converters.MessageEventInit(t);super(e,t);this.#s=t}get data(){i.brandCheck(this,MessageEvent);return this.#s.data}get origin(){i.brandCheck(this,MessageEvent);return this.#s.origin}get lastEventId(){i.brandCheck(this,MessageEvent);return this.#s.lastEventId}get source(){i.brandCheck(this,MessageEvent);return this.#s.source}get ports(){i.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#s.ports)){Object.freeze(this.#s.ports)}return this.#s.ports}initMessageEvent(e,t=false,A=false,n=null,s="",o="",r=null,a=[]){i.brandCheck(this,MessageEvent);i.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"});return new MessageEvent(e,{bubbles:t,cancelable:A,data:n,origin:s,lastEventId:o,source:r,ports:a})}}class CloseEvent extends Event{#s;constructor(e,t={}){i.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"});e=i.converters.DOMString(e);t=i.converters.CloseEventInit(t);super(e,t);this.#s=t}get wasClean(){i.brandCheck(this,CloseEvent);return this.#s.wasClean}get code(){i.brandCheck(this,CloseEvent);return this.#s.code}get reason(){i.brandCheck(this,CloseEvent);return this.#s.reason}}class ErrorEvent extends Event{#s;constructor(e,t){i.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(e,t);e=i.converters.DOMString(e);t=i.converters.ErrorEventInit(t??{});this.#s=t}get message(){i.brandCheck(this,ErrorEvent);return this.#s.message}get filename(){i.brandCheck(this,ErrorEvent);return this.#s.filename}get lineno(){i.brandCheck(this,ErrorEvent);return this.#s.lineno}get colno(){i.brandCheck(this,ErrorEvent);return this.#s.colno}get error(){i.brandCheck(this,ErrorEvent);return this.#s.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:n,origin:n,lastEventId:n,source:n,ports:n,initMessageEvent:n});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:n,code:n,wasClean:n});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:n,filename:n,lineno:n,colno:n,error:n});i.converters.MessagePort=i.interfaceConverter(s);i.converters["sequence"]=i.sequenceConverter(i.converters.MessagePort);const o=[{key:"bubbles",converter:i.converters.boolean,defaultValue:false},{key:"cancelable",converter:i.converters.boolean,defaultValue:false},{key:"composed",converter:i.converters.boolean,defaultValue:false}];i.converters.MessageEventInit=i.dictionaryConverter([...o,{key:"data",converter:i.converters.any,defaultValue:null},{key:"origin",converter:i.converters.USVString,defaultValue:""},{key:"lastEventId",converter:i.converters.DOMString,defaultValue:""},{key:"source",converter:i.nullableConverter(i.converters.MessagePort),defaultValue:null},{key:"ports",converter:i.converters["sequence"],get defaultValue(){return[]}}]);i.converters.CloseEventInit=i.dictionaryConverter([...o,{key:"wasClean",converter:i.converters.boolean,defaultValue:false},{key:"code",converter:i.converters["unsigned short"],defaultValue:0},{key:"reason",converter:i.converters.USVString,defaultValue:""}]);i.converters.ErrorEventInit=i.dictionaryConverter([...o,{key:"message",converter:i.converters.DOMString,defaultValue:""},{key:"filename",converter:i.converters.USVString,defaultValue:""},{key:"lineno",converter:i.converters["unsigned long"],defaultValue:0},{key:"colno",converter:i.converters["unsigned long"],defaultValue:0},{key:"error",converter:i.converters.any}]);e.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent}},8988:(e,t,A)=>{const{maxUnsigned16Bit:i}=A(4593);let n;try{n=A(6113)}catch{}class WebsocketFrameSend{constructor(e){this.frameData=e;this.maskKey=n.randomBytes(4)}createFrame(e){const t=this.frameData?.byteLength??0;let A=t;let n=6;if(t>i){n+=8;A=127}else if(t>125){n+=2;A=126}const s=Buffer.allocUnsafe(t+n);s[0]=s[1]=0;s[0]|=128;s[0]=(s[0]&240)+e; +/*! ws. MIT License. Einar Otto Stangvik */s[n-4]=this.maskKey[0];s[n-3]=this.maskKey[1];s[n-2]=this.maskKey[2];s[n-1]=this.maskKey[3];s[1]=A;if(A===126){s.writeUInt16BE(t,2)}else if(A===127){s[2]=s[3]=0;s.writeUIntBE(t,4,6)}s[1]|=128;for(let e=0;e{const{Writable:i}=A(2781);const n=A(7643);const{parserStates:s,opcodes:o,states:r,emptyBuffer:a}=A(4593);const{kReadyState:c,kSentClose:l,kResponse:u,kReceivedClose:p}=A(4298);const{isValidStatusCode:g,failWebsocketConnection:d,websocketMessageReceived:h}=A(6678);const{WebsocketFrameSend:E}=A(8988);const C={};C.ping=n.channel("undici:websocket:ping");C.pong=n.channel("undici:websocket:pong");class ByteParser extends i{#o=[];#r=0;#a=s.INFO;#c={};#l=[];constructor(e){super();this.ws=e}_write(e,t,A){this.#o.push(e);this.#r+=e.length;this.run(A)}run(e){while(true){if(this.#a===s.INFO){if(this.#r<2){return e()}const t=this.consume(2);this.#c.fin=(t[0]&128)!==0;this.#c.opcode=t[0]&15;this.#c.originalOpcode??=this.#c.opcode;this.#c.fragmented=!this.#c.fin&&this.#c.opcode!==o.CONTINUATION;if(this.#c.fragmented&&this.#c.opcode!==o.BINARY&&this.#c.opcode!==o.TEXT){d(this.ws,"Invalid frame type was fragmented.");return}const A=t[1]&127;if(A<=125){this.#c.payloadLength=A;this.#a=s.READ_DATA}else if(A===126){this.#a=s.PAYLOADLENGTH_16}else if(A===127){this.#a=s.PAYLOADLENGTH_64}if(this.#c.fragmented&&A>125){d(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#c.opcode===o.PING||this.#c.opcode===o.PONG||this.#c.opcode===o.CLOSE)&&A>125){d(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#c.opcode===o.CLOSE){if(A===1){d(this.ws,"Received close frame with a 1-byte body.");return}const e=this.consume(A);this.#c.closeInfo=this.parseCloseBody(false,e);if(!this.ws[l]){const e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#c.closeInfo.code,0);const t=new E(e);this.ws[u].socket.write(t.createFrame(o.CLOSE),(e=>{if(!e){this.ws[l]=true}}))}this.ws[c]=r.CLOSING;this.ws[p]=true;this.end();return}else if(this.#c.opcode===o.PING){const t=this.consume(A);if(!this.ws[p]){const e=new E(t);this.ws[u].socket.write(e.createFrame(o.PONG));if(C.ping.hasSubscribers){C.ping.publish({payload:t})}}this.#a=s.INFO;if(this.#r>0){continue}else{e();return}}else if(this.#c.opcode===o.PONG){const t=this.consume(A);if(C.pong.hasSubscribers){C.pong.publish({payload:t})}if(this.#r>0){continue}else{e();return}}}else if(this.#a===s.PAYLOADLENGTH_16){if(this.#r<2){return e()}const t=this.consume(2);this.#c.payloadLength=t.readUInt16BE(0);this.#a=s.READ_DATA}else if(this.#a===s.PAYLOADLENGTH_64){if(this.#r<8){return e()}const t=this.consume(8);const A=t.readUInt32BE(0);if(A>2**31-1){d(this.ws,"Received payload length > 2^31 bytes.");return}const i=t.readUInt32BE(4);this.#c.payloadLength=(A<<8)+i;this.#a=s.READ_DATA}else if(this.#a===s.READ_DATA){if(this.#r=this.#c.payloadLength){const e=this.consume(this.#c.payloadLength);this.#l.push(e);if(!this.#c.fragmented||this.#c.fin&&this.#c.opcode===o.CONTINUATION){const e=Buffer.concat(this.#l);h(this.ws,this.#c.originalOpcode,e);this.#c={};this.#l.length=0}this.#a=s.INFO}}if(this.#r>0){continue}else{e();break}}}consume(e){if(e>this.#r){return null}else if(e===0){return a}if(this.#o[0].length===e){this.#r-=this.#o[0].length;return this.#o.shift()}const t=Buffer.allocUnsafe(e);let A=0;while(A!==e){const i=this.#o[0];const{length:n}=i;if(n+A===e){t.set(this.#o.shift(),A);break}else if(n+A>e){t.set(i.subarray(0,e-A),A);this.#o[0]=i.subarray(e-A);break}else{t.set(this.#o.shift(),A);A+=i.length}}this.#r-=e;return t}parseCloseBody(e,t){let A;if(t.length>=2){A=t.readUInt16BE(0)}if(e){if(!g(A)){return null}return{code:A}}let i=t.subarray(2);if(i[0]===239&&i[1]===187&&i[2]===191){i=i.subarray(3)}if(A!==undefined&&!g(A)){return null}try{i=new TextDecoder("utf-8",{fatal:true}).decode(i)}catch{return null}return{code:A,reason:i}}get closingInfo(){return this.#c.closeInfo}}e.exports={ByteParser:ByteParser}},4298:e=>{e.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}},6678:(e,t,A)=>{const{kReadyState:i,kController:n,kResponse:s,kBinaryType:o,kWebSocketURL:r}=A(4298);const{states:a,opcodes:c}=A(4593);const{MessageEvent:l,ErrorEvent:u}=A(8648);function isEstablished(e){return e[i]===a.OPEN}function isClosing(e){return e[i]===a.CLOSING}function isClosed(e){return e[i]===a.CLOSED}function fireEvent(e,t,A=Event,i){const n=new A(e,i);t.dispatchEvent(n)}function websocketMessageReceived(e,t,A){if(e[i]!==a.OPEN){return}let n;if(t===c.TEXT){try{n=new TextDecoder("utf-8",{fatal:true}).decode(A)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(t===c.BINARY){if(e[o]==="blob"){n=new Blob([A])}else{n=new Uint8Array(A).buffer}}fireEvent("message",e,l,{origin:e[r].origin,data:n})}function isValidSubprotocol(e){if(e.length===0){return false}for(const t of e){const e=t.charCodeAt(0);if(e<33||e>126||t==="("||t===")"||t==="<"||t===">"||t==="@"||t===","||t===";"||t===":"||t==="\\"||t==='"'||t==="/"||t==="["||t==="]"||t==="?"||t==="="||t==="{"||t==="}"||e===32||e===9){return false}}return true}function isValidStatusCode(e){if(e>=1e3&&e<1015){return e!==1004&&e!==1005&&e!==1006}return e>=3e3&&e<=4999}function failWebsocketConnection(e,t){const{[n]:A,[s]:i}=e;A.abort();if(i?.socket&&!i.socket.destroyed){i.socket.destroy()}if(t){fireEvent("error",e,u,{error:new Error(t)})}}e.exports={isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived}},5190:(e,t,A)=>{const{webidl:i}=A(9342);const{DOMException:n}=A(9596);const{URLSerializer:s}=A(3513);const{getGlobalOrigin:o}=A(1709);const{staticPropertyDescriptors:r,states:a,opcodes:c,emptyBuffer:l}=A(4593);const{kWebSocketURL:u,kReadyState:p,kController:g,kBinaryType:d,kResponse:h,kSentClose:E,kByteParser:C}=A(4298);const{isEstablished:Q,isClosing:f,isValidSubprotocol:B,failWebsocketConnection:I,fireEvent:m}=A(6678);const{establishWebSocketConnection:b}=A(7726);const{WebsocketFrameSend:y}=A(8988);const{ByteParser:w}=A(1154);const{kEnumerableProperty:v,isBlobLike:R}=A(9980);const{getGlobalDispatcher:x}=A(4339);const{types:D}=A(3837);let k=false;class WebSocket extends EventTarget{#u={open:null,error:null,close:null,message:null};#p=0;#g="";#d="";constructor(e,t=[]){super();i.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"});if(!k){k=true;process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"})}const A=i.converters["DOMString or sequence or WebSocketInit"](t);e=i.converters.USVString(e);t=A.protocols;const s=o();let r;try{r=new URL(e,s)}catch(e){throw new n(e,"SyntaxError")}if(r.protocol==="http:"){r.protocol="ws:"}else if(r.protocol==="https:"){r.protocol="wss:"}if(r.protocol!=="ws:"&&r.protocol!=="wss:"){throw new n(`Expected a ws: or wss: protocol, got ${r.protocol}`,"SyntaxError")}if(r.hash||r.href.endsWith("#")){throw new n("Got fragment","SyntaxError")}if(typeof t==="string"){t=[t]}if(t.length!==new Set(t.map((e=>e.toLowerCase()))).size){throw new n("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(t.length>0&&!t.every((e=>B(e)))){throw new n("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[u]=new URL(r.href);this[g]=b(r,t,this,(e=>this.#h(e)),A);this[p]=WebSocket.CONNECTING;this[d]="blob"}close(e=undefined,t=undefined){i.brandCheck(this,WebSocket);if(e!==undefined){e=i.converters["unsigned short"](e,{clamp:true})}if(t!==undefined){t=i.converters.USVString(t)}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new n("invalid code","InvalidAccessError")}}let A=0;if(t!==undefined){A=Buffer.byteLength(t);if(A>123){throw new n(`Reason must be less than 123 bytes; received ${A}`,"SyntaxError")}}if(this[p]===WebSocket.CLOSING||this[p]===WebSocket.CLOSED){}else if(!Q(this)){I(this,"Connection was closed before it was established.");this[p]=WebSocket.CLOSING}else if(!f(this)){const i=new y;if(e!==undefined&&t===undefined){i.frameData=Buffer.allocUnsafe(2);i.frameData.writeUInt16BE(e,0)}else if(e!==undefined&&t!==undefined){i.frameData=Buffer.allocUnsafe(2+A);i.frameData.writeUInt16BE(e,0);i.frameData.write(t,2,"utf-8")}else{i.frameData=l}const n=this[h].socket;n.write(i.createFrame(c.CLOSE),(e=>{if(!e){this[E]=true}}));this[p]=a.CLOSING}else{this[p]=WebSocket.CLOSING}}send(e){i.brandCheck(this,WebSocket);i.argumentLengthCheck(arguments,1,{header:"WebSocket.send"});e=i.converters.WebSocketSendData(e);if(this[p]===WebSocket.CONNECTING){throw new n("Sent before connected.","InvalidStateError")}if(!Q(this)||f(this)){return}const t=this[h].socket;if(typeof e==="string"){const A=Buffer.from(e);const i=new y(A);const n=i.createFrame(c.TEXT);this.#p+=A.byteLength;t.write(n,(()=>{this.#p-=A.byteLength}))}else if(D.isArrayBuffer(e)){const A=Buffer.from(e);const i=new y(A);const n=i.createFrame(c.BINARY);this.#p+=A.byteLength;t.write(n,(()=>{this.#p-=A.byteLength}))}else if(ArrayBuffer.isView(e)){const A=Buffer.from(e,e.byteOffset,e.byteLength);const i=new y(A);const n=i.createFrame(c.BINARY);this.#p+=A.byteLength;t.write(n,(()=>{this.#p-=A.byteLength}))}else if(R(e)){const A=new y;e.arrayBuffer().then((e=>{const i=Buffer.from(e);A.frameData=i;const n=A.createFrame(c.BINARY);this.#p+=i.byteLength;t.write(n,(()=>{this.#p-=i.byteLength}))}))}}get readyState(){i.brandCheck(this,WebSocket);return this[p]}get bufferedAmount(){i.brandCheck(this,WebSocket);return this.#p}get url(){i.brandCheck(this,WebSocket);return s(this[u])}get extensions(){i.brandCheck(this,WebSocket);return this.#d}get protocol(){i.brandCheck(this,WebSocket);return this.#g}get onopen(){i.brandCheck(this,WebSocket);return this.#u.open}set onopen(e){i.brandCheck(this,WebSocket);if(this.#u.open){this.removeEventListener("open",this.#u.open)}if(typeof e==="function"){this.#u.open=e;this.addEventListener("open",e)}else{this.#u.open=null}}get onerror(){i.brandCheck(this,WebSocket);return this.#u.error}set onerror(e){i.brandCheck(this,WebSocket);if(this.#u.error){this.removeEventListener("error",this.#u.error)}if(typeof e==="function"){this.#u.error=e;this.addEventListener("error",e)}else{this.#u.error=null}}get onclose(){i.brandCheck(this,WebSocket);return this.#u.close}set onclose(e){i.brandCheck(this,WebSocket);if(this.#u.close){this.removeEventListener("close",this.#u.close)}if(typeof e==="function"){this.#u.close=e;this.addEventListener("close",e)}else{this.#u.close=null}}get onmessage(){i.brandCheck(this,WebSocket);return this.#u.message}set onmessage(e){i.brandCheck(this,WebSocket);if(this.#u.message){this.removeEventListener("message",this.#u.message)}if(typeof e==="function"){this.#u.message=e;this.addEventListener("message",e)}else{this.#u.message=null}}get binaryType(){i.brandCheck(this,WebSocket);return this[d]}set binaryType(e){i.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[d]="blob"}else{this[d]=e}}#h(e){this[h]=e;const t=new w(this);t.on("drain",(function onParserDrain(){this.ws[h].socket.resume()}));e.socket.ws=this;this[C]=t;this[p]=a.OPEN;const A=e.headersList.get("sec-websocket-extensions");if(A!==null){this.#d=A}const i=e.headersList.get("sec-websocket-protocol");if(i!==null){this.#g=i}m("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=a.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=a.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=a.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=a.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:r,OPEN:r,CLOSING:r,CLOSED:r,url:v,readyState:v,bufferedAmount:v,onopen:v,onerror:v,onclose:v,close:v,onmessage:v,binaryType:v,send:v,extensions:v,protocol:v,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:r,OPEN:r,CLOSING:r,CLOSED:r});i.converters["sequence"]=i.sequenceConverter(i.converters.DOMString);i.converters["DOMString or sequence"]=function(e){if(i.util.Type(e)==="Object"&&Symbol.iterator in e){return i.converters["sequence"](e)}return i.converters.DOMString(e)};i.converters.WebSocketInit=i.dictionaryConverter([{key:"protocols",converter:i.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:e=>e,get defaultValue(){return x()}},{key:"headers",converter:i.nullableConverter(i.converters.HeadersInit)}]);i.converters["DOMString or sequence or WebSocketInit"]=function(e){if(i.util.Type(e)==="Object"&&!(Symbol.iterator in e)){return i.converters.WebSocketInit(e)}return{protocols:i.converters["DOMString or sequence"](e)}};i.converters.WebSocketSendData=function(e){if(i.util.Type(e)==="Object"){if(R(e)){return i.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||D.isAnyArrayBuffer(e)){return i.converters.BufferSource(e)}}return i.converters.USVString(e)};e.exports={WebSocket:WebSocket}},7338:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});Object.defineProperty(t,"v1",{enumerable:true,get:function(){return i.default}});Object.defineProperty(t,"v3",{enumerable:true,get:function(){return n.default}});Object.defineProperty(t,"v4",{enumerable:true,get:function(){return s.default}});Object.defineProperty(t,"v5",{enumerable:true,get:function(){return o.default}});Object.defineProperty(t,"NIL",{enumerable:true,get:function(){return r.default}});Object.defineProperty(t,"version",{enumerable:true,get:function(){return a.default}});Object.defineProperty(t,"validate",{enumerable:true,get:function(){return c.default}});Object.defineProperty(t,"stringify",{enumerable:true,get:function(){return l.default}});Object.defineProperty(t,"parse",{enumerable:true,get:function(){return u.default}});var i=_interopRequireDefault(A(6101));var n=_interopRequireDefault(A(9456));var s=_interopRequireDefault(A(1071));var o=_interopRequireDefault(A(8057));var r=_interopRequireDefault(A(7448));var a=_interopRequireDefault(A(5530));var c=_interopRequireDefault(A(324));var l=_interopRequireDefault(A(5284));var u=_interopRequireDefault(A(6067));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}},8612:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(6113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function md5(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return i.default.createHash("md5").update(e).digest()}var n=md5;t["default"]=n},7448:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var A="00000000-0000-0000-0000-000000000000";t["default"]=A},6067:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(324));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function parse(e){if(!(0,i.default)(e)){throw TypeError("Invalid UUID")}let t;const A=new Uint8Array(16);A[0]=(t=parseInt(e.slice(0,8),16))>>>24;A[1]=t>>>16&255;A[2]=t>>>8&255;A[3]=t&255;A[4]=(t=parseInt(e.slice(9,13),16))>>>8;A[5]=t&255;A[6]=(t=parseInt(e.slice(14,18),16))>>>8;A[7]=t&255;A[8]=(t=parseInt(e.slice(19,23),16))>>>8;A[9]=t&255;A[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255;A[11]=t/4294967296&255;A[12]=t>>>24&255;A[13]=t>>>16&255;A[14]=t>>>8&255;A[15]=t&255;return A}var n=parse;t["default"]=n},7610:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var A=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;t["default"]=A},6750:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=rng;var i=_interopRequireDefault(A(6113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const n=new Uint8Array(256);let s=n.length;function rng(){if(s>n.length-16){i.default.randomFillSync(n);s=0}return n.slice(s,s+=16)}},4920:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(6113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function sha1(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return i.default.createHash("sha1").update(e).digest()}var n=sha1;t["default"]=n},5284:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(324));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const n=[];for(let e=0;e<256;++e){n.push((e+256).toString(16).substr(1))}function stringify(e,t=0){const A=(n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]).toLowerCase();if(!(0,i.default)(A)){throw TypeError("Stringified UUID is invalid")}return A}var s=stringify;t["default"]=s},6101:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(6750));var n=_interopRequireDefault(A(5284));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let s;let o;let r=0;let a=0;function v1(e,t,A){let c=t&&A||0;const l=t||new Array(16);e=e||{};let u=e.node||s;let p=e.clockseq!==undefined?e.clockseq:o;if(u==null||p==null){const t=e.random||(e.rng||i.default)();if(u==null){u=s=[t[0]|1,t[1],t[2],t[3],t[4],t[5]]}if(p==null){p=o=(t[6]<<8|t[7])&16383}}let g=e.msecs!==undefined?e.msecs:Date.now();let d=e.nsecs!==undefined?e.nsecs:a+1;const h=g-r+(d-a)/1e4;if(h<0&&e.clockseq===undefined){p=p+1&16383}if((h<0||g>r)&&e.nsecs===undefined){d=0}if(d>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}r=g;a=d;o=p;g+=122192928e5;const E=((g&268435455)*1e4+d)%4294967296;l[c++]=E>>>24&255;l[c++]=E>>>16&255;l[c++]=E>>>8&255;l[c++]=E&255;const C=g/4294967296*1e4&268435455;l[c++]=C>>>8&255;l[c++]=C&255;l[c++]=C>>>24&15|16;l[c++]=C>>>16&255;l[c++]=p>>>8|128;l[c++]=p&255;for(let e=0;e<6;++e){l[c+e]=u[e]}return t||(0,n.default)(l)}var c=v1;t["default"]=c},9456:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(9390));var n=_interopRequireDefault(A(8612));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const s=(0,i.default)("v3",48,n.default);var o=s;t["default"]=o},9390:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=_default;t.URL=t.DNS=void 0;var i=_interopRequireDefault(A(5284));var n=_interopRequireDefault(A(6067));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function stringToBytes(e){e=unescape(encodeURIComponent(e));const t=[];for(let A=0;A{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(6750));var n=_interopRequireDefault(A(5284));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function v4(e,t,A){e=e||{};const s=e.random||(e.rng||i.default)();s[6]=s[6]&15|64;s[8]=s[8]&63|128;if(t){A=A||0;for(let e=0;e<16;++e){t[A+e]=s[e]}return t}return(0,n.default)(s)}var s=v4;t["default"]=s},8057:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(9390));var n=_interopRequireDefault(A(4920));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const s=(0,i.default)("v5",80,n.default);var o=s;t["default"]=o},324:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(7610));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function validate(e){return typeof e==="string"&&i.default.test(e)}var n=validate;t["default"]=n},5530:(e,t,A)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(A(324));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function version(e){if(!(0,i.default)(e)){throw TypeError("Invalid UUID")}return parseInt(e.substr(14,1),16)}var n=version;t["default"]=n},1987:module=>{module.exports=eval("require")("debug")},9491:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("assert")},852:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("async_hooks")},4300:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("buffer")},6206:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("console")},6113:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto")},7643:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("diagnostics_channel")},2361:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("events")},7147:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs")},3685:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http")},5158:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http2")},5687:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("https")},1808:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("net")},5673:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:events")},4492:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream")},7261:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util")},2037:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("os")},1017:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("path")},4074:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("perf_hooks")},3477:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("querystring")},2781:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream")},5356:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream/web")},1576:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder")},4404:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls")},7310:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("url")},3837:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util")},9830:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util/types")},1267:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("worker_threads")},9796:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("zlib")},825:(e,t,A)=>{const i=A(6698);const n=A(7310);const s=A(2324);const o=A(3685);const r=A(5687);const a=A(3837);const c=A(3037);const l=A(9796);const u=A(2781);const p=A(2361);function _interopDefaultLegacy(e){return e&&typeof e==="object"&&"default"in e?e:{default:e}}const g=_interopDefaultLegacy(i);const d=_interopDefaultLegacy(n);const h=_interopDefaultLegacy(o);const E=_interopDefaultLegacy(r);const C=_interopDefaultLegacy(a);const Q=_interopDefaultLegacy(c);const f=_interopDefaultLegacy(l);const B=_interopDefaultLegacy(u);const I=_interopDefaultLegacy(p);function bind(e,t){return function wrap(){return e.apply(t,arguments)}}const{toString:m}=Object.prototype;const{getPrototypeOf:b}=Object;const y=(e=>t=>{const A=m.call(t);return e[A]||(e[A]=A.slice(8,-1).toLowerCase())})(Object.create(null));const kindOfTest=e=>{e=e.toLowerCase();return t=>y(t)===e};const typeOfTest=e=>t=>typeof t===e;const{isArray:w}=Array;const v=typeOfTest("undefined");function isBuffer(e){return e!==null&&!v(e)&&e.constructor!==null&&!v(e.constructor)&&D(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const R=kindOfTest("ArrayBuffer");function isArrayBufferView(e){let t;if(typeof ArrayBuffer!=="undefined"&&ArrayBuffer.isView){t=ArrayBuffer.isView(e)}else{t=e&&e.buffer&&R(e.buffer)}return t}const x=typeOfTest("string");const D=typeOfTest("function");const k=typeOfTest("number");const isObject=e=>e!==null&&typeof e==="object";const isBoolean=e=>e===true||e===false;const isPlainObject=e=>{if(y(e)!=="object"){return false}const t=b(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)};const F=kindOfTest("Date");const S=kindOfTest("File");const N=kindOfTest("Blob");const U=kindOfTest("FileList");const isStream=e=>isObject(e)&&D(e.pipe);const isFormData=e=>{let t;return e&&(typeof FormData==="function"&&e instanceof FormData||D(e.append)&&((t=y(e))==="formdata"||t==="object"&&D(e.toString)&&e.toString()==="[object FormData]"))};const L=kindOfTest("URLSearchParams");const trim=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function forEach(e,t,{allOwnKeys:A=false}={}){if(e===null||typeof e==="undefined"){return}let i;let n;if(typeof e!=="object"){e=[e]}if(w(e)){for(i=0,n=e.length;i0){n=A[i];if(t===n.toLowerCase()){return n}}return null}const M=(()=>{if(typeof globalThis!=="undefined")return globalThis;return typeof self!=="undefined"?self:typeof window!=="undefined"?window:global})();const isContextDefined=e=>!v(e)&&e!==M;function merge(){const{caseless:e}=isContextDefined(this)&&this||{};const t={};const assignValue=(A,i)=>{const n=e&&findKey(t,i)||i;if(isPlainObject(t[n])&&isPlainObject(A)){t[n]=merge(t[n],A)}else if(isPlainObject(A)){t[n]=merge({},A)}else if(w(A)){t[n]=A.slice()}else{t[n]=A}};for(let e=0,t=arguments.length;e{forEach(t,((t,i)=>{if(A&&D(t)){e[i]=bind(t,A)}else{e[i]=t}}),{allOwnKeys:i});return e};const stripBOM=e=>{if(e.charCodeAt(0)===65279){e=e.slice(1)}return e};const inherits=(e,t,A,i)=>{e.prototype=Object.create(t.prototype,i);e.prototype.constructor=e;Object.defineProperty(e,"super",{value:t.prototype});A&&Object.assign(e.prototype,A)};const toFlatObject=(e,t,A,i)=>{let n;let s;let o;const r={};t=t||{};if(e==null)return t;do{n=Object.getOwnPropertyNames(e);s=n.length;while(s-- >0){o=n[s];if((!i||i(o,e,t))&&!r[o]){t[o]=e[o];r[o]=true}}e=A!==false&&b(e)}while(e&&(!A||A(e,t))&&e!==Object.prototype);return t};const endsWith=(e,t,A)=>{e=String(e);if(A===undefined||A>e.length){A=e.length}A-=t.length;const i=e.indexOf(t,A);return i!==-1&&i===A};const toArray=e=>{if(!e)return null;if(w(e))return e;let t=e.length;if(!k(t))return null;const A=new Array(t);while(t-- >0){A[t]=e[t]}return A};const T=(e=>t=>e&&t instanceof e)(typeof Uint8Array!=="undefined"&&b(Uint8Array));const forEachEntry=(e,t)=>{const A=e&&e[Symbol.iterator];const i=A.call(e);let n;while((n=i.next())&&!n.done){const A=n.value;t.call(e,A[0],A[1])}};const matchAll=(e,t)=>{let A;const i=[];while((A=e.exec(t))!==null){i.push(A)}return i};const _=kindOfTest("HTMLFormElement");const toCamelCase=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function replacer(e,t,A){return t.toUpperCase()+A}));const Y=(({hasOwnProperty:e})=>(t,A)=>e.call(t,A))(Object.prototype);const H=kindOfTest("RegExp");const reduceDescriptors=(e,t)=>{const A=Object.getOwnPropertyDescriptors(e);const i={};forEach(A,((A,n)=>{let s;if((s=t(A,n,e))!==false){i[n]=s||A}}));Object.defineProperties(e,i)};const freezeMethods=e=>{reduceDescriptors(e,((t,A)=>{if(D(e)&&["arguments","caller","callee"].indexOf(A)!==-1){return false}const i=e[A];if(!D(i))return;t.enumerable=false;if("writable"in t){t.writable=false;return}if(!t.set){t.set=()=>{throw Error("Can not rewrite read-only method '"+A+"'")}}}))};const toObjectSet=(e,t)=>{const A={};const define=e=>{e.forEach((e=>{A[e]=true}))};w(e)?define(e):define(String(e).split(t));return A};const noop=()=>{};const toFiniteNumber=(e,t)=>{e=+e;return Number.isFinite(e)?e:t};const J="abcdefghijklmnopqrstuvwxyz";const G="0123456789";const O={DIGIT:G,ALPHA:J,ALPHA_DIGIT:J+J.toUpperCase()+G};const generateString=(e=16,t=O.ALPHA_DIGIT)=>{let A="";const{length:i}=t;while(e--){A+=t[Math.random()*i|0]}return A};function isSpecCompliantForm(e){return!!(e&&D(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const toJSONObject=e=>{const t=new Array(10);const visit=(e,A)=>{if(isObject(e)){if(t.indexOf(e)>=0){return}if(!("toJSON"in e)){t[A]=e;const i=w(e)?[]:{};forEach(e,((e,t)=>{const n=visit(e,A+1);!v(n)&&(i[t]=n)}));t[A]=undefined;return i}}return e};return visit(e,0)};const V=kindOfTest("AsyncFunction");const isThenable=e=>e&&(isObject(e)||D(e))&&D(e.then)&&D(e.catch);const P={isArray:w,isArrayBuffer:R,isBuffer:isBuffer,isFormData:isFormData,isArrayBufferView:isArrayBufferView,isString:x,isNumber:k,isBoolean:isBoolean,isObject:isObject,isPlainObject:isPlainObject,isUndefined:v,isDate:F,isFile:S,isBlob:N,isRegExp:H,isFunction:D,isStream:isStream,isURLSearchParams:L,isTypedArray:T,isFileList:U,forEach:forEach,merge:merge,extend:extend,trim:trim,stripBOM:stripBOM,inherits:inherits,toFlatObject:toFlatObject,kindOf:y,kindOfTest:kindOfTest,endsWith:endsWith,toArray:toArray,forEachEntry:forEachEntry,matchAll:matchAll,isHTMLForm:_,hasOwnProperty:Y,hasOwnProp:Y,reduceDescriptors:reduceDescriptors,freezeMethods:freezeMethods,toObjectSet:toObjectSet,toCamelCase:toCamelCase,noop:noop,toFiniteNumber:toFiniteNumber,findKey:findKey,global:M,isContextDefined:isContextDefined,ALPHABET:O,generateString:generateString,isSpecCompliantForm:isSpecCompliantForm,toJSONObject:toJSONObject,isAsyncFn:V,isThenable:isThenable};function AxiosError(e,t,A,i,n){Error.call(this);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}else{this.stack=(new Error).stack}this.message=e;this.name="AxiosError";t&&(this.code=t);A&&(this.config=A);i&&(this.request=i);n&&(this.response=n)}P.inherits(AxiosError,Error,{toJSON:function toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:P.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const q=AxiosError.prototype;const W={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{W[e]={value:e}}));Object.defineProperties(AxiosError,W);Object.defineProperty(q,"isAxiosError",{value:true});AxiosError.from=(e,t,A,i,n,s)=>{const o=Object.create(q);P.toFlatObject(e,o,(function filter(e){return e!==Error.prototype}),(e=>e!=="isAxiosError"));AxiosError.call(o,e.message,t,A,i,n);o.cause=e;o.name=e.name;s&&Object.assign(o,s);return o};function isVisitable(e){return P.isPlainObject(e)||P.isArray(e)}function removeBrackets(e){return P.endsWith(e,"[]")?e.slice(0,-2):e}function renderKey(e,t,A){if(!e)return t;return e.concat(t).map((function each(e,t){e=removeBrackets(e);return!A&&t?"["+e+"]":e})).join(A?".":"")}function isFlatArray(e){return P.isArray(e)&&!e.some(isVisitable)}const j=P.toFlatObject(P,{},null,(function filter(e){return/^is[A-Z]/.test(e)}));function toFormData(e,t,A){if(!P.isObject(e)){throw new TypeError("target must be an object")}t=t||new(g["default"]||FormData);A=P.toFlatObject(A,{metaTokens:true,dots:false,indexes:false},false,(function defined(e,t){return!P.isUndefined(t[e])}));const i=A.metaTokens;const n=A.visitor||defaultVisitor;const s=A.dots;const o=A.indexes;const r=A.Blob||typeof Blob!=="undefined"&&Blob;const a=r&&P.isSpecCompliantForm(t);if(!P.isFunction(n)){throw new TypeError("visitor must be a function")}function convertValue(e){if(e===null)return"";if(P.isDate(e)){return e.toISOString()}if(!a&&P.isBlob(e)){throw new AxiosError("Blob is not supported. Use a Buffer instead.")}if(P.isArrayBuffer(e)||P.isTypedArray(e)){return a&&typeof Blob==="function"?new Blob([e]):Buffer.from(e)}return e}function defaultVisitor(e,A,n){let r=e;if(e&&!n&&typeof e==="object"){if(P.endsWith(A,"{}")){A=i?A:A.slice(0,-2);e=JSON.stringify(e)}else if(P.isArray(e)&&isFlatArray(e)||(P.isFileList(e)||P.endsWith(A,"[]"))&&(r=P.toArray(e))){A=removeBrackets(A);r.forEach((function each(e,i){!(P.isUndefined(e)||e===null)&&t.append(o===true?renderKey([A],i,s):o===null?A:A+"[]",convertValue(e))}));return false}}if(isVisitable(e)){return true}t.append(renderKey(n,A,s),convertValue(e));return false}const c=[];const l=Object.assign(j,{defaultVisitor:defaultVisitor,convertValue:convertValue,isVisitable:isVisitable});function build(e,A){if(P.isUndefined(e))return;if(c.indexOf(e)!==-1){throw Error("Circular reference detected in "+A.join("."))}c.push(e);P.forEach(e,(function each(e,i){const s=!(P.isUndefined(e)||e===null)&&n.call(t,e,P.isString(i)?i.trim():i,A,l);if(s===true){build(e,A?A.concat(i):[i])}}));c.pop()}if(!P.isObject(e)){throw new TypeError("data must be an object")}build(e);return t}function encode$1(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function replacer(e){return t[e]}))}function AxiosURLSearchParams(e,t){this._pairs=[];e&&toFormData(e,this,t)}const z=AxiosURLSearchParams.prototype;z.append=function append(e,t){this._pairs.push([e,t])};z.toString=function toString(e){const t=e?function(t){return e.call(this,t,encode$1)}:encode$1;return this._pairs.map((function each(e){return t(e[0])+"="+t(e[1])}),"").join("&")};function encode(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function buildURL(e,t,A){if(!t){return e}const i=A&&A.encode||encode;const n=A&&A.serialize;let s;if(n){s=n(t,A)}else{s=P.isURLSearchParams(t)?t.toString():new AxiosURLSearchParams(t,A).toString(i)}if(s){const t=e.indexOf("#");if(t!==-1){e=e.slice(0,t)}e+=(e.indexOf("?")===-1?"?":"&")+s}return e}class InterceptorManager{constructor(){this.handlers=[]}use(e,t,A){this.handlers.push({fulfilled:e,rejected:t,synchronous:A?A.synchronous:false,runWhen:A?A.runWhen:null});return this.handlers.length-1}eject(e){if(this.handlers[e]){this.handlers[e]=null}}clear(){if(this.handlers){this.handlers=[]}}forEach(e){P.forEach(this.handlers,(function forEachHandler(t){if(t!==null){e(t)}}))}}const X=InterceptorManager;const Z={silentJSONParsing:true,forcedJSONParsing:true,clarifyTimeoutError:false};const K=d["default"].URLSearchParams;const $={isNode:true,classes:{URLSearchParams:K,FormData:g["default"],Blob:typeof Blob!=="undefined"&&Blob||null},protocols:["http","https","file","data"]};const ee=typeof window!=="undefined"&&typeof document!=="undefined";const te=(e=>ee&&["ReactNative","NativeScript","NS"].indexOf(e)<0)(typeof navigator!=="undefined"&&navigator.product);const Ae=(()=>typeof WorkerGlobalScope!=="undefined"&&self instanceof WorkerGlobalScope&&typeof self.importScripts==="function")();const ie=Object.freeze({__proto__:null,hasBrowserEnv:ee,hasStandardBrowserWebWorkerEnv:Ae,hasStandardBrowserEnv:te});const ne={...ie,...$};function toURLEncodedForm(e,t){return toFormData(e,new ne.classes.URLSearchParams,Object.assign({visitor:function(e,t,A,i){if(ne.isNode&&P.isBuffer(e)){this.append(t,e.toString("base64"));return false}return i.defaultVisitor.apply(this,arguments)}},t))}function parsePropPath(e){return P.matchAll(/\w+|\[(\w*)]/g,e).map((e=>e[0]==="[]"?"":e[1]||e[0]))}function arrayToObject(e){const t={};const A=Object.keys(e);let i;const n=A.length;let s;for(i=0;i=e.length;n=!n&&P.isArray(A)?A.length:n;if(o){if(P.hasOwnProp(A,n)){A[n]=[A[n],t]}else{A[n]=t}return!s}if(!A[n]||!P.isObject(A[n])){A[n]=[]}const r=buildPath(e,t,A[n],i);if(r&&P.isArray(A[n])){A[n]=arrayToObject(A[n])}return!s}if(P.isFormData(e)&&P.isFunction(e.entries)){const t={};P.forEachEntry(e,((e,A)=>{buildPath(parsePropPath(e),A,t,0)}));return t}return null}function stringifySafely(e,t,A){if(P.isString(e)){try{(t||JSON.parse)(e);return P.trim(e)}catch(e){if(e.name!=="SyntaxError"){throw e}}}return(A||JSON.stringify)(e)}const se={transitional:Z,adapter:["xhr","http"],transformRequest:[function transformRequest(e,t){const A=t.getContentType()||"";const i=A.indexOf("application/json")>-1;const n=P.isObject(e);if(n&&P.isHTMLForm(e)){e=new FormData(e)}const s=P.isFormData(e);if(s){if(!i){return e}return i?JSON.stringify(formDataToJSON(e)):e}if(P.isArrayBuffer(e)||P.isBuffer(e)||P.isStream(e)||P.isFile(e)||P.isBlob(e)){return e}if(P.isArrayBufferView(e)){return e.buffer}if(P.isURLSearchParams(e)){t.setContentType("application/x-www-form-urlencoded;charset=utf-8",false);return e.toString()}let o;if(n){if(A.indexOf("application/x-www-form-urlencoded")>-1){return toURLEncodedForm(e,this.formSerializer).toString()}if((o=P.isFileList(e))||A.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return toFormData(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}if(n||i){t.setContentType("application/json",false);return stringifySafely(e)}return e}],transformResponse:[function transformResponse(e){const t=this.transitional||se.transitional;const A=t&&t.forcedJSONParsing;const i=this.responseType==="json";if(e&&P.isString(e)&&(A&&!this.responseType||i)){const A=t&&t.silentJSONParsing;const n=!A&&i;try{return JSON.parse(e)}catch(e){if(n){if(e.name==="SyntaxError"){throw AxiosError.from(e,AxiosError.ERR_BAD_RESPONSE,this,null,this.response)}throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ne.classes.FormData,Blob:ne.classes.Blob},validateStatus:function validateStatus(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":undefined}}};P.forEach(["delete","get","head","post","put","patch"],(e=>{se.headers[e]={}}));const oe=se;const re=P.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const parseHeaders=e=>{const t={};let A;let i;let n;e&&e.split("\n").forEach((function parser(e){n=e.indexOf(":");A=e.substring(0,n).trim().toLowerCase();i=e.substring(n+1).trim();if(!A||t[A]&&re[A]){return}if(A==="set-cookie"){if(t[A]){t[A].push(i)}else{t[A]=[i]}}else{t[A]=t[A]?t[A]+", "+i:i}}));return t};const ae=Symbol("internals");function normalizeHeader(e){return e&&String(e).trim().toLowerCase()}function normalizeValue(e){if(e===false||e==null){return e}return P.isArray(e)?e.map(normalizeValue):String(e)}function parseTokens(e){const t=Object.create(null);const A=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;while(i=A.exec(e)){t[i[1]]=i[2]}return t}const isValidHeaderName=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function matchHeaderValue(e,t,A,i,n){if(P.isFunction(i)){return i.call(this,t,A)}if(n){t=A}if(!P.isString(t))return;if(P.isString(i)){return t.indexOf(i)!==-1}if(P.isRegExp(i)){return i.test(t)}}function formatHeader(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,A)=>t.toUpperCase()+A))}function buildAccessors(e,t){const A=P.toCamelCase(" "+t);["get","set","has"].forEach((i=>{Object.defineProperty(e,i+A,{value:function(e,A,n){return this[i].call(this,t,e,A,n)},configurable:true})}))}class AxiosHeaders{constructor(e){e&&this.set(e)}set(e,t,A){const i=this;function setHeader(e,t,A){const n=normalizeHeader(t);if(!n){throw new Error("header name must be a non-empty string")}const s=P.findKey(i,n);if(!s||i[s]===undefined||A===true||A===undefined&&i[s]!==false){i[s||t]=normalizeValue(e)}}const setHeaders=(e,t)=>P.forEach(e,((e,A)=>setHeader(e,A,t)));if(P.isPlainObject(e)||e instanceof this.constructor){setHeaders(e,t)}else if(P.isString(e)&&(e=e.trim())&&!isValidHeaderName(e)){setHeaders(parseHeaders(e),t)}else{e!=null&&setHeader(t,e,A)}return this}get(e,t){e=normalizeHeader(e);if(e){const A=P.findKey(this,e);if(A){const e=this[A];if(!t){return e}if(t===true){return parseTokens(e)}if(P.isFunction(t)){return t.call(this,e,A)}if(P.isRegExp(t)){return t.exec(e)}throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){e=normalizeHeader(e);if(e){const A=P.findKey(this,e);return!!(A&&this[A]!==undefined&&(!t||matchHeaderValue(this,this[A],A,t)))}return false}delete(e,t){const A=this;let i=false;function deleteHeader(e){e=normalizeHeader(e);if(e){const n=P.findKey(A,e);if(n&&(!t||matchHeaderValue(A,A[n],n,t))){delete A[n];i=true}}}if(P.isArray(e)){e.forEach(deleteHeader)}else{deleteHeader(e)}return i}clear(e){const t=Object.keys(this);let A=t.length;let i=false;while(A--){const n=t[A];if(!e||matchHeaderValue(this,this[n],n,e,true)){delete this[n];i=true}}return i}normalize(e){const t=this;const A={};P.forEach(this,((i,n)=>{const s=P.findKey(A,n);if(s){t[s]=normalizeValue(i);delete t[n];return}const o=e?formatHeader(n):String(n).trim();if(o!==n){delete t[n]}t[o]=normalizeValue(i);A[o]=true}));return this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);P.forEach(this,((A,i)=>{A!=null&&A!==false&&(t[i]=e&&P.isArray(A)?A.join(", "):A)}));return t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const A=new this(e);t.forEach((e=>A.set(e)));return A}static accessor(e){const t=this[ae]=this[ae]={accessors:{}};const A=t.accessors;const i=this.prototype;function defineAccessor(e){const t=normalizeHeader(e);if(!A[t]){buildAccessors(i,e);A[t]=true}}P.isArray(e)?e.forEach(defineAccessor):defineAccessor(e);return this}}AxiosHeaders.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);P.reduceDescriptors(AxiosHeaders.prototype,(({value:e},t)=>{let A=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[A]=e}}}));P.freezeMethods(AxiosHeaders);const ce=AxiosHeaders;function transformData(e,t){const A=this||oe;const i=t||A;const n=ce.from(i.headers);let s=i.data;P.forEach(e,(function transform(e){s=e.call(A,s,n.normalize(),t?t.status:undefined)}));n.normalize();return s}function isCancel(e){return!!(e&&e.__CANCEL__)}function CanceledError(e,t,A){AxiosError.call(this,e==null?"canceled":e,AxiosError.ERR_CANCELED,t,A);this.name="CanceledError"}P.inherits(CanceledError,AxiosError,{__CANCEL__:true});function settle(e,t,A){const i=A.config.validateStatus;if(!A.status||!i||i(A.status)){e(A)}else{t(new AxiosError("Request failed with status code "+A.status,[AxiosError.ERR_BAD_REQUEST,AxiosError.ERR_BAD_RESPONSE][Math.floor(A.status/100)-4],A.config,A.request,A))}}function isAbsoluteURL(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function combineURLs(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function buildFullPath(e,t){if(e&&!isAbsoluteURL(t)){return combineURLs(e,t)}return t}const le="1.6.1";function parseProtocol(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}const ue=/^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;function fromDataURI(e,t,A){const i=A&&A.Blob||ne.classes.Blob;const n=parseProtocol(e);if(t===undefined&&i){t=true}if(n==="data"){e=n.length?e.slice(n.length+1):e;const A=ue.exec(e);if(!A){throw new AxiosError("Invalid URL",AxiosError.ERR_INVALID_URL)}const s=A[1];const o=A[2];const r=A[3];const a=Buffer.from(decodeURIComponent(r),o?"base64":"utf8");if(t){if(!i){throw new AxiosError("Blob is not supported",AxiosError.ERR_NOT_SUPPORT)}return new i([a],{type:s})}return a}throw new AxiosError("Unsupported protocol "+n,AxiosError.ERR_NOT_SUPPORT)}function throttle(e,t){let A=0;const i=1e3/t;let n=null;return function throttled(t,s){const o=Date.now();if(t||o-A>i){if(n){clearTimeout(n);n=null}A=o;return e.apply(null,s)}if(!n){n=setTimeout((()=>{n=null;A=Date.now();return e.apply(null,s)}),i-(o-A))}}}function speedometer(e,t){e=e||10;const A=new Array(e);const i=new Array(e);let n=0;let s=0;let o;t=t!==undefined?t:1e3;return function push(r){const a=Date.now();const c=i[s];if(!o){o=a}A[n]=r;i[n]=a;let l=s;let u=0;while(l!==n){u+=A[l++];l=l%e}n=(n+1)%e;if(n===s){s=(s+1)%e}if(a-o!P.isUndefined(t[e])));super({readableHighWaterMark:e.chunkSize});const t=this;const A=this[pe]={length:e.length,timeWindow:e.timeWindow,ticksRate:e.ticksRate,chunkSize:e.chunkSize,maxRate:e.maxRate,minChunkSize:e.minChunkSize,bytesSeen:0,isCaptured:false,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null};const i=speedometer(A.ticksRate*e.samplesCount,A.timeWindow);this.on("newListener",(e=>{if(e==="progress"){if(!A.isCaptured){A.isCaptured=true}}}));let n=0;A.updateProgress=throttle((function throttledHandler(){const e=A.length;const s=A.bytesSeen;const o=s-n;if(!o||t.destroyed)return;const r=i(o);n=s;process.nextTick((()=>{t.emit("progress",{loaded:s,total:e,progress:e?s/e:undefined,bytes:o,rate:r?r:undefined,estimated:r&&e&&s<=e?(e-s)/r:undefined})}))}),A.ticksRate);const onFinish=()=>{A.updateProgress(true)};this.once("end",onFinish);this.once("error",onFinish)}_read(e){const t=this[pe];if(t.onReadCallback){t.onReadCallback()}return super._read(e)}_transform(e,t,A){const i=this;const n=this[pe];const s=n.maxRate;const o=this.readableHighWaterMark;const r=n.timeWindow;const a=1e3/r;const c=s/a;const l=n.minChunkSize!==false?Math.max(n.minChunkSize,c*.01):0;function pushChunk(e,t){const A=Buffer.byteLength(e);n.bytesSeen+=A;n.bytes+=A;if(n.isCaptured){n.updateProgress()}if(i.push(e)){process.nextTick(t)}else{n.onReadCallback=()=>{n.onReadCallback=null;process.nextTick(t)}}}const transformChunk=(e,t)=>{const A=Buffer.byteLength(e);let i=null;let a=o;let u;let p=0;if(s){const e=Date.now();if(!n.ts||(p=e-n.ts)>=r){n.ts=e;u=c-n.bytes;n.bytes=u<0?-u:0;p=0}u=c-n.bytes}if(s){if(u<=0){return setTimeout((()=>{t(null,e)}),r-p)}if(ua&&A-a>l){i=e.subarray(a);e=e.subarray(0,a)}pushChunk(e,i?()=>{process.nextTick(t,null,i)}:t)};transformChunk(e,(function transformNextChunk(e,t){if(e){return A(e)}if(t){transformChunk(t,transformNextChunk)}else{A(null)}}))}setLength(e){this[pe].length=+e;return this}}const ge=AxiosTransformStream;const{asyncIterator:de}=Symbol;const readBlob=async function*(e){if(e.stream){yield*e.stream()}else if(e.arrayBuffer){yield await e.arrayBuffer()}else if(e[de]){yield*e[de]()}else{yield e}};const he=readBlob;const Ee=P.ALPHABET.ALPHA_DIGIT+"-_";const Ce=new a.TextEncoder;const Qe="\r\n";const fe=Ce.encode(Qe);const Be=2;class FormDataPart{constructor(e,t){const{escapeName:A}=this.constructor;const i=P.isString(t);let n=`Content-Disposition: form-data; name="${A(e)}"${!i&&t.name?`; filename="${A(t.name)}"`:""}${Qe}`;if(i){t=Ce.encode(String(t).replace(/\r?\n|\r\n?/g,Qe))}else{n+=`Content-Type: ${t.type||"application/octet-stream"}${Qe}`}this.headers=Ce.encode(n+Qe);this.contentLength=i?t.byteLength:t.size;this.size=this.headers.byteLength+this.contentLength+Be;this.name=e;this.value=t}async*encode(){yield this.headers;const{value:e}=this;if(P.isTypedArray(e)){yield e}else{yield*he(e)}yield fe}static escapeName(e){return String(e).replace(/[\r\n"]/g,(e=>({"\r":"%0D","\n":"%0A",'"':"%22"}[e])))}}const formDataToStream=(e,t,A)=>{const{tag:i="form-data-boundary",size:n=25,boundary:s=i+"-"+P.generateString(n,Ee)}=A||{};if(!P.isFormData(e)){throw TypeError("FormData instance required")}if(s.length<1||s.length>70){throw Error("boundary must be 10-70 characters long")}const o=Ce.encode("--"+s+Qe);const r=Ce.encode("--"+s+"--"+Qe+Qe);let a=r.byteLength;const c=Array.from(e.entries()).map((([e,t])=>{const A=new FormDataPart(e,t);a+=A.size;return A}));a+=o.byteLength*c.length;a=P.toFiniteNumber(a);const l={"Content-Type":`multipart/form-data; boundary=${s}`};if(Number.isFinite(a)){l["Content-Length"]=a}t&&t(l);return u.Readable.from(async function*(){for(const e of c){yield o;yield*e.encode()}yield r}())};const Ie=formDataToStream;class ZlibHeaderTransformStream extends B["default"].Transform{__transform(e,t,A){this.push(e);A()}_transform(e,t,A){if(e.length!==0){this._transform=this.__transform;if(e[0]!==120){const e=Buffer.alloc(2);e[0]=120;e[1]=156;this.push(e,t)}}this.__transform(e,t,A)}}const me=ZlibHeaderTransformStream;const callbackify=(e,t)=>P.isAsyncFn(e)?function(...A){const i=A.pop();e.apply(this,A).then((e=>{try{t?i(null,...t(e)):i(null,e)}catch(e){i(e)}}),i)}:e;const be=callbackify;const ye={flush:f["default"].constants.Z_SYNC_FLUSH,finishFlush:f["default"].constants.Z_SYNC_FLUSH};const we={flush:f["default"].constants.BROTLI_OPERATION_FLUSH,finishFlush:f["default"].constants.BROTLI_OPERATION_FLUSH};const ve=P.isFunction(f["default"].createBrotliDecompress);const{http:Re,https:xe}=Q["default"];const De=/https:?/;const ke=ne.protocols.map((e=>e+":"));function dispatchBeforeRedirect(e){if(e.beforeRedirects.proxy){e.beforeRedirects.proxy(e)}if(e.beforeRedirects.config){e.beforeRedirects.config(e)}}function setProxy(e,t,A){let i=t;if(!i&&i!==false){const e=s.getProxyForUrl(A);if(e){i=new URL(e)}}if(i){if(i.username){i.auth=(i.username||"")+":"+(i.password||"")}if(i.auth){if(i.auth.username||i.auth.password){i.auth=(i.auth.username||"")+":"+(i.auth.password||"")}const t=Buffer.from(i.auth,"utf8").toString("base64");e.headers["Proxy-Authorization"]="Basic "+t}e.headers.host=e.hostname+(e.port?":"+e.port:"");const t=i.hostname||i.host;e.hostname=t;e.host=t;e.port=i.port;e.path=A;if(i.protocol){e.protocol=i.protocol.includes(":")?i.protocol:`${i.protocol}:`}}e.beforeRedirects.proxy=function beforeRedirect(e){setProxy(e,t,e.href)}}const Fe=typeof process!=="undefined"&&P.kindOf(process)==="process";const wrapAsync=e=>new Promise(((t,A)=>{let i;let n;const done=(e,t)=>{if(n)return;n=true;i&&i(e,t)};const _resolve=e=>{done(e);t(e)};const _reject=e=>{done(e,true);A(e)};e(_resolve,_reject,(e=>i=e)).catch(_reject)}));const resolveFamily=({address:e,family:t})=>{if(!P.isString(e)){throw TypeError("address must be a string")}return{address:e,family:t||(e.indexOf(".")<0?6:4)}};const buildAddressEntry=(e,t)=>resolveFamily(P.isObject(e)?e:{address:e,family:t});const Se=Fe&&function httpAdapter(e){return wrapAsync((async function dispatchHttpRequest(t,A,i){let{data:n,lookup:s,family:o}=e;const{responseType:r,responseEncoding:a}=e;const c=e.method.toUpperCase();let l;let u=false;let p;if(s){const e=be(s,(e=>P.isArray(e)?e:[e]));s=(t,A,i)=>{e(t,A,((e,t,n)=>{const s=P.isArray(t)?t.map((e=>buildAddressEntry(e))):[buildAddressEntry(t,n)];A.all?i(e,s):i(e,s[0].address,s[0].family)}))}}const g=new I["default"];const onFinished=()=>{if(e.cancelToken){e.cancelToken.unsubscribe(abort)}if(e.signal){e.signal.removeEventListener("abort",abort)}g.removeAllListeners()};i(((e,t)=>{l=true;if(t){u=true;onFinished()}}));function abort(t){g.emit("abort",!t||t.type?new CanceledError(null,e,p):t)}g.once("abort",A);if(e.cancelToken||e.signal){e.cancelToken&&e.cancelToken.subscribe(abort);if(e.signal){e.signal.aborted?abort():e.signal.addEventListener("abort",abort)}}const d=buildFullPath(e.baseURL,e.url);const Q=new URL(d,"http://localhost");const m=Q.protocol||ke[0];if(m==="data:"){let i;if(c!=="GET"){return settle(t,A,{status:405,statusText:"method not allowed",headers:{},config:e})}try{i=fromDataURI(e.url,r==="blob",{Blob:e.env&&e.env.Blob})}catch(t){throw AxiosError.from(t,AxiosError.ERR_BAD_REQUEST,e)}if(r==="text"){i=i.toString(a);if(!a||a==="utf8"){i=P.stripBOM(i)}}else if(r==="stream"){i=B["default"].Readable.from(i)}return settle(t,A,{data:i,status:200,statusText:"OK",headers:new ce,config:e})}if(ke.indexOf(m)===-1){return A(new AxiosError("Unsupported protocol "+m,AxiosError.ERR_BAD_REQUEST,e))}const b=ce.from(e.headers).normalize();b.set("User-Agent","axios/"+le,false);const y=e.onDownloadProgress;const w=e.onUploadProgress;const v=e.maxRate;let R=undefined;let x=undefined;if(P.isSpecCompliantForm(n)){const e=b.getContentType(/boundary=([-_\w\d]{10,70})/i);n=Ie(n,(e=>{b.set(e)}),{tag:`axios-${le}-boundary`,boundary:e&&e[1]||undefined})}else if(P.isFormData(n)&&P.isFunction(n.getHeaders)){b.set(n.getHeaders());if(!b.hasContentLength()){try{const e=await C["default"].promisify(n.getLength).call(n);Number.isFinite(e)&&e>=0&&b.setContentLength(e)}catch(e){}}}else if(P.isBlob(n)){n.size&&b.setContentType(n.type||"application/octet-stream");b.setContentLength(n.size||0);n=B["default"].Readable.from(he(n))}else if(n&&!P.isStream(n)){if(Buffer.isBuffer(n));else if(P.isArrayBuffer(n)){n=Buffer.from(new Uint8Array(n))}else if(P.isString(n)){n=Buffer.from(n,"utf-8")}else{return A(new AxiosError("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",AxiosError.ERR_BAD_REQUEST,e))}b.setContentLength(n.length,false);if(e.maxBodyLength>-1&&n.length>e.maxBodyLength){return A(new AxiosError("Request body larger than maxBodyLength limit",AxiosError.ERR_BAD_REQUEST,e))}}const D=P.toFiniteNumber(b.getContentLength());if(P.isArray(v)){R=v[0];x=v[1]}else{R=x=v}if(n&&(w||R)){if(!P.isStream(n)){n=B["default"].Readable.from(n,{objectMode:false})}n=B["default"].pipeline([n,new ge({length:D,maxRate:P.toFiniteNumber(R)})],P.noop);w&&n.on("progress",(e=>{w(Object.assign(e,{upload:true}))}))}let k=undefined;if(e.auth){const t=e.auth.username||"";const A=e.auth.password||"";k=t+":"+A}if(!k&&Q.username){const e=Q.username;const t=Q.password;k=e+":"+t}k&&b.delete("authorization");let F;try{F=buildURL(Q.pathname+Q.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(t){const i=new Error(t.message);i.config=e;i.url=e.url;i.exists=true;return A(i)}b.set("Accept-Encoding","gzip, compress, deflate"+(ve?", br":""),false);const S={path:F,method:c,headers:b.toJSON(),agents:{http:e.httpAgent,https:e.httpsAgent},auth:k,protocol:m,family:o,beforeRedirect:dispatchBeforeRedirect,beforeRedirects:{}};!P.isUndefined(s)&&(S.lookup=s);if(e.socketPath){S.socketPath=e.socketPath}else{S.hostname=Q.hostname;S.port=Q.port;setProxy(S,e.proxy,m+"//"+Q.hostname+(Q.port?":"+Q.port:"")+S.path)}let N;const U=De.test(S.protocol);S.agent=U?e.httpsAgent:e.httpAgent;if(e.transport){N=e.transport}else if(e.maxRedirects===0){N=U?E["default"]:h["default"]}else{if(e.maxRedirects){S.maxRedirects=e.maxRedirects}if(e.beforeRedirect){S.beforeRedirects.config=e.beforeRedirect}N=U?xe:Re}if(e.maxBodyLength>-1){S.maxBodyLength=e.maxBodyLength}else{S.maxBodyLength=Infinity}if(e.insecureHTTPParser){S.insecureHTTPParser=e.insecureHTTPParser}p=N.request(S,(function handleResponse(i){if(p.destroyed)return;const n=[i];const s=+i.headers["content-length"];if(y){const e=new ge({length:P.toFiniteNumber(s),maxRate:P.toFiniteNumber(x)});y&&e.on("progress",(e=>{y(Object.assign(e,{download:true}))}));n.push(e)}let o=i;const l=i.req||p;if(e.decompress!==false&&i.headers["content-encoding"]){if(c==="HEAD"||i.statusCode===204){delete i.headers["content-encoding"]}switch((i.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":n.push(f["default"].createUnzip(ye));delete i.headers["content-encoding"];break;case"deflate":n.push(new me);n.push(f["default"].createUnzip(ye));delete i.headers["content-encoding"];break;case"br":if(ve){n.push(f["default"].createBrotliDecompress(we));delete i.headers["content-encoding"]}}}o=n.length>1?B["default"].pipeline(n,P.noop):n[0];const d=B["default"].finished(o,(()=>{d();onFinished()}));const h={status:i.statusCode,statusText:i.statusMessage,headers:new ce(i.headers),config:e,request:l};if(r==="stream"){h.data=o;settle(t,A,h)}else{const i=[];let n=0;o.on("data",(function handleStreamData(t){i.push(t);n+=t.length;if(e.maxContentLength>-1&&n>e.maxContentLength){u=true;o.destroy();A(new AxiosError("maxContentLength size of "+e.maxContentLength+" exceeded",AxiosError.ERR_BAD_RESPONSE,e,l))}}));o.on("aborted",(function handlerStreamAborted(){if(u){return}const t=new AxiosError("maxContentLength size of "+e.maxContentLength+" exceeded",AxiosError.ERR_BAD_RESPONSE,e,l);o.destroy(t);A(t)}));o.on("error",(function handleStreamError(t){if(p.destroyed)return;A(AxiosError.from(t,null,e,l))}));o.on("end",(function handleStreamEnd(){try{let e=i.length===1?i[0]:Buffer.concat(i);if(r!=="arraybuffer"){e=e.toString(a);if(!a||a==="utf8"){e=P.stripBOM(e)}}h.data=e}catch(t){return A(AxiosError.from(t,null,e,h.request,h))}settle(t,A,h)}))}g.once("abort",(e=>{if(!o.destroyed){o.emit("error",e);o.destroy()}}))}));g.once("abort",(e=>{A(e);p.destroy(e)}));p.on("error",(function handleRequestError(t){A(AxiosError.from(t,null,e,p))}));p.on("socket",(function handleRequestSocket(e){e.setKeepAlive(true,1e3*60)}));if(e.timeout){const t=parseInt(e.timeout,10);if(Number.isNaN(t)){A(new AxiosError("error trying to parse `config.timeout` to int",AxiosError.ERR_BAD_OPTION_VALUE,e,p));return}p.setTimeout(t,(function handleRequestTimeout(){if(l)return;let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||Z;if(e.timeoutErrorMessage){t=e.timeoutErrorMessage}A(new AxiosError(t,i.clarifyTimeoutError?AxiosError.ETIMEDOUT:AxiosError.ECONNABORTED,e,p));abort()}))}if(P.isStream(n)){let t=false;let A=false;n.on("end",(()=>{t=true}));n.once("error",(e=>{A=true;p.destroy(e)}));n.on("close",(()=>{if(!t&&!A){abort(new CanceledError("Request stream has been aborted",e,p))}}));n.pipe(p)}else{p.end(n)}}))};const Ne=ne.hasStandardBrowserEnv?function standardBrowserEnv(){return{write:function write(e,t,A,i,n,s){const o=[];o.push(e+"="+encodeURIComponent(t));if(P.isNumber(A)){o.push("expires="+new Date(A).toGMTString())}if(P.isString(i)){o.push("path="+i)}if(P.isString(n)){o.push("domain="+n)}if(s===true){o.push("secure")}document.cookie=o.join("; ")},read:function read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function remove(e){this.write(e,"",Date.now()-864e5)}}}():function nonStandardBrowserEnv(){return{write:function write(){},read:function read(){return null},remove:function remove(){}}}();const Ue=ne.hasStandardBrowserEnv?function standardBrowserEnv(){const e=/(msie|trident)/i.test(navigator.userAgent);const t=document.createElement("a");let A;function resolveURL(A){let i=A;if(e){t.setAttribute("href",i);i=t.href}t.setAttribute("href",i);return{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:t.pathname.charAt(0)==="/"?t.pathname:"/"+t.pathname}}A=resolveURL(window.location.href);return function isURLSameOrigin(e){const t=P.isString(e)?resolveURL(e):e;return t.protocol===A.protocol&&t.host===A.host}}():function nonStandardBrowserEnv(){return function isURLSameOrigin(){return true}}();function progressEventReducer(e,t){let A=0;const i=speedometer(50,250);return n=>{const s=n.loaded;const o=n.lengthComputable?n.total:undefined;const r=s-A;const a=i(r);const c=s<=o;A=s;const l={loaded:s,total:o,progress:o?s/o:undefined,bytes:r,rate:a?a:undefined,estimated:a&&o&&c?(o-s)/a:undefined,event:n};l[t?"download":"upload"]=true;e(l)}}const Le=typeof XMLHttpRequest!=="undefined";const Me=Le&&function(e){return new Promise((function dispatchXhrRequest(t,A){let i=e.data;const n=ce.from(e.headers).normalize();const s=e.responseType;let o;function done(){if(e.cancelToken){e.cancelToken.unsubscribe(o)}if(e.signal){e.signal.removeEventListener("abort",o)}}let r;if(P.isFormData(i)){if(ne.hasStandardBrowserEnv||ne.hasStandardBrowserWebWorkerEnv){n.setContentType(false)}else if((r=n.getContentType())!==false){const[e,...t]=r?r.split(";").map((e=>e.trim())).filter(Boolean):[];n.setContentType([e||"multipart/form-data",...t].join("; "))}}let a=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"";const A=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.set("Authorization","Basic "+btoa(t+":"+A))}const c=buildFullPath(e.baseURL,e.url);a.open(e.method.toUpperCase(),buildURL(c,e.params,e.paramsSerializer),true);a.timeout=e.timeout;function onloadend(){if(!a){return}const i=ce.from("getAllResponseHeaders"in a&&a.getAllResponseHeaders());const n=!s||s==="text"||s==="json"?a.responseText:a.response;const o={data:n,status:a.status,statusText:a.statusText,headers:i,config:e,request:a};settle((function _resolve(e){t(e);done()}),(function _reject(e){A(e);done()}),o);a=null}if("onloadend"in a){a.onloadend=onloadend}else{a.onreadystatechange=function handleLoad(){if(!a||a.readyState!==4){return}if(a.status===0&&!(a.responseURL&&a.responseURL.indexOf("file:")===0)){return}setTimeout(onloadend)}}a.onabort=function handleAbort(){if(!a){return}A(new AxiosError("Request aborted",AxiosError.ECONNABORTED,e,a));a=null};a.onerror=function handleError(){A(new AxiosError("Network Error",AxiosError.ERR_NETWORK,e,a));a=null};a.ontimeout=function handleTimeout(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const i=e.transitional||Z;if(e.timeoutErrorMessage){t=e.timeoutErrorMessage}A(new AxiosError(t,i.clarifyTimeoutError?AxiosError.ETIMEDOUT:AxiosError.ECONNABORTED,e,a));a=null};if(ne.hasStandardBrowserEnv){const t=Ue(c)&&e.xsrfCookieName&&Ne.read(e.xsrfCookieName);if(t){n.set(e.xsrfHeaderName,t)}}i===undefined&&n.setContentType(null);if("setRequestHeader"in a){P.forEach(n.toJSON(),(function setRequestHeader(e,t){a.setRequestHeader(t,e)}))}if(!P.isUndefined(e.withCredentials)){a.withCredentials=!!e.withCredentials}if(s&&s!=="json"){a.responseType=e.responseType}if(typeof e.onDownloadProgress==="function"){a.addEventListener("progress",progressEventReducer(e.onDownloadProgress,true))}if(typeof e.onUploadProgress==="function"&&a.upload){a.upload.addEventListener("progress",progressEventReducer(e.onUploadProgress))}if(e.cancelToken||e.signal){o=t=>{if(!a){return}A(!t||t.type?new CanceledError(null,e,a):t);a.abort();a=null};e.cancelToken&&e.cancelToken.subscribe(o);if(e.signal){e.signal.aborted?o():e.signal.addEventListener("abort",o)}}const l=parseProtocol(c);if(l&&ne.protocols.indexOf(l)===-1){A(new AxiosError("Unsupported protocol "+l+":",AxiosError.ERR_BAD_REQUEST,e));return}a.send(i||null)}))};const Te={http:Se,xhr:Me};P.forEach(Te,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const renderReason=e=>`- ${e}`;const isResolvedHandle=e=>P.isFunction(e)||e===null||e===false;const _e={getAdapter:e=>{e=P.isArray(e)?e:[e];const{length:t}=e;let A;let i;const n={};for(let s=0;s`adapter ${e} `+(t===false?"is not supported by the environment":"is not available in the build")));let A=t?e.length>1?"since :\n"+e.map(renderReason).join("\n"):" "+renderReason(e[0]):"as no adapter specified";throw new AxiosError(`There is no suitable adapter to dispatch the request `+A,"ERR_NOT_SUPPORT")}return i},adapters:Te};function throwIfCancellationRequested(e){if(e.cancelToken){e.cancelToken.throwIfRequested()}if(e.signal&&e.signal.aborted){throw new CanceledError(null,e)}}function dispatchRequest(e){throwIfCancellationRequested(e);e.headers=ce.from(e.headers);e.data=transformData.call(e,e.transformRequest);if(["post","put","patch"].indexOf(e.method)!==-1){e.headers.setContentType("application/x-www-form-urlencoded",false)}const t=_e.getAdapter(e.adapter||oe.adapter);return t(e).then((function onAdapterResolution(t){throwIfCancellationRequested(e);t.data=transformData.call(e,e.transformResponse,t);t.headers=ce.from(t.headers);return t}),(function onAdapterRejection(t){if(!isCancel(t)){throwIfCancellationRequested(e);if(t&&t.response){t.response.data=transformData.call(e,e.transformResponse,t.response);t.response.headers=ce.from(t.response.headers)}}return Promise.reject(t)}))}const headersToObject=e=>e instanceof ce?e.toJSON():e;function mergeConfig(e,t){t=t||{};const A={};function getMergedValue(e,t,A){if(P.isPlainObject(e)&&P.isPlainObject(t)){return P.merge.call({caseless:A},e,t)}else if(P.isPlainObject(t)){return P.merge({},t)}else if(P.isArray(t)){return t.slice()}return t}function mergeDeepProperties(e,t,A){if(!P.isUndefined(t)){return getMergedValue(e,t,A)}else if(!P.isUndefined(e)){return getMergedValue(undefined,e,A)}}function valueFromConfig2(e,t){if(!P.isUndefined(t)){return getMergedValue(undefined,t)}}function defaultToConfig2(e,t){if(!P.isUndefined(t)){return getMergedValue(undefined,t)}else if(!P.isUndefined(e)){return getMergedValue(undefined,e)}}function mergeDirectKeys(A,i,n){if(n in t){return getMergedValue(A,i)}else if(n in e){return getMergedValue(undefined,A)}}const i={url:valueFromConfig2,method:valueFromConfig2,data:valueFromConfig2,baseURL:defaultToConfig2,transformRequest:defaultToConfig2,transformResponse:defaultToConfig2,paramsSerializer:defaultToConfig2,timeout:defaultToConfig2,timeoutMessage:defaultToConfig2,withCredentials:defaultToConfig2,adapter:defaultToConfig2,responseType:defaultToConfig2,xsrfCookieName:defaultToConfig2,xsrfHeaderName:defaultToConfig2,onUploadProgress:defaultToConfig2,onDownloadProgress:defaultToConfig2,decompress:defaultToConfig2,maxContentLength:defaultToConfig2,maxBodyLength:defaultToConfig2,beforeRedirect:defaultToConfig2,transport:defaultToConfig2,httpAgent:defaultToConfig2,httpsAgent:defaultToConfig2,cancelToken:defaultToConfig2,socketPath:defaultToConfig2,responseEncoding:defaultToConfig2,validateStatus:mergeDirectKeys,headers:(e,t)=>mergeDeepProperties(headersToObject(e),headersToObject(t),true)};P.forEach(Object.keys(Object.assign({},e,t)),(function computeConfigValue(n){const s=i[n]||mergeDeepProperties;const o=s(e[n],t[n],n);P.isUndefined(o)&&s!==mergeDirectKeys||(A[n]=o)}));return A}const Ye={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Ye[e]=function validator(A){return typeof A===e||"a"+(t<1?"n ":" ")+e}}));const He={};Ye.transitional=function transitional(e,t,A){function formatMessage(e,t){return"[Axios v"+le+"] Transitional option '"+e+"'"+t+(A?". "+A:"")}return(A,i,n)=>{if(e===false){throw new AxiosError(formatMessage(i," has been removed"+(t?" in "+t:"")),AxiosError.ERR_DEPRECATED)}if(t&&!He[i]){He[i]=true;console.warn(formatMessage(i," has been deprecated since v"+t+" and will be removed in the near future"))}return e?e(A,i,n):true}};function assertOptions(e,t,A){if(typeof e!=="object"){throw new AxiosError("options must be an object",AxiosError.ERR_BAD_OPTION_VALUE)}const i=Object.keys(e);let n=i.length;while(n-- >0){const s=i[n];const o=t[s];if(o){const t=e[s];const A=t===undefined||o(t,s,e);if(A!==true){throw new AxiosError("option "+s+" must be "+A,AxiosError.ERR_BAD_OPTION_VALUE)}continue}if(A!==true){throw new AxiosError("Unknown option "+s,AxiosError.ERR_BAD_OPTION)}}}const Je={assertOptions:assertOptions,validators:Ye};const Ge=Je.validators;class Axios{constructor(e){this.defaults=e;this.interceptors={request:new X,response:new X}}request(e,t){if(typeof e==="string"){t=t||{};t.url=e}else{t=e||{}}t=mergeConfig(this.defaults,t);const{transitional:A,paramsSerializer:i,headers:n}=t;if(A!==undefined){Je.assertOptions(A,{silentJSONParsing:Ge.transitional(Ge.boolean),forcedJSONParsing:Ge.transitional(Ge.boolean),clarifyTimeoutError:Ge.transitional(Ge.boolean)},false)}if(i!=null){if(P.isFunction(i)){t.paramsSerializer={serialize:i}}else{Je.assertOptions(i,{encode:Ge.function,serialize:Ge.function},true)}}t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=n&&P.merge(n.common,n[t.method]);n&&P.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]}));t.headers=ce.concat(s,n);const o=[];let r=true;this.interceptors.request.forEach((function unshiftRequestInterceptors(e){if(typeof e.runWhen==="function"&&e.runWhen(t)===false){return}r=r&&e.synchronous;o.unshift(e.fulfilled,e.rejected)}));const a=[];this.interceptors.response.forEach((function pushResponseInterceptors(e){a.push(e.fulfilled,e.rejected)}));let c;let l=0;let u;if(!r){const e=[dispatchRequest.bind(this),undefined];e.unshift.apply(e,o);e.push.apply(e,a);u=e.length;c=Promise.resolve(t);while(l{if(!A._listeners)return;let t=A._listeners.length;while(t-- >0){A._listeners[t](e)}A._listeners=null}));this.promise.then=e=>{let t;const i=new Promise((e=>{A.subscribe(e);t=e})).then(e);i.cancel=function reject(){A.unsubscribe(t)};return i};e((function cancel(e,i,n){if(A.reason){return}A.reason=new CanceledError(e,i,n);t(A.reason)}))}throwIfRequested(){if(this.reason){throw this.reason}}subscribe(e){if(this.reason){e(this.reason);return}if(this._listeners){this._listeners.push(e)}else{this._listeners=[e]}}unsubscribe(e){if(!this._listeners){return}const t=this._listeners.indexOf(e);if(t!==-1){this._listeners.splice(t,1)}}static source(){let e;const t=new CancelToken((function executor(t){e=t}));return{token:t,cancel:e}}}const Ve=CancelToken;function spread(e){return function wrap(t){return e.apply(null,t)}}function isAxiosError(e){return P.isObject(e)&&e.isAxiosError===true}const Pe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Pe).forEach((([e,t])=>{Pe[t]=e}));const qe=Pe;function createInstance(e){const t=new Oe(e);const A=bind(Oe.prototype.request,t);P.extend(A,Oe.prototype,t,{allOwnKeys:true});P.extend(A,t,null,{allOwnKeys:true});A.create=function create(t){return createInstance(mergeConfig(e,t))};return A}const We=createInstance(oe);We.Axios=Oe;We.CanceledError=CanceledError;We.CancelToken=Ve;We.isCancel=isCancel;We.VERSION=le;We.toFormData=toFormData;We.AxiosError=AxiosError;We.Cancel=We.CanceledError;We.all=function all(e){return Promise.all(e)};We.spread=spread;We.isAxiosError=isAxiosError;We.mergeConfig=mergeConfig;We.AxiosHeaders=ce;We.formToJSON=e=>formDataToJSON(P.isHTMLForm(e)?new FormData(e):e);We.getAdapter=_e.getAdapter;We.HttpStatusCode=qe;We.default=We;e.exports=We},7797:e=>{e.exports=JSON.parse('{"name":"@slack/web-api","version":"6.9.1","description":"Official library for using the Slack Platform\'s Web API","author":"Slack Technologies, LLC","license":"MIT","keywords":["slack","web-api","bot","client","http","api","proxy","rate-limiting","pagination"],"main":"dist/index.js","types":"./dist/index.d.ts","files":["dist/**/*"],"engines":{"node":">= 12.13.0","npm":">= 6.12.0"},"repository":"slackapi/node-slack-sdk","homepage":"https://slack.dev/node-slack-sdk/web-api","publishConfig":{"access":"public"},"bugs":{"url":"https://github.com/slackapi/node-slack-sdk/issues"},"scripts":{"prepare":"npm run build","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist ./coverage ./.nyc_output","lint":"eslint --ext .ts src","test":"npm run lint && npm run build && npm run test:mocha && npm run test:types","test:mocha":"nyc mocha --config .mocharc.json src/*.spec.js","test:types":"tsd","coverage":"codecov -F webapi --root=$PWD","ref-docs:model":"api-extractor run","watch":"npx nodemon --watch \'src\' --ext \'ts\' --exec npm run build","build:deno":"esbuild --bundle --define:process.cwd=String --define:process.version=\'\\"v1.15.2\\"\' --define:process.title=\'\\"deno\\"\' --define:Buffer=dummy_buffer --inject:./deno-shims/buffer-shim.js --inject:./deno-shims/xhr-shim.js --target=esnext --format=esm --outfile=./mod.js src/index.ts"},"dependencies":{"@slack/logger":"^3.0.0","@slack/types":"^2.8.0","@types/is-stream":"^1.1.0","@types/node":">=12.0.0","axios":"^1.6.0","eventemitter3":"^3.1.0","form-data":"^2.5.0","is-electron":"2.2.2","is-stream":"^1.1.0","p-queue":"^6.6.1","p-retry":"^4.0.0"},"devDependencies":{"@aoberoi/capture-console":"^1.1.0","@microsoft/api-extractor":"^7.3.4","@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@typescript-eslint/eslint-plugin":"^4.4.1","@typescript-eslint/parser":"^4.4.0","busboy":"^1.6.0","chai":"^4.2.0","codecov":"^3.2.0","esbuild":"^0.13.15","eslint":"^7.32.0","eslint-config-airbnb-base":"^14.2.1","eslint-config-airbnb-typescript":"^12.3.1","eslint-plugin-import":"^2.22.1","eslint-plugin-jsdoc":"^30.6.1","eslint-plugin-node":"^11.1.0","mocha":"^9.1.0","nock":"^13.2.6","nyc":"^15.1.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^7.2.7","source-map-support":"^0.5.10","ts-node":"^10.8.1","tsd":"0.29.0","typescript":"^4.1"},"tsd":{"directory":"test/types"}}')},4558:e=>{e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')}};var __webpack_module_cache__={};function __nccwpck_require__(e){var t=__webpack_module_cache__[e];if(t!==undefined){return t.exports}var A=__webpack_module_cache__[e]={exports:{}};var i=true;try{__webpack_modules__[e].call(A.exports,A,A.exports,__nccwpck_require__);i=false}finally{if(i)delete __webpack_module_cache__[e]}return A.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=new URL(".",import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";var __webpack_exports__={};(()=>{var e=__nccwpck_require__(5201);var t=__nccwpck_require__(9093);var A=__nccwpck_require__(7147);const i=JSON.parse('{"name":"mint-data-exporter","version":"0.0.1","description":"Browser extension to export your data from Mint. Built by the team at Monarch Money.","scripts":{"build":"tsc --noEmit && vite build","build:beta":"tsc --noEmit && cross-env IS_BETA=1 vite build","build:firefox":"tsc --noEmit && cross-env __FIREFOX__=true vite build","build:watch":"cross-env __DEV__=true vite build -w --mode development","build:firefox:watch":"cross-env __DEV__=true __FIREFOX__=true vite build -w --mode development","build:hmr":"rollup --config utils/reload/rollup.config.ts","wss":"node utils/reload/initReloadServer.js","dev":"pnpm build:hmr && (run-p wss build:watch)","dev:firefox":"pnpm build:hmr && (run-p wss build:firefox:watch)","test":"jest","commitlint":"commitlint --edit","lint":"eslint src --ext .ts","lint:fix":"pnpm lint --fix","prettier":"prettier . --write","prepare":"husky install"},"type":"module","dependencies":{"autoprefixer":"^10.4.16","clsx":"^2.0.0","construct-style-sheets-polyfill":"^3.1.0","jszip":"3.10.1","luxon":"3.4.3","pluralize":"^8.0.0","postcss":"^8.4.31","react":"18.2.0","react-dom":"18.2.0","tailwind-merge":"^2.0.0","tailwindcss":"^3.3.5","webextension-polyfill":"^0.10.0"},"devDependencies":{"@rollup/plugin-typescript":"^8.5.0","@testing-library/react":"13.4.0","@types/chrome":"0.0.224","@types/jest":"29.0.3","@types/luxon":"3.3.4","@types/node":"18.15.11","@types/pluralize":"^0.0.33","@types/react":"18.2.29","@types/react-dom":"18.2.15","@types/ws":"^8.5.4","@typescript-eslint/eslint-plugin":"^6.7.5","@typescript-eslint/parser":"^6.7.5","@vitejs/plugin-react":"2.2.0","chokidar":"^3.5.3","chrome-webstore-upload":"^1.0.0","cross-env":"^7.0.3","dotenv":"^16.3.1","eslint":"^8.36.0","eslint-config-airbnb-typescript":"^17.1.0","eslint-config-prettier":"^9.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","fs-extra":"11.1.0","husky":"^8.0.0","isomorphic-fetch":"3.0.0","jest":"29.0.3","jest-environment-jsdom":"29.5.0","lint-staged":"^14.0.1","npm-run-all":"^4.1.5","prettier":"^3.0.3","prettier-plugin-tailwindcss":"^0.5.6","rollup":"2.79.1","sass":"1.62.1","ts-jest":"29.0.2","ts-loader":"9.4.2","ts-node":"^10.9.1","tslib":"^2.6.2","typescript":"4.9.5","vite":"3.2.7","vite-plugin-conditional-compiler":"^0.2.1","ws":"8.13.0"},"lint-staged":{"*.{js,jsx,ts,tsx}":["prettier --write","eslint --fix"]},"packageManager":"pnpm@8.9.2"}');const n="./chrome-extension-beta.zip";const s=process.env.COMMIT_MSG;const o=process.env.COMMIT_SHA;const run=async()=>{try{if(!process.env.SLACK_BOT_TOKEN){throw new TypeError("SLACK_BOT_TOKEN is not set")}if(!process.env.SLACK_CHANNEL_ID){throw new TypeError("SLACK_CHANNEL_ID is not set")}const i=new e.WebClient(process.env.SLACK_BOT_TOKEN);const r=A.existsSync(n);if(!r){t.info("chrome-extension-beta.zip does not exist. Skipping notification.");return}const a=determineVersion();await i.files.uploadV2({channel_id:process.env.SLACK_CHANNEL_ID,file:n,filename:`chrome-extension-${a}.zip`,initial_comment:[`✨ *New beta release available (\`v${a}\`)*`,s&&o&&`> ${s} ()`,`To learn how to test it locally, follow .`].filter(Boolean).join("\n")})}catch(e){t.setFailed(e.message)}};const determineVersion=()=>{const{version:e}=i;const t=process.env.GITHUB_RUN_NUMBER;return t?`${e}.${t}`:`${e}-beta`};run()})(); \ No newline at end of file diff --git a/.github/actions/release-beta/package.json b/.github/actions/release-beta/package.json new file mode 100644 index 0000000..a71cf08 --- /dev/null +++ b/.github/actions/release-beta/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "version": "1.0.0", + "description": "Notify beta release on Slack", + "main": "dist/index.mjs", + "scripts": { + "build": "ncc --no-source-map-register -m -o dist build src/index.mjs" + }, + "dependencies": { + "@actions/core": "^1.10.1", + "@slack/web-api": "^6.9.1" + }, + "devDependencies": { + "@vercel/ncc": "^0.38.1" + } +} diff --git a/.github/actions/release-beta/pnpm-lock.yaml b/.github/actions/release-beta/pnpm-lock.yaml new file mode 100644 index 0000000..ed6b314 --- /dev/null +++ b/.github/actions/release-beta/pnpm-lock.yaml @@ -0,0 +1,232 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@actions/core': + specifier: ^1.10.1 + version: 1.10.1 + '@slack/web-api': + specifier: ^6.9.1 + version: 6.9.1 + +devDependencies: + '@vercel/ncc': + specifier: ^0.38.1 + version: 0.38.1 + +packages: + + /@actions/core@1.10.1: + resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} + dependencies: + '@actions/http-client': 2.2.0 + uuid: 8.3.2 + dev: false + + /@actions/http-client@2.2.0: + resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==} + dependencies: + tunnel: 0.0.6 + undici: 5.27.2 + dev: false + + /@fastify/busboy@2.0.0: + resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + engines: {node: '>=14'} + dev: false + + /@slack/logger@3.0.0: + resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dependencies: + '@types/node': 20.9.0 + dev: false + + /@slack/types@2.9.0: + resolution: {integrity: sha512-YfZGo0xVOmI7CHhiwCmEC33HzjQl1lakNmyo5GPGb4KHKEaUoY7zenAdKsYCJqYwdaM9OL+hqYt/tZ2zgvVc7g==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dev: false + + /@slack/web-api@6.9.1: + resolution: {integrity: sha512-YqGbuiEJruhiDDsFb1EX6TqWNpyFoApJgkD9D0MQPaipiJyMUadscl8Vs2jfxkjNR0LspVQiCSDoeNWJK34GhQ==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dependencies: + '@slack/logger': 3.0.0 + '@slack/types': 2.9.0 + '@types/is-stream': 1.1.0 + '@types/node': 20.9.0 + axios: 1.6.1 + eventemitter3: 3.1.2 + form-data: 2.5.1 + is-electron: 2.2.2 + is-stream: 1.1.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + transitivePeerDependencies: + - debug + dev: false + + /@types/is-stream@1.1.0: + resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} + dependencies: + '@types/node': 20.9.0 + dev: false + + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false + + /@vercel/ncc@0.38.1: + resolution: {integrity: sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==} + hasBin: true + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /axios@1.6.1: + resolution: {integrity: sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /eventemitter3@3.1.2: + resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} + dev: false + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false + + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + dev: false + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: false + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: false + + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false + + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false + + /undici@5.27.2: + resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.0.0 + dev: false + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false diff --git a/.github/actions/release-beta/src/index.mjs b/.github/actions/release-beta/src/index.mjs new file mode 100644 index 0000000..b812494 --- /dev/null +++ b/.github/actions/release-beta/src/index.mjs @@ -0,0 +1,61 @@ +import { WebClient } from '@slack/web-api'; +import core from '@actions/core'; +import fs from 'fs'; + +import packageJson from '../../../../package.json'; + +const EXTENSION_ZIP_PATH = './chrome-extension-beta.zip'; + +// Not used for now, but should be added to the message in the future +const COMMIT_MESSAGE = process.env.COMMIT_MSG; +const COMMIT_SHA = process.env.COMMIT_SHA; + +const run = async () => { + try { + if (!process.env.SLACK_BOT_TOKEN) { + throw new TypeError('SLACK_BOT_TOKEN is not set'); + } + + if (!process.env.SLACK_CHANNEL_ID) { + throw new TypeError('SLACK_CHANNEL_ID is not set'); + } + + const slack = new WebClient(process.env.SLACK_BOT_TOKEN); + const zipExists = fs.existsSync(EXTENSION_ZIP_PATH); + + if (!zipExists) { + core.info('chrome-extension-beta.zip does not exist. Skipping notification.'); + return; + } + + const version = determineVersion(); + + await slack.files.uploadV2({ + channel_id: process.env.SLACK_CHANNEL_ID, + file: EXTENSION_ZIP_PATH, + filename: `chrome-extension-${version}.zip`, + initial_comment: [ + `✨ *New beta release available (\`v${version}\`)*`, + COMMIT_MESSAGE && + COMMIT_SHA && + `> ${COMMIT_MESSAGE} ()`, + `To learn how to test it locally, follow .`, + ] + .filter(Boolean) + .join('\n'), + }); + } catch (e) { + core.setFailed(e.message); + } +}; + +const determineVersion = () => { + const { version } = packageJson; + const runNumber = process.env.GITHUB_RUN_NUMBER; + return runNumber ? `${version}.${runNumber}` : `${version}-beta`; +}; + +run(); diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..3a3cce5 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "npm" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" diff --git a/.github/img/banner.png b/.github/img/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..622afd6458af9fa7ea92bf64cf96382455f61804 GIT binary patch literal 124583 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

$^n;KjRePu1CV2%pjn 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

n0X+h4; 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 Vn(ZTD7;OLm002ovPDHLkV1jq}KYRcH literal 0 HcmV?d00001 diff --git a/.github/workflows/release-beta.yml b/.github/workflows/release-beta.yml new file mode 100644 index 0000000..594e998 --- /dev/null +++ b/.github/workflows/release-beta.yml @@ -0,0 +1,50 @@ +name: Build and release Beta Version + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + env: + VITE_SENTRY_DSN: ${{ secrets.VITE_SENTRY_DSN }} + VITE_COMMIT_SHA: ${{ github.sha }} + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + cache: pnpm + node-version-file: .nvmrc + registry-url: https://registry.npmjs.org + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - name: Install dependencies + run: pnpm install + - name: Build and package extension + run: pnpm build:beta && zip -r chrome-extension-beta.zip dist + - name: Upload extension to Slack + uses: ./.github/actions/release-beta + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} + SLACK_CHANNEL_ID: ${{ vars.SLACK_CHANNEL_ID }} + # The commit message is only present on push events + COMMIT_MSG: ${{ github.event.head_commit.message }} + COMMIT_SHA: ${{ github.sha }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..0fb2291 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +name: Build and release to Chrome Web Store + +on: + push: + tags: + - v* + +jobs: + build: + runs-on: ubuntu-latest + env: + EXTENSION_ID: ${{ vars.EXTENSION_ID }} + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + cache: pnpm + node-version-file: .nvmrc + registry-url: https://registry.npmjs.org + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - name: Install dependencies + run: | + pnpm install + pnpm add -g chrome-webstore-upload-cli + - name: Build and zip extension + run: pnpm build && zip -r chrome-extension.zip dist + - name: Upload to Chrome Web Store + run: | + chrome-webstore-upload upload \ + --source chrome-extension.zip \ + --extension-id ${{ env.EXTENSION_ID }} \ + --client-id ${{ secrets.GOOGLE_CLIENT_ID }} \ + --client-secret ${{ secrets.GOOGLE_CLIENT_SECRET }} \ + --refresh-token ${{ secrets.GOOGLE_REFRESH_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..bb0d57e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: Build + +on: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version-file: ".nvmrc" + - uses: actions/cache@v3 + with: + path: node_modules + key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }} + - uses: pnpm/action-setup@v2 + - run: pnpm install --frozen-lockfile + # Right now, just test if it builds. Later on we can run tests. + - run: pnpm build diff --git a/.github/workflows/update-assignees.yml b/.github/workflows/update-assignees.yml new file mode 100644 index 0000000..071478a --- /dev/null +++ b/.github/workflows/update-assignees.yml @@ -0,0 +1,17 @@ +name: Update Assignees + +on: + pull_request: + types: + - opened + - reopened + +jobs: + update-assignees: + runs-on: ubuntu-latest + if: ${{ github.actor != 'dependabot[bot]' }} + steps: + - uses: actions-ecosystem/action-add-assignees@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + assignees: ${{ github.actor }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..43c4450 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +.env* + +# dependencies +node_modules + +# testing +/coverage + +# build +/dist +dist.zip + +# etc +.DS_Store +.env.local +.idea + +# compiled +utils/reload/*.js +utils/reload/injections/*.js +public/manifest.json + +# Sentry Config File +.env.sentry-build-plugin diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..a5a29d9 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm lint-staged diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..7a8a624 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +public-hoist-pattern[]=@testing-library/dom diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..b460d6f --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +18.12.1 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f7fb90b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,10 @@ +dist +node_modules +.gitignore +.eslintignore +.husky +.nvmrc +.prettierignore +LICENSE +*.md +pnpm-lock.yaml \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..7007359 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,14 @@ +{ + "arrowParens": "always", + "bracketSameLine": true, + "htmlWhitespaceSensitivity": "strict", + "jsxBracketSameLine": false, + "parser": "typescript", + "printWidth": 100, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false, + "plugins": ["prettier-plugin-tailwindcss"], + "tailwindConfig": "./tailwind.config.js" +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a1cc3c0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 Seo Jong Hak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/LICENSE-GPL b/LICENSE-GPL new file mode 100644 index 0000000..3dbf225 --- /dev/null +++ b/LICENSE-GPL @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + Mint Data Exporter, by Monarch Money + Copyright (C) 2023 Monarch Money + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Mint Data Exporter, by Monarch Money Copyright (C) 2023 Monarch Money + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 0000000..b23d4b3 --- /dev/null +++ b/README.md @@ -0,0 +1,170 @@ + +

+ +## Table of Contents + +- [Intro](#intro) +- [Features](#features) +- [Installation](#installation) + - [Procedures](#procedures) + - [Chrome](#chrome) + - [Firefox](#firefox) +- [Screenshots](#screenshots) + - [NewTab](#newtab) + - [Popup](#popup) +- [Examples](#examples) +- [Documents](#documents) + +## Intro + +This boilerplate is made for creating chrome extensions using React and Typescript. +> The focus was on improving the build speed and development experience with Vite. + +## Features + +- [React 18](https://reactjs.org/) +- [TypeScript](https://www.typescriptlang.org/) +- [Jest](https://jestjs.io/) +- [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) +- [Vite](https://vitejs.dev/) +- [SASS](https://sass-lang.com/) +- [Prettier](https://prettier.io/) +- [ESLint](https://eslint.org/) +- [Husky](https://typicode.github.io/husky/getting-started.html#automatic-recommended) +- [Commitlint](https://commitlint.js.org/#/guides-local-setup?id=install-commitlint) +- [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) +- [Chrome Extension Manifest Version 3](https://developer.chrome.com/docs/extensions/mv3/intro/) +- HRR(Hot Rebuild & Refresh/Reload) + +## Installation + +## Procedures: + +1. Clone this repository. +2. Change `name` and `description` in package.json => **Auto synchronize with manifest** +3. Install pnpm globally: `npm install -g pnpm` (check your node version >= 16.6, recommended >= 18) +4. Run `pnpm install` + +## And next, depending on the needs: + +### For Chrome: + +1. Run: + - Dev: `pnpm dev` or `npm run dev` + - Prod: `pnpm build` or `npm run build` +2. Open in browser - `chrome://extensions` +3. Check - `Developer mode` +4. Find and Click - `Load unpacked extension` +5. Select - `dist` folder + +### For Firefox: + +1. Run: + - Dev: `pnpm dev:firefox` or `npm run dev:firefox` + - Prod: `pnpm build:firefox` or `npm run build:firefox` +2. Open in browser - `about:debugging#/runtime/this-firefox` +3. Find and Click - `Load Temporary Add-on...` +4. Select - `manifest.json` from `dist` folder + +### Remember in firefox you add plugin in temporary mode, that's mean it's disappear after close browser, you must do it again, on next launch. + +## Screenshots + +### New Tab + + + +### Popup + +popup + +## Examples + +- https://github.com/Jonghakseo/drag-gpt-extension +- https://github.com/Jonghakseo/pr-commit-noti +- https://github.com/ariburaco/chatgpt-file-uploader-extended + +## Documents + +- [Vite Plugin](https://vitejs.dev/guide/api-plugin.html) +- [ChromeExtension](https://developer.chrome.com/docs/extensions/mv3/) +- [Rollup](https://rollupjs.org/guide/en/) +- [Rollup-plugin-chrome-extension](https://www.extend-chrome.dev/rollup-plugin) + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=Jonghakseo/chrome-extension-boilerplate-react-vite&type=Date)](https://star-history.com/#Jonghakseo/chrome-extension-boilerplate-react-vite&Date) + +## Contributors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JunyWuuuu91
JunyWuuuu91

💻
dim0147
dim0147

🐛
jon lepage
jon lepage

🐛
LironH
LironH

🤔
Spencer Chang
Spencer Chang

🐛
deld123
deld123

🐛
Michal Hantl
Michal Hantl

🤔 🐛
Jordan Burgess
Jordan Burgess

🤔
NAMEUN CHO
NAMEUN CHO

🐛
Andrew Mudrov
Andrew Mudrov

💬
Shubham Lad
Shubham Lad

🐛
hanrong
hanrong

🐛
Florian König
Florian König

💬
Tran Phong
Tran Phong

🐛
tonychandesign
tonychandesign

🐛
Ihor Makarchuk
Ihor Makarchuk

🐛
hugoobauer
hugoobauer

🐛
Karan Singh
Karan Singh

🤔
remusris
remusris

🤔
hegel_dark
hegel_dark

🤔
Jingsi
Jingsi

🐛 💻
Chris Ozgo
Chris Ozgo

🐛
Cong
Cong

🐛
PatrykKuniczak
PatrykKuniczak

🤔 💻 📖
Hector Parra
Hector Parra

🐛
JeongHyeon Kim
JeongHyeon Kim

🚇
Terminels
Terminels

💻
WonkyDD
WonkyDD

💻 🐛
+ + + + + + +--- + +## Thanks To + +| [Jetbrains](https://jb.gg/OpenSourceSupport) | [Jackson Hong](https://www.linkedin.com/in/j-acks0n/) | +|--------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| +| JetBrains Logo (Main) logo. | Jackson Hong | + +--- + +[Jonghakseo](https://nookpi.tistory.com/) diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..da79780 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,206 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +export default { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/gs/f4d067nn1sx7q0x__98xhcmw0000gn/T/jest_dx", + + // Automatically clear mock calls, instances and results before every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: false, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + coverageDirectory: 'coverage', + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + coverageProvider: 'v8', + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: 2, + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "jsx", + // "ts", + // "tsx", + // "json", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + moduleNameMapper: { + '^@src(.*)$': '/src$1', + '^@assets(.*)$': '/src/assets$1', + '^@pages(.*)$': '/src/pages$1', + '^@root(.*)$': '$1', + }, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + preset: 'ts-jest', + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state before every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state and implementation before every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + setupFiles: ['./test-utils/jest.setup.js'], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + testEnvironment: 'jsdom', + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + testPathIgnorePatterns: [ + '/node_modules/', + '/test-utils/', + '/vite.config.ts', + '/jest.config.js', + ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jest-circus/runner", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + // testURL: "http://localhost", + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + // transform: { + // // Use babel-jest to transpile tests with the next/babel preset + // // https://jestjs.io/docs/configuration#transform-objectstring-pathtotransformer--pathtotransformer-object + // "^.+\\.(js|jsx|ts|tsx)$": "babel-jest", + // }, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/", + // "^.+\\.module\\.(css|sass|scss)$", + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; diff --git a/manifest.ts b/manifest.ts new file mode 100755 index 0000000..fff95a7 --- /dev/null +++ b/manifest.ts @@ -0,0 +1,39 @@ +import packageJson from './package.json'; + +/** + * After changing this file, please reload the extension at `chrome://extensions` + */ +const manifest: chrome.runtime.ManifestV3 = { + manifest_version: 3, + name: 'Mint Data Exporter, by Monarch', + version: packageJson.version, + description: packageJson.description, + permissions: ['storage', 'activeTab', 'scripting', 'downloads'], + background: { + service_worker: 'src/pages/background/index.js', + type: 'module', + }, + action: { + default_popup: 'src/pages/popup/index.html', + default_icon: 'icon-34.png', + default_title: 'Open Mint Data Exporter', + }, + icons: { + '128': 'icon-128.png', + }, + web_accessible_resources: [ + { + resources: [ + 'assets/js/*.js', + 'assets/css/*.css', + 'icon-128.png', + 'icon-34.png', + 'icon-beta-34.png', + 'icon-beta-128.png', + ], + matches: ['https://mint.intuit.com/*'], + }, + ], +}; + +export default manifest; diff --git a/package.json b/package.json new file mode 100644 index 0000000..f9d85d6 --- /dev/null +++ b/package.json @@ -0,0 +1,93 @@ +{ + "name": "mint-data-exporter", + "version": "0.0.1", + "description": "Browser extension to export your data from Mint. Built by the team at Monarch Money.", + "scripts": { + "build": "tsc --noEmit && vite build", + "build:beta": "tsc --noEmit && cross-env IS_BETA=1 vite build", + "build:firefox": "tsc --noEmit && cross-env __FIREFOX__=true vite build", + "build:watch": "cross-env __DEV__=true vite build -w --mode development", + "build:firefox:watch": "cross-env __DEV__=true __FIREFOX__=true vite build -w --mode development", + "build:hmr": "rollup --config utils/reload/rollup.config.ts", + "wss": "node utils/reload/initReloadServer.js", + "dev": "pnpm build:hmr && (run-p wss build:watch)", + "dev:firefox": "pnpm build:hmr && (run-p wss build:firefox:watch)", + "test": "jest", + "commitlint": "commitlint --edit", + "lint": "eslint src --ext .ts", + "lint:fix": "pnpm lint --fix", + "prettier": "prettier . --write", + "prepare": "husky install" + }, + "type": "module", + "dependencies": { + "@sentry/browser": "^7.80.0", + "@sentry/react": "^7.80.0", + "@sentry/vite-plugin": "^2.10.0", + "autoprefixer": "^10.4.16", + "clsx": "^2.0.0", + "construct-style-sheets-polyfill": "^3.1.0", + "jszip": "3.10.1", + "luxon": "3.4.3", + "pluralize": "^8.0.0", + "postcss": "^8.4.31", + "react": "18.2.0", + "react-dom": "18.2.0", + "tailwind-merge": "^2.0.0", + "tailwindcss": "^3.3.5", + "webextension-polyfill": "^0.10.0" + }, + "devDependencies": { + "@rollup/plugin-typescript": "^8.5.0", + "@testing-library/react": "13.4.0", + "@types/chrome": "0.0.224", + "@types/jest": "29.0.3", + "@types/luxon": "3.3.4", + "@types/node": "18.15.11", + "@types/pluralize": "^0.0.33", + "@types/react": "18.2.29", + "@types/react-dom": "18.2.15", + "@types/ws": "^8.5.4", + "@typescript-eslint/eslint-plugin": "^6.7.5", + "@typescript-eslint/parser": "^6.7.5", + "@vitejs/plugin-react": "2.2.0", + "chokidar": "^3.5.3", + "chrome-webstore-upload": "^1.0.0", + "cross-env": "^7.0.3", + "dotenv": "^16.3.1", + "eslint": "^8.36.0", + "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "fs-extra": "11.1.0", + "husky": "^8.0.0", + "isomorphic-fetch": "3.0.0", + "jest": "29.0.3", + "jest-environment-jsdom": "29.5.0", + "lint-staged": "^14.0.1", + "npm-run-all": "^4.1.5", + "prettier": "^3.0.3", + "prettier-plugin-tailwindcss": "^0.5.6", + "rollup": "2.79.1", + "sass": "1.62.1", + "ts-jest": "29.0.2", + "ts-loader": "9.4.2", + "ts-node": "^10.9.1", + "tslib": "^2.6.2", + "typescript": "4.9.5", + "vite": "3.2.7", + "vite-plugin-conditional-compiler": "^0.2.1", + "ws": "8.13.0" + }, + "lint-staged": { + "*.{js,jsx,ts,tsx}": [ + "prettier --write", + "eslint --fix" + ] + }, + "packageManager": "pnpm@8.9.2" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..5a17d5f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6815 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@sentry/browser': + specifier: ^7.80.0 + version: 7.80.0 + '@sentry/react': + specifier: ^7.80.0 + version: 7.80.0(react@18.2.0) + '@sentry/vite-plugin': + specifier: ^2.10.0 + version: 2.10.0 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.31) + clsx: + specifier: ^2.0.0 + version: 2.0.0 + construct-style-sheets-polyfill: + specifier: ^3.1.0 + version: 3.1.0 + jszip: + specifier: 3.10.1 + version: 3.10.1 + luxon: + specifier: 3.4.3 + version: 3.4.3 + pluralize: + specifier: ^8.0.0 + version: 8.0.0 + postcss: + specifier: ^8.4.31 + version: 8.4.31 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + tailwind-merge: + specifier: ^2.0.0 + version: 2.0.0 + tailwindcss: + specifier: ^3.3.5 + version: 3.3.5(ts-node@10.9.1) + webextension-polyfill: + specifier: ^0.10.0 + version: 0.10.0 + +devDependencies: + '@rollup/plugin-typescript': + specifier: ^8.5.0 + version: 8.5.0(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5) + '@testing-library/react': + specifier: 13.4.0 + version: 13.4.0(react-dom@18.2.0)(react@18.2.0) + '@types/chrome': + specifier: 0.0.224 + version: 0.0.224 + '@types/jest': + specifier: 29.0.3 + version: 29.0.3 + '@types/luxon': + specifier: 3.3.4 + version: 3.3.4 + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@types/pluralize': + specifier: ^0.0.33 + version: 0.0.33 + '@types/react': + specifier: 18.2.29 + version: 18.2.29 + '@types/react-dom': + specifier: 18.2.15 + version: 18.2.15 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.7 + '@typescript-eslint/eslint-plugin': + specifier: ^6.7.5 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^6.7.5 + version: 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@vitejs/plugin-react': + specifier: 2.2.0 + version: 2.2.0(vite@3.2.7) + chokidar: + specifier: ^3.5.3 + version: 3.5.3 + chrome-webstore-upload: + specifier: ^1.0.0 + version: 1.0.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + eslint: + specifier: ^8.36.0 + version: 8.51.0 + eslint-config-airbnb-typescript: + specifier: ^17.1.0 + version: 17.1.0(@typescript-eslint/eslint-plugin@6.8.0)(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.51.0) + eslint-plugin-import: + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint@8.51.0) + eslint-plugin-jsx-a11y: + specifier: ^6.7.1 + version: 6.7.1(eslint@8.51.0) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + eslint-plugin-react: + specifier: ^7.32.2 + version: 7.33.2(eslint@8.51.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.51.0) + fs-extra: + specifier: 11.1.0 + version: 11.1.0 + husky: + specifier: ^8.0.0 + version: 8.0.3 + isomorphic-fetch: + specifier: 3.0.0 + version: 3.0.0 + jest: + specifier: 29.0.3 + version: 29.0.3(@types/node@18.15.11)(ts-node@10.9.1) + jest-environment-jsdom: + specifier: 29.5.0 + version: 29.5.0 + lint-staged: + specifier: ^14.0.1 + version: 14.0.1 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + prettier: + specifier: ^3.0.3 + version: 3.0.3 + prettier-plugin-tailwindcss: + specifier: ^0.5.6 + version: 0.5.6(prettier@3.0.3) + rollup: + specifier: 2.79.1 + version: 2.79.1 + sass: + specifier: 1.62.1 + version: 1.62.1 + ts-jest: + specifier: 29.0.2 + version: 29.0.2(@babel/core@7.23.2)(jest@29.0.3)(typescript@4.9.5) + ts-loader: + specifier: 9.4.2 + version: 9.4.2(typescript@4.9.5)(webpack@5.89.0) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) + tslib: + specifier: ^2.6.2 + version: 2.6.2 + typescript: + specifier: 4.9.5 + version: 4.9.5 + vite: + specifier: 3.2.7 + version: 3.2.7(@types/node@18.15.11)(sass@1.62.1) + vite-plugin-conditional-compiler: + specifier: ^0.2.1 + version: 0.2.1(rollup@2.79.1)(vite@3.2.7)(webpack@5.89.0) + ws: + specifier: 8.13.0 + version: 8.13.0 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: false + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/types': 7.23.0 + dev: true + + /@babel/runtime-corejs3@7.23.2: + resolution: {integrity: sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.33.2 + regenerator-runtime: 0.14.0 + dev: true + + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.51.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.15.11)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.15.11 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 18.15.11 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.5 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.2 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.5 + '@types/istanbul-reports': 3.0.3 + '@types/node': 18.15.11 + '@types/yargs': 17.0.28 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5): + resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} + engines: {node: '>=8.0.0'} + peerDependencies: + rollup: ^2.14.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + resolve: 1.22.8 + rollup: 2.79.1 + tslib: 2.6.2 + typescript: 4.9.5 + dev: true + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + + /@sentry-internal/tracing@7.80.0: + resolution: {integrity: sha512-P1Ab9gamHLsbH9D82i1HY8xfq9dP8runvc4g50AAd6OXRKaJ45f2KGRZUmnMEVqBQ7YoPYp2LFMkrhNYbcZEoQ==} + engines: {node: '>=8'} + dependencies: + '@sentry/core': 7.80.0 + '@sentry/types': 7.80.0 + '@sentry/utils': 7.80.0 + dev: false + + /@sentry/browser@7.80.0: + resolution: {integrity: sha512-Ngwjc+yyf/aH5q7iQM1LeDNlhM1Ilt4ZLUogTghZR/guwNWmCtk3OHcjOLz7fxBBj9wGFUc2pHPyeYM6bQhrEw==} + engines: {node: '>=8'} + dependencies: + '@sentry-internal/tracing': 7.80.0 + '@sentry/core': 7.80.0 + '@sentry/replay': 7.80.0 + '@sentry/types': 7.80.0 + '@sentry/utils': 7.80.0 + dev: false + + /@sentry/bundler-plugin-core@2.10.0: + resolution: {integrity: sha512-bjcYvMrCQgqTiRRkWGNpeZ7EJOu0JQFYj+rrcQpwaVO+ll1eWNGW1nNveU+8vpnXrlaIAvieBxCrcCj5V9y1+Q==} + engines: {node: '>= 14'} + dependencies: + '@sentry/cli': 2.21.3 + '@sentry/node': 7.80.0 + '@sentry/utils': 7.80.0 + dotenv: 16.3.1 + find-up: 5.0.0 + glob: 9.3.2 + magic-string: 0.27.0 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sentry/cli@2.21.3: + resolution: {integrity: sha512-gv8SNaMVNggiE/+6fPxEj8+y5uj9PqAQ8QS277aZ/HSXFgoidnNecE4QGHh4n+AkT0qCSQ/byxZsojVXkwkC7g==} + engines: {node: '>= 10'} + hasBin: true + requiresBuild: true + dependencies: + https-proxy-agent: 5.0.1 + node-fetch: 2.7.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + which: 2.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sentry/core@7.80.0: + resolution: {integrity: sha512-nJiiymdTSEyI035/rdD3VOq6FlOZ2wWLR5bit9LK8a3rzHU3UXkwScvEo6zYgs0Xp1sC0yu1S9+0BEiYkmi29A==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.80.0 + '@sentry/utils': 7.80.0 + dev: false + + /@sentry/node@7.80.0: + resolution: {integrity: sha512-J35fqe8J5ac/17ZXT0ML3opYGTOclqYNE9Sybs1y9n6BqacHyzH8By72YrdI03F7JJDHwrcGw+/H8hGpkCwi0Q==} + engines: {node: '>=8'} + dependencies: + '@sentry-internal/tracing': 7.80.0 + '@sentry/core': 7.80.0 + '@sentry/types': 7.80.0 + '@sentry/utils': 7.80.0 + https-proxy-agent: 5.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@sentry/react@7.80.0(react@18.2.0): + resolution: {integrity: sha512-xoX7fqgY0NZR9Fud/IJ4a3b8Z/HsdwU5SLILi46lV+CWaXS6eFM1E81jG2Vd2EeYIpkH+bMA//XHMEod8LAJcQ==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + dependencies: + '@sentry/browser': 7.80.0 + '@sentry/types': 7.80.0 + '@sentry/utils': 7.80.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + + /@sentry/replay@7.80.0: + resolution: {integrity: sha512-wWnpuJq3OaDLp1LutE4oxWXnau04fvwuzBjuaFvOXOV+pB/kn+pDPuVOC5+FH/RMRZ5ftwX5+dF6fojfcLVGCg==} + engines: {node: '>=12'} + dependencies: + '@sentry-internal/tracing': 7.80.0 + '@sentry/core': 7.80.0 + '@sentry/types': 7.80.0 + '@sentry/utils': 7.80.0 + dev: false + + /@sentry/types@7.80.0: + resolution: {integrity: sha512-4bpMO+2jWiWLDa8zbTASWWNLWe6yhjfPsa7/6VH5y9x1NGtL8oRbqUsTgsvjF3nmeHEMkHQsC8NHPaQ/ibFmZQ==} + engines: {node: '>=8'} + dev: false + + /@sentry/utils@7.80.0: + resolution: {integrity: sha512-XbBCEl6uLvE50ftKwrEo6XWdDaZXHXu+kkHXTPWQEcnbvfZKLuG9V0Hxtxxq3xQgyWmuF05OH1GcqYqiO+v5Yg==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.80.0 + dev: false + + /@sentry/vite-plugin@2.10.0: + resolution: {integrity: sha512-jOJQnu3ox+HcD1HCul5LBy6YEhS0oVFjrFshoFD2PtHI5sMldbwNWrkkTXcknNy/0o4d5cAtdsEuVzEnbdd+Gg==} + engines: {node: '>= 14'} + dependencies: + '@sentry/bundler-plugin-core': 2.10.0 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + + /@testing-library/dom@8.20.1: + resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/runtime': 7.23.2 + '@types/aria-query': 5.0.3 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react@13.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.23.2 + '@testing-library/dom': 8.20.1 + '@types/react-dom': 18.2.15 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + /@types/aria-query@5.0.3: + resolution: {integrity: sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==} + dev: true + + /@types/babel__core@7.20.3: + resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} + dependencies: + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@types/babel__generator': 7.6.6 + '@types/babel__template': 7.4.3 + '@types/babel__traverse': 7.20.3 + dev: true + + /@types/babel__generator@7.6.6: + resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@types/babel__template@7.4.3: + resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==} + dependencies: + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + + /@types/babel__traverse@7.20.3: + resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 18.15.11 + '@types/responselike': 1.0.3 + dev: true + + /@types/chrome@0.0.224: + resolution: {integrity: sha512-YkL7q3KDV7OAKgVCBNIfH73rnjNMbIzAYHzTa2DKhSK/2z0Wf/n8yJnK/UoW+lvuYJJR4LtAkG3YvsIZTy7BOA==} + dependencies: + '@types/filesystem': 0.0.34 + '@types/har-format': 1.2.14 + dev: true + + /@types/eslint-scope@3.7.6: + resolution: {integrity: sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==} + dependencies: + '@types/eslint': 8.44.5 + '@types/estree': 1.0.3 + dev: true + + /@types/eslint@8.44.5: + resolution: {integrity: sha512-Ol2eio8LtD/tGM4Ga7Jb83NuFwEv3NqvssSlifXL9xuFpSyQZw0ecmm2Kux6iU0KxQmp95hlPmGCzGJ0TCFeRA==} + dependencies: + '@types/estree': 1.0.3 + '@types/json-schema': 7.0.14 + dev: true + + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/estree@1.0.3: + resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} + dev: true + + /@types/filesystem@0.0.34: + resolution: {integrity: sha512-La4bGrgck8/rosDUA1DJJP8hrFcKq0BV6JaaVlNnOo1rJdJDcft3//slEbAmsWNUJwXRCc0DXpeO40yuATlexw==} + dependencies: + '@types/filewriter': 0.0.31 + dev: true + + /@types/filewriter@0.0.31: + resolution: {integrity: sha512-12df1utOvPC80+UaVoOO1d81X8pa5MefHNS+gWX9R2ucSESpMz9K5QwlTWDGKASrzCpSFwj7NPYh+nTsolgEGA==} + dev: true + + /@types/graceful-fs@4.1.8: + resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==} + dependencies: + '@types/node': 18.15.11 + dev: true + + /@types/har-format@1.2.14: + resolution: {integrity: sha512-pEmBAoccWvO6XbSI8A7KvIDGEoKtlLWtdqVCKoVBcCDSFvR4Ijd7zGLu7MWGEqk2r8D54uWlMRt+VZuSrfFMzQ==} + dev: true + + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true + + /@types/istanbul-lib-coverage@2.0.5: + resolution: {integrity: sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==} + dev: true + + /@types/istanbul-lib-report@3.0.2: + resolution: {integrity: sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.5 + dev: true + + /@types/istanbul-reports@3.0.3: + resolution: {integrity: sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==} + dependencies: + '@types/istanbul-lib-report': 3.0.2 + dev: true + + /@types/jest@29.0.3: + resolution: {integrity: sha512-F6ukyCTwbfsEX5F2YmVYmM5TcTHy1q9P5rWlRbrk56KyMh3v9xRGUO3aa8+SkvMi0SHXtASJv1283enXimC0Og==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 18.15.11 + '@types/tough-cookie': 4.0.4 + parse5: 7.1.2 + dev: true + + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.15.11 + dev: true + + /@types/luxon@3.3.4: + resolution: {integrity: sha512-H9OXxv4EzJwE75aTPKpiGXJq+y4LFxjpsdgKwSmr503P5DkWc3AG7VAFYrFNVvqemT5DfgZJV9itYhqBHSGujA==} + dev: true + + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + + /@types/pluralize@0.0.33: + resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==} + dev: true + + /@types/prop-types@15.7.9: + resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} + dev: true + + /@types/react-dom@18.2.15: + resolution: {integrity: sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg==} + dependencies: + '@types/react': 18.2.29 + dev: true + + /@types/react@18.2.29: + resolution: {integrity: sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==} + dependencies: + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.4 + csstype: 3.1.2 + dev: true + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 18.15.11 + dev: true + + /@types/scheduler@0.16.4: + resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==} + dev: true + + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + dev: true + + /@types/stack-utils@2.0.2: + resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==} + dev: true + + /@types/tough-cookie@4.0.4: + resolution: {integrity: sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==} + dev: true + + /@types/ws@8.5.7: + resolution: {integrity: sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==} + dependencies: + '@types/node': 18.15.11 + dev: true + + /@types/yargs-parser@21.0.1: + resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==} + dev: true + + /@types/yargs@17.0.28: + resolution: {integrity: sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==} + dependencies: + '@types/yargs-parser': 21.0.1 + dev: true + + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@4.9.5): + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.51.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@4.9.5): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.51.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + dev: true + + /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@4.9.5): + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.51.0 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.8.0: + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.8.0(typescript@4.9.5): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@4.9.5): + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + eslint: 8.51.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.8.0: + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.8.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@vitejs/plugin-react@2.2.0(vite@3.2.7): + resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.2) + magic-string: 0.26.7 + react-refresh: 0.14.0 + vite: 3.2.7(@types/node@18.15.11)(sass@1.62.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.10.0 + acorn-walk: 8.2.0 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.10.0): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.2 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.1 + caniuse-lite: 1.0.30001550 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: false + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axe-core@4.8.2: + resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /babel-jest@29.7.0(@babel/core@7.23.2): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.2 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.3 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.2) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + '@types/babel__core': 7.20.3 + '@types/babel__traverse': 7.20.3 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.2): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001550 + electron-to-chromium: 1.4.557 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001550: + resolution: {integrity: sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==} + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /chrome-webstore-upload@1.0.0: + resolution: {integrity: sha512-8+MKhuLzVWNekBnej8w4M80O8Yfp91hBQimqEZx1nKEn7nNQwBa/CjjQSuK2c3vz9DukV5WRZcQz+zzLdrEC1Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + got: 11.8.6 + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true + + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /construct-style-sheets-polyfill@3.1.0: + resolution: {integrity: sha512-HBLKP0chz8BAY6rBdzda11c3wAZeCZ+kIG4weVC2NM3AXzxx09nhe8t0SQNdloAvg5GLuHwq/0SPOOSPvtCcKw==} + dev: false + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /core-js-pure@3.33.2: + resolution: {integrity: sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==} + requiresBuild: true + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /create-jest@29.7.0(@types/node@18.15.11)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.15.11)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + /cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: true + + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deep-equal@2.2.2: + resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.1 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.557: + resolution: {integrity: sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==} + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.4 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.0 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + dev: true + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.4 + has-tostringtag: 1.0.0 + dev: true + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.4 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.28.1)(eslint@8.51.0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.51.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint@8.51.0) + object.assign: 4.1.4 + object.entries: 1.1.7 + semver: 6.3.1 + dev: true + + /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.8.0)(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0): + resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 + '@typescript-eslint/parser': ^5.0.0 || ^6.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + dependencies: + '@typescript-eslint/eslint-plugin': 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + eslint: 8.51.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.28.1)(eslint@8.51.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint@8.51.0) + dev: true + + /eslint-config-prettier@9.0.0(eslint@8.51.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.51.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.51.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint@8.51.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@4.9.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.51.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + has: 1.0.4 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.51.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.2 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.7 + axe-core: 4.8.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.51.0 + has: 1.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) + prettier: 3.0.3 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.51.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.51.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.51.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.51.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.51.0 + '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: false + + /fs-extra@11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.2 + has: 1.0.4 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@9.3.2: + resolution: {integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 7.4.6 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.1 + dev: true + + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.1 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.4 + side-channel: 1.0.4 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.4 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.11 + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 3.6.19 + transitivePeerDependencies: + - encoding + dev: true + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.2 + '@babel/parser': 7.23.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.2 + '@babel/parser': 7.23.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0(@types/node@18.15.11)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.15.11)(ts-node@10.9.1) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.15.11)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@18.15.11)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.2 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + babel-jest: 29.7.0(@babel/core@7.23.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-jsdom@29.5.0: + resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 18.15.11 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.8 + '@types/node': 18.15.11 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.2 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + '@babel/types': 7.23.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.15.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.15.11 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.0.3(@types/node@18.15.11)(ts-node@10.9.1): + resolution: {integrity: sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.15.11)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.10.0 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.13.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + dependencies: + immediate: 3.0.6 + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /lint-staged@14.0.1: + resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + dev: true + + /listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.3.0 + wrap-ansi: 8.1.0 + dev: true + + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true + + /lru-cache@10.0.2: + resolution: {integrity: sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==} + engines: {node: 14 || >=16.14} + dependencies: + semver: 7.5.4 + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /luxon@3.4.3: + resolution: {integrity: sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==} + engines: {node: '>=12'} + dev: false + + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /magic-string@0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: false + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.5 + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + + /object-inspect@1.13.0: + resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} + dev: true + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.2 + minipass: 7.0.4 + dev: false + + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: false + + /postcss-import@15.1.0(postcss@8.4.31): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: false + + /postcss-js@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.31 + dev: false + + /postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.31 + ts-node: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) + yaml: 2.3.1 + dev: false + + /postcss-nested@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier-plugin-tailwindcss@0.5.6(prettier@3.0.3): + resolution: {integrity: sha512-2Xgb+GQlkPAUCFi3sV+NOYcSI5XgduvDBL2Zt/hwJudeKXkyvRS65c38SB0yb9UB40+1rL83I6m0RtlOQ8eHdg==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@shufo/prettier-plugin-blade': '*' + '@trivago/prettier-plugin-sort-imports': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + prettier-plugin-twig-melody: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@shufo/prettier-plugin-blade': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier-plugin-twig-melody: + optional: true + dependencies: + prettier: 3.0.3 + dev: true + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: false + + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sass@1.62.1: + resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.14 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.13.0 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.padend@3.1.5: + resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /tailwind-merge@2.0.0: + resolution: {integrity: sha512-WO8qghn9yhsldLSg80au+3/gY9E4hFxIvQ3qOmlpXnqpDKoMruKfi/56BbbMg6fHTQJ9QD3cc79PoWqlaQE4rw==} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + + /tailwindcss@3.3.5(ts-node@10.9.1): + resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.1 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-js: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.31) + postcss-selector-parser: 6.0.13 + resolve: 1.22.8 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: false + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terser-webpack-plugin@5.3.9(webpack@5.89.0): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.22.0 + webpack: 5.89.0 + dev: true + + /terser@5.22.0: + resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.0 + dev: true + + /ts-api-utils@1.0.3(typescript@4.9.5): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 4.9.5 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false + + /ts-jest@29.0.2(@babel/core@7.23.2)(jest@29.0.3)(typescript@4.9.5): + resolution: {integrity: sha512-P03IUItnAjG6RkJXtjjD5pu0TryQFOwcb1YKmW63rO19V0UFqL3wiXZrmR5D7qYjI98btzIOAcYafLZ0GHAcQg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.23.2 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.0.3(@types/node@18.15.11)(ts-node@10.9.1) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 4.9.5 + yargs-parser: 21.1.1 + dev: true + + /ts-loader@9.4.2(typescript@4.9.5)(webpack@5.89.0): + resolution: {integrity: sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.15.0 + micromatch: 4.0.5 + semver: 7.5.4 + typescript: 4.9.5 + webpack: 5.89.0 + dev: true + + /ts-node@10.9.1(@types/node@18.15.11)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.15.11 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unplugin-preprocessor-directives@0.0.8(rollup@2.79.1)(vite@3.2.7)(webpack@5.89.0): + resolution: {integrity: sha512-SC1UJ1rYz4c1wBSN1BdFPYuWH7B7T3JVPA7hP6gfQSxiLcFcfW0BJ4L19peCos9fcQuF91W6k2iQ9g4RcXjeCQ==} + peerDependencies: + '@nuxt/kit': ^3 + '@nuxt/schema': ^3 + '@rspack/core': '*' + esbuild: '*' + rollup: ^3 + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@nuxt/schema': + optional: true + '@rspack/core': + optional: true + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + magic-string: 0.30.5 + rollup: 2.79.1 + unplugin: 1.5.0 + vite: 3.2.7(@types/node@18.15.11)(sass@1.62.1) + webpack: 5.89.0 + xregexp: 5.1.1 + dev: true + + /unplugin@1.0.1: + resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} + dependencies: + acorn: 8.10.0 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: false + + /unplugin@1.5.0: + resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + dependencies: + acorn: 8.10.0 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + /v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.5 + convert-source-map: 2.0.0 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /vite-plugin-conditional-compiler@0.2.1(rollup@2.79.1)(vite@3.2.7)(webpack@5.89.0): + resolution: {integrity: sha512-AeYXykxLZW0EmT0xMxozvAe+8EN/8tEmQ49gcVuuKaKqn8eYuuWM0AwD9yGUnfB8/lM16K/XyumvhaW4IWmMjQ==} + dependencies: + unplugin-preprocessor-directives: 0.0.8(rollup@2.79.1)(vite@3.2.7)(webpack@5.89.0) + transitivePeerDependencies: + - '@nuxt/kit' + - '@nuxt/schema' + - '@rspack/core' + - esbuild + - rollup + - vite + - webpack + dev: true + + /vite@3.2.7(@types/node@18.15.11)(sass@1.62.1): + resolution: {integrity: sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.15.11 + esbuild: 0.15.18 + postcss: 8.4.31 + resolve: 1.22.8 + rollup: 2.79.1 + sass: 1.62.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + /webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.6 + '@types/estree': 1.0.3 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.22.1 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-fetch@3.6.19: + resolution: {integrity: sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==} + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /xregexp@5.1.1: + resolution: {integrity: sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==} + dependencies: + '@babel/runtime-corejs3': 7.23.2 + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/icon-128.png b/public/icon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..60fa222251210c8e4260581ed95127e3599a3a3a GIT binary patch literal 666 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 literal 0 HcmV?d00001 diff --git a/public/icon-beta-34.png b/public/icon-beta-34.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5a364869a95838b328f40ade4ffe2733fb0b8b GIT binary patch literal 678 zcmV;X0$KfuP)V+`nYU0KBra-Gzggie+f>_H4%#7jd+)rwj zkRUt#oC20TD5;296%?-=n~i|BKb_lxNlr!oF9!1I+>A*KqE795k$zOB7y-jRwBh*&Zr+J zu}R;sjIl^%;t7sFRj@bvktWJQC$atZz3N*oJc=DRkTDkN^iSZQouV{8P7}QwC=*C< zAMVTdm{7M7Y4>`V+1iYhxh=tcJALC#kM^a1e + + + diff --git a/src/assets/style/theme.scss b/src/assets/style/theme.scss new file mode 100644 index 0000000..1550a0b --- /dev/null +++ b/src/assets/style/theme.scss @@ -0,0 +1,17 @@ +@font-face { + font-family: "Graphik"; + font-weight: 400; + src: url("https://www.monarchmoney.com/fonts/Graphik-Regular-Web.woff2") format("woff2"); +} + +@font-face { + font-family: "Graphik"; + font-weight: 600; + src: url("https://www.monarchmoney.com/fonts/Graphik-Medium-Web.woff2") format("woff2"); +} + +@font-face { + font-family: "Graphik"; + font-weight: 700; + src: url("https://www.monarchmoney.com/fonts/Graphik-Bold-Web.woff2") format("woff2"); +} \ No newline at end of file diff --git a/src/components/Check.tsx b/src/components/Check.tsx new file mode 100644 index 0000000..cf4d636 --- /dev/null +++ b/src/components/Check.tsx @@ -0,0 +1,13 @@ +const Check = () => ( + + + + +); + +export default Check; diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx new file mode 100644 index 0000000..da2a163 --- /dev/null +++ b/src/components/ErrorBoundary.tsx @@ -0,0 +1,19 @@ +import Text from '@root/src/components/Text'; +import React from 'react'; + +/* This is only the UI of the error boundary, not the error boundary itself. */ +const ErrorBoundary = ({ children }: React.PropsWithChildren) => ( +
+ 🛟 + {children ?? 'Sorry, something went wrong'} + + Please try opening the extension again. If the problem persists, reach out to us at{' '} + + support@monarchmoney.com + + . + +
+); + +export default ErrorBoundary; diff --git a/src/components/ErrorMessage.tsx b/src/components/ErrorMessage.tsx new file mode 100644 index 0000000..f726040 --- /dev/null +++ b/src/components/ErrorMessage.tsx @@ -0,0 +1,7 @@ +const ErrorMessage = ({ children }: React.PropsWithChildren) => ( +
+ {children} +
+); + +export default ErrorMessage; diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..c9175a4 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,21 @@ +import MonarchLogo from '@assets/img/logo.svg'; + +import Text from '@root/src/components/Text'; +import Section from '@root/src/components/Section'; + +const Footer = () => ( + +
+
+ Powered by + Monarch Logo +
+
+
+); + +export default Footer; diff --git a/src/components/Progress.tsx b/src/components/Progress.tsx new file mode 100644 index 0000000..74f5880 --- /dev/null +++ b/src/components/Progress.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +type Props = { + percentage: number; +}; + +const Progress = ({ percentage }: React.PropsWithChildren) => ( +
+
+
+); + +export default Progress; diff --git a/src/components/Section.tsx b/src/components/Section.tsx new file mode 100644 index 0000000..fb499ec --- /dev/null +++ b/src/components/Section.tsx @@ -0,0 +1,22 @@ +import clsx from 'clsx'; +import React from 'react'; + +type Props = { + left?: React.ReactNode; + right?: React.ReactNode; + className?: string; +}; + +const Section = ({ children, left, right, className }: React.PropsWithChildren) => ( +
+
{left}
+
{children}
+
{right}
+
+); + +export default Section; diff --git a/src/components/Spinner.tsx b/src/components/Spinner.tsx new file mode 100644 index 0000000..bc8dee0 --- /dev/null +++ b/src/components/Spinner.tsx @@ -0,0 +1,24 @@ +import React from 'react'; + +const Spinner = () => ( +
+ + Loading... +
+); + +export default Spinner; diff --git a/src/components/SpinnerWithText.tsx b/src/components/SpinnerWithText.tsx new file mode 100644 index 0000000..d635fb2 --- /dev/null +++ b/src/components/SpinnerWithText.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import clsx from 'clsx'; +import Spinner from '@root/src/components/Spinner'; +import Check from '@root/src/components/Check'; + +type Props = { + complete?: boolean; + className?: string; +}; + +const SpinnerWithText = ({ children, className, complete }: React.PropsWithChildren) => ( +
+ {complete ? : } + {children} +
+); + +export default SpinnerWithText; diff --git a/src/components/Text.tsx b/src/components/Text.tsx new file mode 100644 index 0000000..abe23a0 --- /dev/null +++ b/src/components/Text.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import clsx from 'clsx'; + +type Props = { + type?: 'header' | 'subtitle'; + className?: string; +}; + +const Text = ({ children, type, className }: React.PropsWithChildren) => ( + + {children} + +); + +export default Text; diff --git a/src/components/button/AsyncButton.tsx b/src/components/button/AsyncButton.tsx new file mode 100644 index 0000000..146b53e --- /dev/null +++ b/src/components/button/AsyncButton.tsx @@ -0,0 +1,46 @@ +import React, { useState } from 'react'; +import DefaultButton from '@root/src/components/button/DefaultButton'; +import clsx from 'clsx'; + +const AsyncButton = ({ + children, + onClick, + loadingText = 'Loading...', + className, + ...props +}: React.PropsWithChildren<{ + onClick: (e: React.MouseEvent) => Promise; + loadingText?: string; + className?: string; +}>) => { + const [isLoading, setIsLoading] = useState(false); + + const handleClick = async (event: React.MouseEvent) => { + if (onClick) { + setIsLoading(true); + + try { + await onClick(event); + } finally { + setIsLoading(false); + } + } + }; + + return ( + + {isLoading ? loadingText ?? 'Loading...' : children} + + ); +}; + +export default AsyncButton; diff --git a/src/components/button/DefaultButton.tsx b/src/components/button/DefaultButton.tsx new file mode 100644 index 0000000..f85f3f3 --- /dev/null +++ b/src/components/button/DefaultButton.tsx @@ -0,0 +1,49 @@ +import { UTM_URL_PARAMETERS } from '@root/src/shared/lib/constants'; +import React from 'react'; +import { twMerge } from 'tailwind-merge'; + +interface ButtonProps extends React.ButtonHTMLAttributes { + href?: never; +} + +interface AnchorProps extends React.AnchorHTMLAttributes { + href: string; +} + +type DefaultButtonProps = React.PropsWithChildren< + (ButtonProps | AnchorProps) & { className?: string } +>; + +const DefaultButton: React.FC = ({ children, href, className, ...props }) => { + const Component: React.ElementType = href ? 'a' : 'button'; + const urlParameters = new URLSearchParams(UTM_URL_PARAMETERS); + + const extraProps = href + ? { + // This is a hack to add UTM parameters to Monarch links automatically, we should probably + // do this in a more robust way in the future. + href: + !href.includes('utm_source') && href.includes('monarch') + ? `${href}?${urlParameters.toString()}` + : href, + target: '_blank', + rel: 'noopener noreferrer', + } + : {}; + + return ( + // @ts-ignore + + {children} + + ); +}; + +export default DefaultButton; diff --git a/src/components/button/PrimaryButton.tsx b/src/components/button/PrimaryButton.tsx new file mode 100644 index 0000000..3d27cf3 --- /dev/null +++ b/src/components/button/PrimaryButton.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import DefaultButton from '@root/src/components/button/DefaultButton'; + +const PrimaryButton = ({ children, ...props }: React.ComponentProps) => ( + + {children} + +); + +export default PrimaryButton; diff --git a/src/components/popup/DownloadBalances.tsx b/src/components/popup/DownloadBalances.tsx new file mode 100644 index 0000000..4ad1d71 --- /dev/null +++ b/src/components/popup/DownloadBalances.tsx @@ -0,0 +1,87 @@ +import ErrorBoundary from '@root/src/components/ErrorBoundary'; +import Progress from '@root/src/components/Progress'; +import SpinnerWithText from '@root/src/components/SpinnerWithText'; +import Text from '@root/src/components/Text'; +import DefaultButton from '@root/src/components/button/DefaultButton'; +import { ResponseStatus } from '@root/src/pages/popup/Popup'; +import { Action, useMessageListener } from '@root/src/shared/hooks/useMessage'; +import useStorage from '@root/src/shared/hooks/useStorage'; +import stateStorage from '@root/src/shared/storages/stateStorage'; +import pluralize from 'pluralize'; +import { useMemo, useState } from 'react'; + +const DownloadTransactions = () => { + const stateValue = useStorage(stateStorage); + const [progress, setProgress] = useState({ + totalAccounts: 0, + completedAccounts: 0, + completePercentage: 0, + }); + + const [status, setStatus] = useState(stateValue.downloadAccountBalanceHistoryStatus); + const isSuccess = status === ResponseStatus.Success; + + useMessageListener( + Action.DownloadBalancesProgress, + ({ completedAccounts, totalAccounts, completePercentage }: any) => + setProgress({ completedAccounts, totalAccounts, completePercentage }), + ); + + useMessageListener(Action.DownloadBalancesComplete, ({ outcome }: { outcome: ResponseStatus }) => + setStatus(outcome), + ); + + const content = useMemo(() => { + const { totalAccountsCount = 0 } = stateValue; + const { totalAccounts, completedAccounts, completePercentage } = progress; + + if (isSuccess) { + return ( +
+ Download complete! + + Balance history for {totalAccountsCount} {pluralize('account', totalAccountsCount)}{' '} + downloaded to your computer. + + + Import into Monarch + +
+ ); + } else if (totalAccountsCount) { + return ( +
+ + Downloading balance history for {totalAccountsCount}{' '} + {pluralize('account', totalAccountsCount)}. This may take a minute. + + {totalAccounts > 0 && completePercentage > 0 && ( +
+ + + {completedAccounts} of {totalAccounts} {pluralize('accounts', totalAccounts)}{' '} + complete + +
+ )} +
+ ); + } else { + return Getting your balance information...; + } + }, [isSuccess, stateValue, progress]); + + if (status === ResponseStatus.Error) { + return Sorry, there was an error downloading your balances; + } + + return ( +
+ +
{content}
+
+
+ ); +}; + +export default DownloadTransactions; diff --git a/src/components/popup/DownloadTransactions.tsx b/src/components/popup/DownloadTransactions.tsx new file mode 100644 index 0000000..ae89671 --- /dev/null +++ b/src/components/popup/DownloadTransactions.tsx @@ -0,0 +1,49 @@ +import ErrorBoundary from '@root/src/components/ErrorBoundary'; +import SpinnerWithText from '@root/src/components/SpinnerWithText'; +import Text from '@root/src/components/Text'; +import DefaultButton from '@root/src/components/button/DefaultButton'; +import { ResponseStatus } from '@root/src/pages/popup/Popup'; +import useStorage from '@root/src/shared/hooks/useStorage'; +import stateStorage from '@root/src/shared/storages/stateStorage'; +import pluralize from 'pluralize'; + +const formatter = new Intl.NumberFormat('en-US', { + style: 'decimal', + maximumFractionDigits: 2, +}); + +const DownloadTransactions = () => { + const stateValue = useStorage(stateStorage); + + const isSuccess = stateValue.downloadTransactionsStatus === ResponseStatus.Success; + + if (stateValue.downloadTransactionsStatus === ResponseStatus.Error) { + return Sorry, there was an error downloading your transactions; + } + + return ( +
+ +
+ {isSuccess ? ( +
+ Download complete! + + {formatter.format(stateValue.totalTransactionsCount)}{' '} + {pluralize('transaction', stateValue.totalTransactionsCount)} successfully + downloaded to your computer. + + + Import into Monarch + +
+ ) : ( + 'Downloading your transactions...' + )} +
+
+
+ ); +}; + +export default DownloadTransactions; diff --git a/src/components/popup/OtherResources.tsx b/src/components/popup/OtherResources.tsx new file mode 100644 index 0000000..a7d327e --- /dev/null +++ b/src/components/popup/OtherResources.tsx @@ -0,0 +1,15 @@ +import DefaultButton from '@root/src/components/button/DefaultButton'; +import PrimaryButton from '@root/src/components/button/PrimaryButton'; +import Text from '@root/src/components/Text'; + +const OtherResources = () => ( +
+ Other resources + Sign up for Monarch + + Import data into Monarch + +
+); + +export default OtherResources; diff --git a/src/components/popup/PopupContainer.tsx b/src/components/popup/PopupContainer.tsx new file mode 100644 index 0000000..3291ea7 --- /dev/null +++ b/src/components/popup/PopupContainer.tsx @@ -0,0 +1,155 @@ +import Section from '@root/src/components/Section'; +import SpinnerWithText from '@root/src/components/SpinnerWithText'; +import Text from '@root/src/components/Text'; +import DefaultButton from '@root/src/components/button/DefaultButton'; +import DownloadTransactions from '@root/src/components/popup/DownloadTransactions'; +import { ResponseStatus } from '@root/src/pages/popup/Popup'; +import { usePopupContext } from '@root/src/pages/popup/context'; +import React, { useCallback, useMemo } from 'react'; +import stateStorage from '@root/src/shared/storages/stateStorage'; +import useStorage from '@root/src/shared/hooks/useStorage'; +import { Action, useMessageSender } from '@root/src/shared/hooks/useMessage'; +import Footer from '@root/src/components/Footer'; +import OtherResources from '@root/src/components/popup/OtherResources'; +import { fetchAccounts } from '@root/src/shared/lib/accounts'; +import DownloadBalances from '@root/src/components/popup/DownloadBalances'; + +interface Page { + title: string; + component: React.ElementType; +} + +const PAGE_TO_COMPONENT: Record = { + downloadTransactions: { + title: 'Mint Transactions', + component: DownloadTransactions, + }, + downloadAccountBalanceHistory: { + title: 'Mint Account Balance History', + component: DownloadBalances, + }, +}; + +const PopupContainer = ({ children }: React.PropsWithChildren) => { + const { currentPage, downloadTransactionsStatus } = useStorage(stateStorage); + const { status, userData } = usePopupContext(); + const sendMessage = useMessageSender(); + + const onDownloadTransactions = useCallback(async () => { + stateStorage.patch({ + currentPage: 'downloadTransactions', + downloadTransactionsStatus: ResponseStatus.Loading, + totalTransactionsCount: undefined, + }); + const result = await sendMessage<{ count?: number }>({ action: Action.DownloadTransactions }); + if (result?.count) { + stateStorage.patch({ + downloadTransactionsStatus: ResponseStatus.Success, + totalTransactionsCount: result.count, + }); + } else { + stateStorage.patch({ downloadTransactionsStatus: ResponseStatus.Error }); + } + }, [sendMessage]); + + const onDownloadAccountBalanceHistory = useCallback(async () => { + // Reset any previous state + await stateStorage.patch({ + currentPage: 'downloadAccountBalanceHistory', + downloadAccountBalanceHistoryStatus: ResponseStatus.Loading, + totalAccountsCount: undefined, + }); + + const mintAccounts = await fetchAccounts({ offset: 0 }); + await stateStorage.patch({ totalAccountsCount: mintAccounts.length }); + + // The result of this message is handled by the DownloadBalances component + return sendMessage({ action: Action.DownloadAllAccountBalances }); + }, [sendMessage]); + + const content = useMemo(() => { + switch (status) { + case ResponseStatus.Loading: + return Loading your information...; + case ResponseStatus.RequireAuth: + case ResponseStatus.Error: + return ( +
+ + Open Mint Dashboard + + + We couldn't get your Mint user information. Please ensure you have a tab with the + Mint dashboard open and try opening the extension again. + + + Go to Mint dashboard + +
+ ); + case ResponseStatus.Success: + return ( +
+ Logged in to Mint + {userData?.userName} + + Download Mint transactions + + + Download Mint account balance history + +
+ ); + default: + return ( +
+ Unknown state. Please try opening the extension again. +
+ ); + } + }, [status, userData?.userName, onDownloadTransactions, onDownloadAccountBalanceHistory]); + + const { component: PageComponent, title: pageTitle } = PAGE_TO_COMPONENT[currentPage] ?? {}; + + // 💀 + const showBackArrow = + currentPage === 'downloadTransactions' + ? downloadTransactionsStatus !== ResponseStatus.Loading + : currentPage === 'downloadAccountBalanceHistory' + ? downloadTransactionsStatus !== ResponseStatus.Loading + : !!currentPage; // there's a page that's not index (index is undefined) + + return ( +
+
stateStorage.patch({ currentPage: undefined })}> + + ← + + + ) + }> + + {pageTitle ?? 'Mint Data Exporter'} + +
+ {PageComponent ? ( + + ) : ( +
+
{content}
+
+ +
+
+ )} +
+
{children}
+
+ ); +}; + +export default PopupContainer; diff --git a/src/environment.d.ts b/src/environment.d.ts new file mode 100644 index 0000000..bedafd8 --- /dev/null +++ b/src/environment.d.ts @@ -0,0 +1,10 @@ +declare global { + namespace NodeJS { + interface ProcessEnv { + __DEV__: string; + __FIREFOX__: string; + } + } +} + +export {}; diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..cff47e1 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,37 @@ +import Chrome from 'chrome'; + +declare namespace chrome { + export default Chrome; +} + +declare module 'virtual:reload-on-update-in-background-script' { + export const reloadOnUpdate: (watchPath: string) => void; + export default reloadOnUpdate; +} + +declare module 'virtual:reload-on-update-in-view' { + const refreshOnUpdate: (watchPath: string) => void; + export default refreshOnUpdate; +} + +declare module '*.svg' { + import React = require('react'); + export const ReactComponent: React.SFC>; + const src: string; + export default src; +} + +declare module '*.jpg' { + const content: string; + export default content; +} + +declare module '*.png' { + const content: string; + export default content; +} + +declare module '*.json' { + const content: string; + export default content; +} diff --git a/src/pages/background/index.ts b/src/pages/background/index.ts new file mode 100644 index 0000000..52baa77 --- /dev/null +++ b/src/pages/background/index.ts @@ -0,0 +1,206 @@ +import { ResponseStatus } from '@root/src/pages/popup/Popup'; +import { ErrorCode } from '@root/src/shared/constants/error'; +import { Action } from '@root/src/shared/hooks/useMessage'; +import stateStorage from '@root/src/shared/storages/stateStorage'; +import { + concatenateCSVPages, + fetchAllDownloadTransactionPages, + fetchTransactionsTotalCount, +} from '@src/shared/lib/transactions'; +import apiKeyStorage from '@src/shared/storages/apiKeyStorage'; +import reloadOnUpdate from 'virtual:reload-on-update-in-background-script'; +import { + fetchDailyBalancesForAllAccounts, + formatBalancesAsCSV, +} from '@root/src/shared/lib/accounts'; +import JSZip from 'jszip'; +import 'webextension-polyfill'; +import { throttle } from '@root/src/shared/lib/events'; + +// #v-ifdef VITE_SENTRY_DSN +// We don't want to track any user data, so we only initialize Sentry in development +// (it's where we have VITE_SENTRY_DSN defined) + +import * as Sentry from '@sentry/browser'; + +// https://github.com/getsentry/sentry-javascript/issues/5289#issuecomment-1368705821 +// @ts-ignore - Just for local development +Sentry.WINDOW.document = { + visibilityState: 'hidden', + addEventListener: () => {}, +}; + +Sentry.init({ + debug: true, + dsn: import.meta.env.VITE_SENTRY_DSN, + release: import.meta.env.VITE_COMMIT_SHA, + environment: import.meta.env.MODE, + integrations: [new Sentry.BrowserTracing()], + tracesSampleRate: 1.0, + ignoreErrors: [/ResizeObserver/, 'ResizeObserver loop limit exceeded', 'Network request failed'], +}); +// #v-endif + +reloadOnUpdate('pages/background'); + +const THROTTLE_INTERVAL_MS = 200; + +declare global { + interface Window { + __shellInternal?: { + appExperience: { + appApiKey: string; + }; + }; + } +} + +chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (sender.tab?.url.startsWith('chrome://')) { + return true; + } + + // #v-ifdef VITE_SENTRY_DSN + const transaction = Sentry.startTransaction({ + name: message.action, + op: 'background', + }); + + Sentry.configureScope((scope) => scope.setSpan(transaction)); + // #v-endif + + console.log(`Received message with action: ${message.action}`); + + if (message.action === Action.PopupOpened) { + handlePopupOpened(sendResponse); + } else if (message.action === Action.GetMintApiKey) { + handleMintAuthentication(sendResponse); + } else if (message.action === Action.DownloadTransactions) { + handleTransactionsDownload(sendResponse); + } else if (message.action === Action.DownloadAllAccountBalances) { + handleDownloadAllAccountBalances(); + } else if (message.action === Action.DebugThrowError) { + throw new Error('Debug error'); + } + + // #v-ifdef VITE_SENTRY_DSN + transaction.finish(); + // #v-endif + + return true; // indicates we will send a response asynchronously +}); + +const handlePopupOpened = async (sendResponse: (args: unknown) => void) => { + const apiKey = await apiKeyStorage.get(); + + if (apiKey) { + sendResponse({ status: ResponseStatus.Success, apiKey }); + } else { + sendResponse({ status: ResponseStatus.RequireAuth }); + } +}; + +const handleMintAuthentication = async (sendResponse: (args: unknown) => void) => { + const [activeMintTab] = await chrome.tabs.query({ + active: true, + url: 'https://mint.intuit.com/*', + }); + + // No active Mint tab, return early + if (!activeMintTab) { + sendResponse({ success: false, error: ErrorCode.MintTabNotFound }); + return; + } + + // Get the API key from the page + const response = await chrome.scripting.executeScript({ + target: { tabId: activeMintTab.id }, + world: 'MAIN', + func: getMintApiKey, + }); + + const [{ result: apiKey }] = response; + + if (apiKey) { + await apiKeyStorage.set(apiKey); + sendResponse({ success: true, key: apiKey }); + } else { + sendResponse({ success: false, error: ErrorCode.MintApiKeyNotFound }); + } +}; + +function getMintApiKey() { + return window.__shellInternal?.appExperience?.appApiKey; +} + +const handleTransactionsDownload = async (sendResponse: (args: unknown) => void) => { + const totalTransactionCount = await fetchTransactionsTotalCount(); + + const pages = await fetchAllDownloadTransactionPages({ totalTransactionCount }); + const csvContent = concatenateCSVPages(pages); + + await chrome.downloads.download({ + url: `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`, + filename: 'mint-transactions.csv', + }); + + // Update state in the background, in case the user closes the popup before the download completes + await stateStorage.patch({ + totalTransactionsCount: totalTransactionCount, + downloadTransactionsStatus: ResponseStatus.Success, + }); + + sendResponse({ success: true, count: totalTransactionCount }); +}; + +/** + * Download all daily balances for all accounts. Since this is an operation that + * may take a while, we will send progress updates to the popup. + */ +const handleDownloadAllAccountBalances = async () => { + try { + const throttledSendDownloadBalancesProgress = throttle( + sendDownloadBalancesProgress, + THROTTLE_INTERVAL_MS, + ); + + const balancesByAccount = await fetchDailyBalancesForAllAccounts({ + onProgress: throttledSendDownloadBalancesProgress, + }); + + // combine CSV for each account into one zip file + const zip = new JSZip(); + balancesByAccount.forEach(({ accountName, balances }) => { + zip.file(`${accountName}.csv`, formatBalancesAsCSV(balances, accountName)); + }); + + const zipFile = await zip.generateAsync({ type: 'base64' }); + + chrome.downloads.download({ + url: `data:application/zip;base64,${zipFile}`, + filename: 'mint-balances.zip', + }); + + chrome.runtime.sendMessage({ + action: Action.DownloadBalancesComplete, + payload: { + outcome: ResponseStatus.Success, + }, + }); + } catch (e) { + console.error(e); + console.log(JSON.stringify(e)); + chrome.runtime.sendMessage({ + action: Action.DownloadBalancesComplete, + payload: { + outcome: ResponseStatus.Error, + }, + }); + } +}; + +const sendDownloadBalancesProgress = (payload) => + chrome.runtime.sendMessage({ + action: Action.DownloadBalancesProgress, + payload, + }); diff --git a/src/pages/popup/Popup.tsx b/src/pages/popup/Popup.tsx new file mode 100644 index 0000000..c49943a --- /dev/null +++ b/src/pages/popup/Popup.tsx @@ -0,0 +1,140 @@ +import { useEffect, useState, useMemo } from 'react'; +import apiKeyStorage from '@src/shared/storages/apiKeyStorage'; +import withSuspense from '@src/shared/hoc/withSuspense'; +import withErrorBoundary from '@src/shared/hoc/withErrorBoundary'; +import { Action, useMessageSender } from '@src/shared/hooks/useMessage'; +import { getUserData } from '@src/shared/lib/auth'; +import { ErrorCode } from '@src/shared/constants/error'; +import PopupContainer from '@src/components/popup/PopupContainer'; +import DefaultButton from '@root/src/components/button/DefaultButton'; +import PopupContext from '@root/src/pages/popup/context'; +import Text from '@root/src/components/Text'; +import stateStorage from '@root/src/shared/storages/stateStorage'; +import ErrorBoundary from '@root/src/components/ErrorBoundary'; + +// #v-ifdef VITE_SENTRY_DSN +// We don't want to track any user data, so we only initialize Sentry in development +// (it's where we have VITE_SENTRY_DSN defined) +import * as Sentry from '@sentry/react'; + +Sentry.init({ + dsn: import.meta.env.VITE_SENTRY_DSN, + environment: import.meta.env.MODE, + release: import.meta.env.VITE_COMMIT_SHA, + tracesSampleRate: 1.0, +}); +// #v-endif + +export enum ResponseStatus { + RequireAuth = 'require_auth', + Error = 'error', + Success = 'success', + Loading = 'loading', +} + +const Popup = () => { + const [showBrokenComponent, setShowBrokenComponent] = useState(false); + const sendMessage = useMessageSender(); + + const [status, setStatus] = useState(ResponseStatus.Loading); + const [errorMessage, setErrorMessage] = useState(null); + + const [userData, setUserData] = useState>({}); + + useEffect(() => { + if (status === ResponseStatus.Loading) { + handlePopupOpened(); + } + }, [status]); + + const resetExtensionState = async () => { + await apiKeyStorage.clear(); + await stateStorage.clear(); + setUserData(null); + setStatus(ResponseStatus.Loading); + }; + + const authenticateUser = async (apiKey: string) => { + try { + const userData = await getUserData(apiKey); + setUserData(userData); + + await apiKeyStorage.set(apiKey); + setStatus(ResponseStatus.Success); + } catch (error) { + setStatus(ResponseStatus.Error); + setErrorMessage( + "We couldn't get your user data. Please ensure you have a tab with the Mint dashboard open.", + ); + } + }; + + const handlePopupOpened = async () => { + const response = await sendMessage<{ status: ResponseStatus; apiKey?: string }>({ + action: Action.PopupOpened, + }); + + if (!response) { + setStatus(ResponseStatus.Error); + return; + } + + const { status, apiKey } = response; + if (status === ResponseStatus.RequireAuth) { + authenticateOnDashboard(); + } else { + await authenticateUser(apiKey); + } + }; + + const authenticateOnDashboard = async () => { + try { + const response = await sendMessage<{ success: boolean; apiKey?: string; error?: ErrorCode }>({ + action: Action.GetMintApiKey, + }); + + await authenticateUser(response.apiKey); + } catch ({ error }) { + if (error === ErrorCode.MintTabNotFound) { + // User hasn't opened the popup in the dashboard, show message + setStatus(ResponseStatus.RequireAuth); + } else if (error === ErrorCode.MintApiKeyNotFound) { + // User is not logged into Mint, show message to open Mint and login + setStatus(ResponseStatus.Error); + setErrorMessage('Please login to Mint and open this popup again.'); + } + } + }; + + const context = useMemo( + () => ({ status, errorMessage, userData }), + [status, errorMessage, userData], + ); + + return ( + + + {import.meta.env.DEV && ( +
+ + 🔨 Debugging Tools + + Reset API key state + setShowBrokenComponent(true)}>Throw error + sendMessage({ action: Action.DebugThrowError })}> + Throw error in service worker + + {showBrokenComponent && } +
+ )} +
+
+ ); +}; + +const BrokenComponent = () => { + throw new Error('Broken component'); + return null; +}; + +export default withErrorBoundary(withSuspense(Popup,
Loading...
), ); diff --git a/src/pages/popup/context.ts b/src/pages/popup/context.ts new file mode 100644 index 0000000..8baf7fc --- /dev/null +++ b/src/pages/popup/context.ts @@ -0,0 +1,20 @@ +import { ResponseStatus } from '@root/src/pages/popup/Popup'; +import { createContext, useContext } from 'react'; + +const PopupContext = createContext<{ + status: ResponseStatus; + errorMessage?: string; + userData?: Partial<{ userName: string }>; +}>(undefined as any); + +export const usePopupContext = () => { + const context = useContext(PopupContext); + + if (!context) { + throw new Error('usePopupContext must be used within PopupContext.Provider'); + } + + return context; +}; + +export default PopupContext; diff --git a/src/pages/popup/index.css b/src/pages/popup/index.css new file mode 100644 index 0000000..30c02a6 --- /dev/null +++ b/src/pages/popup/index.css @@ -0,0 +1,16 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + width: 350px; + position: relative; + margin: 0; + + font-family: "Graphik", -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-weight: 400; + font-size: 16px; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/src/pages/popup/index.html b/src/pages/popup/index.html new file mode 100644 index 0000000..2e476f2 --- /dev/null +++ b/src/pages/popup/index.html @@ -0,0 +1,14 @@ + + + + + + Mint Data Exporter, by Monarch + + + +
+ + + + \ No newline at end of file diff --git a/src/pages/popup/index.tsx b/src/pages/popup/index.tsx new file mode 100644 index 0000000..81a3cf1 --- /dev/null +++ b/src/pages/popup/index.tsx @@ -0,0 +1,18 @@ +import { createRoot } from 'react-dom/client'; +import '@pages/popup/index.css'; +import Popup from '@pages/popup/Popup'; +import refreshOnUpdate from 'virtual:reload-on-update-in-view'; + +refreshOnUpdate('pages/popup'); +refreshOnUpdate('components'); + +function init() { + const appContainer = document.querySelector('#app-container'); + if (!appContainer) { + throw new Error('Cannot find #app-container'); + } + const root = createRoot(appContainer); + root.render(); +} + +init(); diff --git a/src/shared/constants/error.ts b/src/shared/constants/error.ts new file mode 100644 index 0000000..2d0b3d4 --- /dev/null +++ b/src/shared/constants/error.ts @@ -0,0 +1,4 @@ +export enum ErrorCode { + MintTabNotFound = 'ERR_MINT_NOT_FOUND', + MintApiKeyNotFound = 'ERR_MINT_API_KEY_NOT_FOUND', +} diff --git a/src/shared/hoc/withErrorBoundary.tsx b/src/shared/hoc/withErrorBoundary.tsx new file mode 100644 index 0000000..9e4d0ac --- /dev/null +++ b/src/shared/hoc/withErrorBoundary.tsx @@ -0,0 +1,44 @@ +import { Component, ComponentType, ReactElement } from 'react'; +import stateStorage from '@root/src/shared/storages/stateStorage'; + +class ErrorBoundary extends Component< + { + children: ReactElement; + fallback: ReactElement; + }, + { + hasError: boolean; + } +> { + state = { hasError: false }; + + static getDerivedStateFromError() { + return { hasError: true }; + } + + componentDidCatch(error, errorInfo) { + stateStorage.clear(); + console.error(error, errorInfo); + } + + render() { + if (this.state.hasError) { + return this.props.fallback; + } + + return this.props.children; + } +} + +export default function withErrorBoundary>( + Component: ComponentType, + ErrorComponent: ReactElement, +) { + return function WithErrorBoundary(props: T) { + return ( + + + + ); + }; +} diff --git a/src/shared/hoc/withSuspense.tsx b/src/shared/hoc/withSuspense.tsx new file mode 100644 index 0000000..1002dc3 --- /dev/null +++ b/src/shared/hoc/withSuspense.tsx @@ -0,0 +1,14 @@ +import { ComponentType, ReactElement, Suspense } from 'react'; + +export default function withSuspense>( + Component: ComponentType, + SuspenseComponent: ReactElement, +) { + return function WithSuspense(props: T) { + return ( + + + + ); + }; +} diff --git a/src/shared/hooks/useMessage.ts b/src/shared/hooks/useMessage.ts new file mode 100644 index 0000000..34a7e19 --- /dev/null +++ b/src/shared/hooks/useMessage.ts @@ -0,0 +1,62 @@ +import { useRef, useEffect, useCallback } from 'react'; + +export enum Action { + PopupOpened = 'POPUP_OPENED', + GetMintApiKey = 'GET_MINT_API_KEY', + // Sent by the button in the popup to start downloading transactions + RequestTransactionsDownload = 'REQUEST_TRANSACTIONS_DOWNLOAD', + DownloadTransactions = 'DOWNLOAD_TRANSACTIONS', + DownloadAllAccountBalances = 'DOWNLOAD_ALL_ACCOUNT_BALANCES', + DownloadBalancesProgress = 'DOWNLOAD_BALANCES_PROGRESS', + DownloadBalancesComplete = 'DOWNLOAD_BALANCES_COMPLETE', + // Debug actions + DebugThrowError = 'DEBUG_THROW_ERROR', +} + +type Message = { action: Action; payload?: Record }; + +export const useMessageListener = >( + action: Action, + callback: (payload: TPayload) => void | Promise, +) => { + const listenerRef = useRef<(message: Message, sender: unknown, sendResponse: unknown) => void>(); + + useEffect(() => { + // Remove listener if it exists + if (listenerRef.current) { + chrome.runtime.onMessage.removeListener(listenerRef.current); + } + + // Create a new listener + listenerRef.current = (message) => { + if (message.action === action) { + callback(message.payload as TPayload); + } + }; + + chrome.runtime.onMessage.addListener(listenerRef.current); + + return () => { + chrome.runtime.onMessage.removeListener(listenerRef.current); + }; + }, [action, callback]); +}; + +export const useMessageSender = () => { + const sendMessage = useCallback( + >(message: Message) => + new Promise((resolve, reject) => { + chrome.runtime.sendMessage(message, (response: T) => { + if (response?.error) { + reject(response); + return; + } + + resolve(response); + }); + }), + [], + ); + + return sendMessage; +}; diff --git a/src/shared/hooks/useStorage.tsx b/src/shared/hooks/useStorage.tsx new file mode 100644 index 0000000..109e279 --- /dev/null +++ b/src/shared/hooks/useStorage.tsx @@ -0,0 +1,49 @@ +import { useSyncExternalStore } from 'react'; +import { BaseStorage } from '@src/shared/storages/base'; + +type WrappedPromise = ReturnType; +const storageMap: Map, WrappedPromise> = new Map(); + +export default function useStorage< + Storage extends BaseStorage, + Data = Storage extends BaseStorage ? Data : unknown, +>(storage: Storage) { + const _data = useSyncExternalStore(storage.subscribe, storage.getSnapshot); + + if (!storageMap.has(storage)) { + storageMap.set(storage, wrapPromise(storage.get())); + } + + if (_data !== null) { + storageMap.set(storage, { read: () => _data }); + } + + return _data ?? (storageMap.get(storage)!.read() as Data); +} + +function wrapPromise(promise: Promise) { + let status = 'pending'; + let result: R; + const suspender = promise.then( + (r) => { + status = 'success'; + result = r; + }, + (e) => { + status = 'error'; + result = e; + }, + ); + + return { + read() { + if (status === 'pending') { + throw suspender; + } else if (status === 'error') { + throw result; + } else if (status === 'success') { + return result; + } + }, + }; +} diff --git a/src/shared/lib/__tests__/accounts.test.ts b/src/shared/lib/__tests__/accounts.test.ts new file mode 100644 index 0000000..be8c827 --- /dev/null +++ b/src/shared/lib/__tests__/accounts.test.ts @@ -0,0 +1,92 @@ +import { TEST_MINT_API_KEY } from '@root/src/shared/lib/constants'; +import { + fetchAccounts, + fetchDailyBalancesForAllAccounts, + fetchMonthlyBalancesForAccount, + fetchNetWorthBalances, + formatBalancesAsCSV, +} from '../accounts'; + +describe('fetchMonthlyBalancesForAccount', () => { + it('fetches balances by date for asset account', async () => { + const { balancesByDate } = await fetchMonthlyBalancesForAccount({ + accountId: '43237333_1544498', + overrideApiKey: TEST_MINT_API_KEY, + }); + expect(balancesByDate.length).toEqual(141); + }); + + it('fetches balances for debt account', async () => { + const { balancesByDate } = await fetchMonthlyBalancesForAccount({ + accountId: '43237333_2630847', + overrideApiKey: TEST_MINT_API_KEY, + }); + expect(balancesByDate.length).toEqual(141); + }); +}); + +describe('fetchNetWorthBalances', () => { + it('fetches asset and debt balances by date', async () => { + const balancesByDate = await fetchNetWorthBalances({ overrideApiKey: TEST_MINT_API_KEY }); + expect(balancesByDate.length).toEqual(282); + }); +}); + +describe('fetchAccounts', () => { + it('fetches all accounts', async () => { + const accounts = await fetchAccounts({ + overrideApiKey: TEST_MINT_API_KEY, + }); + expect(accounts.length).toEqual(35); + }); +}); + +describe('formatBalancesAsCSV', () => { + it('includes account name if provied', () => { + const result = formatBalancesAsCSV( + [ + { amount: 123.45, date: '2021-01-01', type: '' }, + { amount: 234.56, date: '2021-02-01', type: '' }, + ], + `Mason's Account`, + ); + expect(result).toEqual(`"Date","Amount","Account Name" +"2021-01-01","123.45","Mason's Account" +"2021-02-01","234.56","Mason's Account" +`); + }); + + it('does not include account name if not provided', () => { + const result = formatBalancesAsCSV([ + { amount: 123.45, date: '2021-01-01', type: '' }, + { amount: 234.56, date: '2021-02-01', type: '' }, + ]); + expect(result).toEqual(`"Date","Amount" +"2021-01-01","123.45" +"2021-02-01","234.56" +`); + }); + + it('converts undefined balances to empty string', () => { + const result = formatBalancesAsCSV([ + { + amount: undefined, + date: '2020-01-01', + type: '', + }, + ]); + expect(result).toEqual(`"Date","Amount" +"2020-01-01","" +`); + }); +}); + +describe('fetchDailyBalancesForAllAccounts', () => { + it('spaces requests out', async () => { + const response = await fetchDailyBalancesForAllAccounts({ + overrideApiKey: TEST_MINT_API_KEY, + onProgress: ({ completePercentage }) => console.log(`progress: ${completePercentage}`), + }); + expect(response.length).toBeGreaterThan(0); + }, 60000); +}); diff --git a/src/shared/lib/__tests__/csv.test.ts b/src/shared/lib/__tests__/csv.test.ts new file mode 100644 index 0000000..69b191a --- /dev/null +++ b/src/shared/lib/__tests__/csv.test.ts @@ -0,0 +1,15 @@ +import { formatCSV } from '../csv'; + +describe('formatCSV', () => { + it('formats rows', () => { + const result = formatCSV([ + ['Date', 'Amount'], + ['2020-01-01', 123.45], + ['2020-02-01', 234.56], + ]); + expect(result).toEqual(`"Date","Amount" +"2020-01-01","123.45" +"2020-02-01","234.56" +`); + }); +}); diff --git a/src/shared/lib/__tests__/promises.test.ts b/src/shared/lib/__tests__/promises.test.ts new file mode 100644 index 0000000..c0d68f3 --- /dev/null +++ b/src/shared/lib/__tests__/promises.test.ts @@ -0,0 +1,17 @@ +import delay from '@root/src/shared/lib/delay'; +import { withRateLimit } from '@root/src/shared/lib/promises'; + +describe('withRateLimit', () => { + it('spaces out requests', async () => { + const request = async () => { + await delay(100); + console.log(new Date().getTime()); + }; + + const startTime = new Date().getTime(); + await withRateLimit({ delayMs: 500 })([request, request, request]); + const endTime = new Date().getTime(); + + expect(endTime - startTime).toBeGreaterThan(1000); + }); +}); diff --git a/src/shared/lib/__tests__/retry.test.ts b/src/shared/lib/__tests__/retry.test.ts new file mode 100644 index 0000000..28a592d --- /dev/null +++ b/src/shared/lib/__tests__/retry.test.ts @@ -0,0 +1,43 @@ +import { withRetry } from '../retry'; + +const testFunc = () => { + let counter = 0; + + return async () => { + counter += 1; + + if (counter < 4) { + throw new Error(); + } + + return counter; + }; +}; + +describe('withRetry', () => { + it('retries until successful', async () => { + const funcThatCanThrow = testFunc(); + const result = await withRetry(() => funcThatCanThrow()); + expect(result).toEqual(4); + }); + + it('respsects maxTries', async () => { + const funcThatCanThrow = testFunc(); + await expect(async () => { + await withRetry(() => funcThatCanThrow(), { + maxTries: 3, + }); + }).rejects.toThrowError(); + }); + + it('respects delayMs', async () => { + const funcThatCanThrow = testFunc(); + const startTime = new Date().getTime(); + await withRetry(() => funcThatCanThrow(), { + delayMs: 500, + }); + const endTime = new Date().getTime(); + + expect(endTime - startTime).toBeGreaterThan(500 * 3); + }); +}); diff --git a/src/shared/lib/__tests__/transactions.test.ts b/src/shared/lib/__tests__/transactions.test.ts new file mode 100644 index 0000000..6278b37 --- /dev/null +++ b/src/shared/lib/__tests__/transactions.test.ts @@ -0,0 +1,46 @@ +import { TEST_MINT_API_KEY } from '@root/src/shared/lib/constants'; +import { + fetchTransactionsTotalCount, + fetchDownloadTransactionsPage, + fetchAllDownloadTransactionPages, + concatenateCSVPages, +} from '@root/src/shared/lib/transactions'; + +const TRANSACTION_COUNT = 15506; // total # transactions in this Mint account + +const lineCount = (value: string) => value.split('\n').filter((value) => !!value).length; + +describe('fetchTransactionsTotalCount', () => { + it('fetches total transaction count', async () => { + const totalCount = await fetchTransactionsTotalCount(TEST_MINT_API_KEY); + expect(totalCount).toEqual(TRANSACTION_COUNT); + }); + + it('throws error for invalid api key', async () => { + await expect(async () => { + await fetchTransactionsTotalCount('invalid-api-key'); + }).rejects.toThrowError(); + }); +}); + +describe('fetchDownloadTransactionsPage', () => { + it('fetchs CSV content for transactions', async () => { + const content = await fetchDownloadTransactionsPage({ + limit: 10, + overrideApiKey: TEST_MINT_API_KEY, + }); + expect(lineCount(content)).toEqual(11); // 10 transactions + header row + }); +}); + +describe('full download pipeline', () => { + it('downloads all pages and concatenates CSV content', async () => { + const totalTransactionCount = await fetchTransactionsTotalCount(TEST_MINT_API_KEY); + const pages = await fetchAllDownloadTransactionPages({ + totalTransactionCount, + overrideApiKey: TEST_MINT_API_KEY, + }); + const csvContent = concatenateCSVPages(pages); + expect(lineCount(csvContent)).toEqual(TRANSACTION_COUNT + 1); // 1 additional for CSV header + }); +}); diff --git a/src/shared/lib/accounts.ts b/src/shared/lib/accounts.ts new file mode 100644 index 0000000..a5bfeea --- /dev/null +++ b/src/shared/lib/accounts.ts @@ -0,0 +1,320 @@ +import { DateTime, Interval } from 'luxon'; + +import { makeMintApiRequest } from '@root/src/shared/lib/auth'; +import { + DATE_FILTER_ALL_TIME, + MINT_HEADERS, + MINT_RATE_LIMIT_DELAY_MS, +} from '@root/src/shared/lib/constants'; +import { formatCSV } from '@root/src/shared/lib/csv'; +import { withRetry } from '@root/src/shared/lib/retry'; +import { resolveSequential, withRateLimit } from '@root/src/shared/lib/promises'; + +type TrendEntry = { + amount: number; + date: string; + type: string; +}; + +type TrendsResponse = { + Trend: TrendEntry[]; + // there's more here... +}; + +type ProgressCallback = (progress: { complete: number; total: number }) => void | Promise; + +/** + * Use internal Mint "Trends" API to fetch account balance by month + * for all time. + * + * This is technically a paginated API, but since the limit is 1000 (> 83 years) + * we probably don't need to worry about pagination. + */ +export const fetchMonthlyBalancesForAccount = async ({ + accountId, + offset, + limit, + overrideApiKey, +}: { + accountId: string; + offset?: number; + limit?: number; + overrideApiKey?: string; +}): Promise<{ balancesByDate: TrendEntry[]; reportType: string } | undefined> => { + // we don't have a good way to know if an account is "asset" or "debt", so we just try both reports + // the Mint API returns undefined if the report type doesn't match the account type + const tryReportTypes = ['ASSETS_TIME', 'DEBTS_TIME']; + + for (const reportType of tryReportTypes) { + const response = await fetchTrends({ + reportType, + filters: [makeAccountIdFilter(accountId)], + offset, + limit, + overrideApiKey, + }); + const { Trend: balancesByDate } = await response.json(); + + if (balancesByDate) { + return { balancesByDate, reportType }; + } + } +}; + +/** + * Determine earliest date for which account has balance history, and return monthly intervals from then to now. + */ +const fetchMonthlyIntervalsForAccountHistory = async ({ + accountId, + overrideApiKey, +}: { + accountId: string; + overrideApiKey?: string; +}) => { + // fetch monthly balances so we can get start date + const { balancesByDate: monthlyBalances, reportType } = await withRetry(() => + fetchMonthlyBalancesForAccount({ accountId, overrideApiKey }), + ); + + const startDate = monthlyBalances[0]?.date; + + if (!startDate) { + throw new Error('Unable to determine start date for account history.'); + } + + // then fetch balances for each month in range, since that's the only timeframe that the API will return a balance for each day + const months = Interval.fromDateTimes( + DateTime.fromISO(startDate).startOf('month'), + DateTime.local().endOf('month'), + ).splitBy({ + months: 1, + }) as Interval[]; + + return { months, reportType }; +}; + +/** + * Fetch balance history for each month for an account. + */ +const fetchDailyBalancesForMonthIntervals = async ({ + months, + accountId, + reportType, + overrideApiKey, + onProgress, +}: { + months: Interval[]; + accountId: string; + reportType: string; + overrideApiKey?: string; + onProgress?: ProgressCallback; +}) => { + const counter = { + count: 0, + }; + + const dailyBalancesByMonth = await withRateLimit({ delayMs: MINT_RATE_LIMIT_DELAY_MS })( + months.map( + ({ start, end }) => + () => + withRetry(() => + fetchTrends({ + reportType, + filters: [makeAccountIdFilter(accountId)], + dateFilter: { + type: 'CUSTOM', + startDate: start.toISODate(), + // end is really the start of the next month, so subtract one day + endDate: end.minus({ day: 1 }).toISODate(), + }, + overrideApiKey, + }) + .then((response) => response.json().then(({ Trend }) => Trend)) + .finally(() => { + counter.count += 1; + onProgress?.({ complete: counter.count, total: months.length }); + }), + ), + ), + ); + + const balancesByDate = dailyBalancesByMonth.reduce((acc, balances) => acc.concat(balances), []); + + return balancesByDate; +}; + +export const fetchDailyBalancesForAllAccounts = async ({ + onProgress, + overrideApiKey, +}: { + onProgress?: (progress: { + completedAccounts: number; + totalAccounts: number; + completePercentage: number; + }) => void | Promise; + overrideApiKey?: string; +}) => { + const accounts = await withRetry(() => fetchAccounts({ overrideApiKey })); + + // first, fetch the range of months we need to fetch for each account + const accountsWithMonthsToFetch = await Promise.all( + accounts.map(async ({ id: accountId, name: accountName }) => { + const { months, reportType } = await fetchMonthlyIntervalsForAccountHistory({ + accountId, + overrideApiKey, + }); + return { months, reportType, accountId, accountName }; + }), + ); + + // one per account per month + const totalRequestsToFetch = accountsWithMonthsToFetch.reduce( + (acc, { months }) => acc + months.length, + 0, + ); + + // fetch one account at a time so we don't hit the rate limit + const balancesByAccount = await resolveSequential( + accountsWithMonthsToFetch.map( + ({ accountId, accountName, months, reportType }, accountIndex) => + async () => ({ + balances: await fetchDailyBalancesForMonthIntervals({ + accountId, + months, + reportType, + overrideApiKey, + onProgress: ({ complete }) => { + // this is the progress handler for *each* account, so we need to sum up the results before calling onProgress + + const previousAccounts = accountsWithMonthsToFetch.slice(0, accountIndex); + // since accounts are fetched sequentially, we can assume that all previous accounts have completed all their requests + const previousCompletedRequestCount = previousAccounts.reduce( + (acc, { months }) => acc + months.length, + 0, + ); + const completedRequests = previousCompletedRequestCount + complete; + + onProgress?.({ + completedAccounts: accountIndex, + totalAccounts: accounts.length, + completePercentage: completedRequests / totalRequestsToFetch, + }); + }, + }), + accountName, + }), + ), + ); + + return balancesByAccount; +}; + +/** + * Use internal Mint API to fetch net worth history. Return list of + * balances for type: "ASSET" and type: "DEBT" for each month. + */ +export const fetchNetWorthBalances = async ({ + offset = 0, + limit = 1000, // mint default + overrideApiKey, +}: { + offset?: number; + limit?: number; + overrideApiKey?: string; +}) => { + const response = await fetchTrends({ + reportType: 'NET_WORTH', + offset, + limit, + overrideApiKey, + }); + const { Trend: balancesByDate } = await response.json(); + + return balancesByDate; +}; + +const fetchTrends = ({ + reportType, + filters = [], + dateFilter = DATE_FILTER_ALL_TIME, + offset = 0, + limit = 1000, // mint default + overrideApiKey, +}: { + reportType: string; + filters?: Record[]; + dateFilter?: Record; + offset?: number; + limit?: number; + overrideApiKey?: string; +}) => + makeMintApiRequest( + '/pfm/v1/trends', + { + method: 'POST', + headers: MINT_HEADERS, + body: JSON.stringify({ + reportView: { + type: reportType, + }, + dateFilter, + searchFilters: [ + { + matchAll: true, + filters, + }, + ], + offset, + limit, + }), + }, + overrideApiKey, + ); + +type AccountsResponse = { + Account: { + type: string; + id: string; + name: string; + }[]; +}; + +/** + * Use internal Mint API to fetch all of user's accounts. + */ +export const fetchAccounts = async ({ + offset = 0, + limit = 1000, // mint default + overrideApiKey, +}: { + offset?: number; + limit?: number; + overrideApiKey?: string; +}) => { + const response = await makeMintApiRequest( + `/pfm/v1/accounts?offset=${offset}&limit=${limit}`, + { + headers: MINT_HEADERS, + }, + overrideApiKey, + ); + const { Account: accounts } = await response.json(); + + return accounts; +}; + +export const formatBalancesAsCSV = (balances: TrendEntry[], accountName?: string) => { + const header = ['Date', 'Amount', accountName && 'Account Name'].filter(Boolean); + const rows = balances.map(({ date, amount }) => [ + date, + amount, + ...(accountName ? [accountName] : []), + ]); + + return formatCSV([header, ...rows]); +}; + +const makeAccountIdFilter = (accountId: string) => ({ + type: 'AccountIdFilter', + accountId, +}); diff --git a/src/shared/lib/auth.ts b/src/shared/lib/auth.ts new file mode 100644 index 0000000..c6e6710 --- /dev/null +++ b/src/shared/lib/auth.ts @@ -0,0 +1,46 @@ +import apiKeyStorage from '@src/shared/storages/apiKeyStorage'; + +const MINT_API_BASE_URL = 'https://mint.intuit.com'; + +export const makeAuthorizationHeader = (key: string) => + `Intuit_APIKey intuit_apikey=${key},intuit_apikey_version=1.0`; + +interface TypedResponse extends Response { + json(): Promise; +} + +export const makeMintApiRequest = async ( + path: string, + options: RequestInit, + overrideApiKey?: string, +): Promise> => { + const apiKey = overrideApiKey ?? (await apiKeyStorage.get()); + + if (!apiKey) { + throw new Error('API key not found'); + } + + const response = await fetch(`${MINT_API_BASE_URL}${path}`, { + ...options, + headers: { + ...options.headers, + Authorization: makeAuthorizationHeader(apiKey), + }, + }); + + if (!response.ok) { + throw new Error(`Request failed with status ${response.status}`); + } + + return response; +}; + +export const getUserData = async (overrideApiKey?: string) => { + const response = await makeMintApiRequest<{ userName: string }>( + '/pfm/v1/user', + { method: 'GET' }, + overrideApiKey, + ); + + return response.json(); +}; diff --git a/src/shared/lib/constants.ts b/src/shared/lib/constants.ts new file mode 100644 index 0000000..4779627 --- /dev/null +++ b/src/shared/lib/constants.ts @@ -0,0 +1,16 @@ +export const DATE_FILTER_ALL_TIME = { + type: 'ALL_TIME', +}; + +export const MINT_HEADERS = { + 'content-type': 'application/json', +}; + +export const TEST_MINT_API_KEY = ''; + +export const UTM_URL_PARAMETERS = { + utm_source: 'mint_export_extension', +}; + +// we may need to increase this, need to test more +export const MINT_RATE_LIMIT_DELAY_MS = 50; diff --git a/src/shared/lib/csv.ts b/src/shared/lib/csv.ts new file mode 100644 index 0000000..aec5505 --- /dev/null +++ b/src/shared/lib/csv.ts @@ -0,0 +1,11 @@ +export const formatCSV = (rows: (string | number)[][]) => + rows + .map((row) => + row + .map((val) => `${val ?? ''}`) // make string, replace null/undefined with empty string + .map((val) => val.replace('"', '')) // ensure there are no double quotes in value + .map((val) => `"${val}"`) // wrap each value in double quotes + .join(','), + ) + .join('\n') + .concat('\n'); // at newline at end of string diff --git a/src/shared/lib/delay.ts b/src/shared/lib/delay.ts new file mode 100644 index 0000000..24a5d9a --- /dev/null +++ b/src/shared/lib/delay.ts @@ -0,0 +1,9 @@ +/** + * Awaitable timeout. + * + * Usage: + * await delay(500); + */ +const delay = (delayMs: number) => new Promise((resolve) => setTimeout(resolve, delayMs)); + +export default delay; diff --git a/src/shared/lib/events.ts b/src/shared/lib/events.ts new file mode 100644 index 0000000..2b79947 --- /dev/null +++ b/src/shared/lib/events.ts @@ -0,0 +1,27 @@ +export function throttle any>( + func: T, + limit: number, +): (this: ThisParameterType, ...args: Parameters) => void { + let inThrottle: boolean; + let lastFunc: ReturnType; + let lastRan: number; + + return function (this: ThisParameterType, ...args: Parameters): void { + if (!inThrottle) { + func.apply(this, args); + lastRan = Date.now(); + inThrottle = true; + } else { + clearTimeout(lastFunc); + lastFunc = setTimeout( + () => { + if (Date.now() - lastRan >= limit) { + func.apply(this, args); + lastRan = Date.now(); + } + }, + limit - (Date.now() - lastRan), + ); + } + }; +} diff --git a/src/shared/lib/promises.ts b/src/shared/lib/promises.ts new file mode 100644 index 0000000..062f5b3 --- /dev/null +++ b/src/shared/lib/promises.ts @@ -0,0 +1,42 @@ +import delay from '@root/src/shared/lib/delay'; + +type RateLimitOptions = { + /** Delay between when each request is started. Does not wait for request to finish. */ + delayMs: number; +}; + +/** + * Like Promise.all, except with requests spaced out. + * + * Usage: + * await withRateLimit({ delayMs: 50 })([ + * () => request(), + * () => request(), + * ]) + */ +export const withRateLimit = + (options: RateLimitOptions) => + async (requests: (() => Promise)[]): Promise => { + const { delayMs } = options; + + return Promise.all( + requests.map(async (request, i) => { + await delay(i * delayMs); + return request(); + }), + ); + }; + +/** + * Like Promise.all but resolves one at a time, in order. + */ +export const resolveSequential = async (requests: (() => Promise)[]): Promise => { + const results: T[] = []; + + for (const request of requests) { + const response = await request(); + results.push(response); + } + + return results; +}; diff --git a/src/shared/lib/retry.ts b/src/shared/lib/retry.ts new file mode 100644 index 0000000..afbb6d2 --- /dev/null +++ b/src/shared/lib/retry.ts @@ -0,0 +1,42 @@ +import delay from '@root/src/shared/lib/delay'; + +const DEFAULT_MAX_TRIES = 5; + +type RetryOptions = { + /** Delay between each try. */ + delayMs?: number; + /** Maximum number of tries before rethrowing error. */ + maxTries?: number; +}; + +/** + * Utility function to call function again if Promise rejects. + * + * Usage: + * const result = await withRetry(() => funcThatCanThrow()); + */ +export const withRetry = async ( + handler: () => Promise, + options: RetryOptions = {}, +): Promise => { + const { maxTries = DEFAULT_MAX_TRIES, delayMs } = options; + + try { + const result = await handler(); + return result; + } catch (e) { + if (maxTries <= 1) { + // we've already tried the maximum number of times, so fail and rethrow error + throw e; + } + + if (delayMs) { + await delay(delayMs); + } + + return withRetry(handler, { + ...options, + maxTries: maxTries !== undefined ? maxTries - 1 : undefined, + }); + } +}; diff --git a/src/shared/lib/transactions.ts b/src/shared/lib/transactions.ts new file mode 100644 index 0000000..7e8e9bf --- /dev/null +++ b/src/shared/lib/transactions.ts @@ -0,0 +1,118 @@ +import { makeMintApiRequest } from '@root/src/shared/lib/auth'; +import { DATE_FILTER_ALL_TIME, MINT_HEADERS } from '@root/src/shared/lib/constants'; +import { withRetry } from '@root/src/shared/lib/retry'; + +/** Either due to a bug or something else, this is the maximum number of transactions + * Mint will return from the download endpoint in CSV format. */ +const MINT_MAX_TRANSACTIONS_DOWNLOAD = 10000; + +const DATE_SORT = 'DATE_DESCENDING'; + +/** + * Use internal Mint API to fetch total transaction count for user. + */ +export const fetchTransactionsTotalCount = async (overrideApiKey?: string): Promise => { + const response = await makeMintApiRequest<{ metaData: { totalSize: number } }>( + '/pfm/v1/transactions/search', + { + method: 'POST', + headers: MINT_HEADERS, + body: JSON.stringify({ + limit: 50, + offset: 0, + dateFilter: DATE_FILTER_ALL_TIME, + sort: DATE_SORT, + }), + }, + overrideApiKey, + ); + const { + metaData: { totalSize }, + } = await response.json(); + + return totalSize; +}; + +/** + * Use internal Mint API to fetch transactions CSV. + * Returns a maximum of 10,000 transactions. + */ +export const fetchDownloadTransactionsPage = async ({ + limit = MINT_MAX_TRANSACTIONS_DOWNLOAD, + offset = 0, + overrideApiKey, +}: { + limit?: number; + offset?: number; + overrideApiKey?: string; +}): Promise => { + const response = await makeMintApiRequest( + '/pfm/v1/transactions/search/download', + { + method: 'POST', + headers: MINT_HEADERS, + body: JSON.stringify({ + limit, + offset, + searchFilters: [], + dateFilter: DATE_FILTER_ALL_TIME, + sort: DATE_SORT, + }), + }, + overrideApiKey, + ); + + return response.text(); +}; + +/** + * Use internal Mint API to fetch all transaction CSV pages. + * + * @returns list of CSV content, unmodified. + */ +export const fetchAllDownloadTransactionPages = async ({ + totalTransactionCount, + pageSize = MINT_MAX_TRANSACTIONS_DOWNLOAD, + overrideApiKey, +}: { + totalTransactionCount: number; + pageSize?: number; + overrideApiKey?: string; +}): Promise => { + const pageCount = Math.ceil(totalTransactionCount / pageSize); + + return Promise.all( + [...Array(pageCount).keys()].map((i) => + withRetry( + () => + fetchDownloadTransactionsPage({ + limit: pageSize, + offset: i * pageSize, + overrideApiKey, + }), + { + delayMs: 500, + }, + ), + ), + ); +}; + +/** + * Join together multiple pages of CSV content. Removes the header row + * from all pages except the first one to prevent duplication. + */ +export const concatenateCSVPages = (pages: string[]): string => + pages.reduce((acc, content, i) => { + if (i === 0) { + // keep CSV header row from first page + return acc + content; + } + + // for all other pages, remove first row + const lines = content.split('\n'); + lines.splice(0, 1); + const withoutFirstLine = lines.join('\n'); + + return acc + withoutFirstLine; + }, ''); diff --git a/src/shared/storages/apiKeyStorage.ts b/src/shared/storages/apiKeyStorage.ts new file mode 100644 index 0000000..8391c92 --- /dev/null +++ b/src/shared/storages/apiKeyStorage.ts @@ -0,0 +1,9 @@ +import { BaseStorage, createStorage, StorageType } from '@src/shared/storages/base'; + +const storage = createStorage('auth-storage', undefined, { + storageType: StorageType.Local, +}); + +const apiKeyStorage: BaseStorage = storage; + +export default apiKeyStorage; diff --git a/src/shared/storages/base.ts b/src/shared/storages/base.ts new file mode 100644 index 0000000..8de9f35 --- /dev/null +++ b/src/shared/storages/base.ts @@ -0,0 +1,96 @@ +export enum StorageType { + Local = 'local', + Sync = 'sync', + Managed = 'managed', + Session = 'session', +} + +type ValueOrUpdate = D | ((prev: D) => Promise | D); + +export type BaseStorage = { + get: () => Promise; + set: (value: ValueOrUpdate) => Promise; + getSnapshot: () => D | null; + subscribe: (listener: () => void) => () => void; + patch: (value: Partial) => Promise; + clear: () => Promise; +}; + +export function createStorage( + key: string, + fallback: D, + config?: { storageType?: StorageType }, +): BaseStorage { + let cache: D | null = null; + let listeners: Array<() => void> = []; + const storageType = config?.storageType ?? StorageType.Local; + + const _getDataFromStorage = async (): Promise => { + if (chrome.storage[storageType] === undefined) { + throw new Error( + `Check your storage permission into manifest.json: ${storageType} is not defined`, + ); + } + const value = await chrome.storage[storageType].get([key]); + return value[key] ?? fallback; + }; + + const _emitChange = () => { + listeners.forEach((listener) => listener()); + }; + + const set = async (valueOrUpdate: ValueOrUpdate) => { + if (typeof valueOrUpdate === 'function') { + // eslint-disable-next-line no-prototype-builtins + if (valueOrUpdate.hasOwnProperty('then')) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + cache = await valueOrUpdate(cache); + } else { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + cache = valueOrUpdate(cache); + } + } else { + cache = valueOrUpdate; + } + await chrome.storage[storageType].set({ [key]: cache }); + _emitChange(); + }; + + const patch = async (value: Partial) => { + await set((prev) => ({ ...prev, ...value })); + }; + + const clear = async () => { + await chrome.storage[storageType].remove(key); + console.log(`Storage ${key} cleared`); + cache = fallback; + _emitChange(); + }; + + const subscribe = (listener: () => void) => { + listeners = [...listeners, listener]; + return () => { + listeners = listeners.filter((l) => l !== listener); + }; + }; + + const getSnapshot = () => { + return cache; + }; + + _getDataFromStorage().then((data) => { + cache = data; + _emitChange(); + }); + + return { + get: _getDataFromStorage, + set, + getSnapshot, + subscribe, + patch, + clear, + }; +} diff --git a/src/shared/storages/stateStorage.ts b/src/shared/storages/stateStorage.ts new file mode 100644 index 0000000..4edb9f8 --- /dev/null +++ b/src/shared/storages/stateStorage.ts @@ -0,0 +1,36 @@ +import { createStorage, StorageType } from '@src/shared/storages/base'; + +type State = { + currentPage: string | undefined; + // Transactions + downloadTransactionsStatus: string; // ResponseStatus + totalTransactionsCount: number; + + // Balances + downloadAccountBalanceHistoryStatus: string; // ResponseStatus + downloadBalancesProgress: { + complete: number; + total: number; + }; + totalAccountsCount: number; +}; + +const stateStorage = createStorage( + 'state-storage', + { + currentPage: undefined, + downloadTransactionsStatus: undefined, + totalTransactionsCount: undefined, + downloadAccountBalanceHistoryStatus: undefined, + totalAccountsCount: undefined, + downloadBalancesProgress: { + complete: 0, + total: 0, + }, + }, + { + storageType: StorageType.Local, + }, +); + +export default stateStorage; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..1a3d610 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,95 @@ +/** @type {import('tailwindcss').Config} */ + +export default { + content: ['./src/pages/popup/**/*.{tsx,html}', './src/components/**/*.tsx'], + theme: { + extend: { + spacing: { + xxxsmall: '2px', + xxsmall: '4px', + xsmall: '8px', + small: '12px', + medium: '14px', + default: '16px', + large: '20px', + xlarge: '24px', + xxlarge: '32px', + xxxlarge: '48px', + xxxxlarge: '64px', + gutter: '24px', // used for spacing between containers + }, + borderRadius: { + xxsmall: '2px', + xsmall: '3px', + small: '4px', + medium: '8px', + large: '12px', + xlarge: '16px', + }, + colors: { + text: '#082864', + textLight: '#7886A3', + textWhite: '#FFFFFF', + // ----- Primary Palette ----- // + navy: '#1348A5', + navyDark: '#103D8C', + navyLight: '#2B5AAE', + navyFocus: '#D0DAED', + navyBackground: '#E7EDF6', + orange: '#FF7369', + orangeDark: '#FF685F', + orangeLight: '#FF7E73', + orangeFocus: '#FFE3E1', + orangeBackground: '#FFF1F0', + orangeText: '#F05C54', + yellow: '#FFD278', + yellowDark: '#FFCE6C', + yellowLight: '#FFD684', + yellowFocus: '#FFF6E4', + yellowBackground: '#FFFAF1', + yellowText: '#BC883F', + blue: '#32AAF0', + blueDark: '#2DA2EE', + blueLight: '#37B2F1', + blueFocus: '#D6EEFC', + blueBackground: '#EAF6FD', + blueText: '#3D92DE', + iosDefaultBlue: '#007AFF', + // ----- Gray Variations ----- // + black: '#082864', + trueBlack: '#000000', + grayDark: '#7886A3', + gray: '#C8D2E1', + grayLight: '#DAE1EA', + grayFocus: '#E4E9F0', + grayBackground: '#F0F4F8', + grayLightBackground: '#F7F8FB', + white: '#FFFFFF', + // ----- Secondary Palette ----- // + red: '#F0648C', + redDark: '#EE5A81', + redLight: '#F16E97', + redFocus: '#FCE0E8', + redBackground: '#FDEFF3', + redText: '#ED5685', + green: '#19D2A5', + greenDark: '#17CE9C', + greenLight: '#1BD6AE', + greenFocus: '#D1F6ED', + greenBackground: '#E8FAF6', + greenText: '#489D8C', + greenSpecial: '#00A6A4', + teal: '#91DCEB', + purple: '#6E87F0', + purpleBackground: '#E2E7FC', + lime: '#CDDC39', + limeBackground: '#F5F8D7', + pink: '#EA80FC', + pinkBackground: '#FBE6FE', + indigo: '#3D5AFE', + indigoBackground: '#D8DEFF', + }, + }, + }, + plugins: [], +}; diff --git a/test-utils/jest.setup.js b/test-utils/jest.setup.js new file mode 100644 index 0000000..18d6788 --- /dev/null +++ b/test-utils/jest.setup.js @@ -0,0 +1,7 @@ +// Do what you need to set up your test + +// polyfill fetch api for node +require('isomorphic-fetch'); + +// mock auth storage because chrome environment does not exist +jest.mock('../src/shared/storages/apiKeyStorage', () => ({})); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c574515 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,55 @@ +{ + "compilerOptions": { + "noEmit": true, + "baseUrl": ".", + "allowJs": false, + "target": "esnext", + "module": "esnext", + "jsx": "react-jsx", + "skipLibCheck": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "types": [ + "vite/client", + "node" + ], + "noFallthroughCasesInSwitch": true, + "allowSyntheticDefaultImports": true, + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "forceConsistentCasingInFileNames": true, + "typeRoots": [ + "./src/global.d.ts" + ], + "paths": { + "@root/*": [ + "./*" + ], + "@src/*": [ + "src/*" + ], + "@assets/*": [ + "src/assets/*" + ], + "@pages/*": [ + "src/pages/*" + ], + "virtual:reload-on-update-in-background-script": [ + "./src/global.d.ts" + ], + "virtual:reload-on-update-in-view": [ + "./src/global.d.ts" + ] + } + }, + "include": [ + "src", + "utils", + "vite.config.ts", + "node_modules/@types" + ] +} \ No newline at end of file diff --git a/utils/check-ext-status.cjs b/utils/check-ext-status.cjs new file mode 100644 index 0000000..cd44c5e --- /dev/null +++ b/utils/check-ext-status.cjs @@ -0,0 +1,42 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +/** + * Checks whether there's an extension draft under review + * on the Chrome Web Store for the Beta version. + */ + +require('dotenv').config(); + +const { + GOOGLE_CLIENT_ID: clientId, + GOOGLE_CLIENT_SECRET: clientSecret, + GOOGLE_REFRESH_TOKEN: refreshToken, + EXTENSION_ID: extensionId, +} = process.env; + +if (!clientId || !clientSecret || !refreshToken) { + throw new Error( + `Missing credentials. Ensure you have defined the following environment ` + + `variables: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN`, + ); +} + +const run = async ({ core }) => { + const { default: chromeWebstoreUpload } = await import('chrome-webstore-upload'); + const store = chromeWebstoreUpload({ extensionId, clientId, clientSecret, refreshToken }); + const existingDraft = await store.get('DRAFT'); + + let status = 'no'; + + if (existingDraft) { + console.log('Extension draft exists'); + console.log(existingDraft); + status = 'yes'; + } else { + console.log('Extension draft does not exist. Continuing with upload.'); + } + + core.setOutput('status', status); +}; + +module.exports = { run }; diff --git a/utils/log.ts b/utils/log.ts new file mode 100644 index 0000000..71b9fe5 --- /dev/null +++ b/utils/log.ts @@ -0,0 +1,52 @@ +type ColorType = 'success' | 'info' | 'error' | 'warning' | keyof typeof COLORS; +type ValueOf = T[keyof T]; + +export default function colorLog(message: string, type?: ColorType) { + let color: ValueOf; + + switch (type) { + case 'success': + color = COLORS.FgGreen; + break; + case 'info': + color = COLORS.FgBlue; + break; + case 'error': + color = COLORS.FgRed; + break; + case 'warning': + color = COLORS.FgYellow; + break; + default: + color = COLORS[type]; + break; + } + + console.log(color, message); +} + +const COLORS = { + Reset: '\x1b[0m', + Bright: '\x1b[1m', + Dim: '\x1b[2m', + Underscore: '\x1b[4m', + Blink: '\x1b[5m', + Reverse: '\x1b[7m', + Hidden: '\x1b[8m', + FgBlack: '\x1b[30m', + FgRed: '\x1b[31m', + FgGreen: '\x1b[32m', + FgYellow: '\x1b[33m', + FgBlue: '\x1b[34m', + FgMagenta: '\x1b[35m', + FgCyan: '\x1b[36m', + FgWhite: '\x1b[37m', + BgBlack: '\x1b[40m', + BgRed: '\x1b[41m', + BgGreen: '\x1b[42m', + BgYellow: '\x1b[43m', + BgBlue: '\x1b[44m', + BgMagenta: '\x1b[45m', + BgCyan: '\x1b[46m', + BgWhite: '\x1b[47m', +} as const; diff --git a/utils/manifest-parser/index.ts b/utils/manifest-parser/index.ts new file mode 100644 index 0000000..cd7594d --- /dev/null +++ b/utils/manifest-parser/index.ts @@ -0,0 +1,35 @@ +type Manifest = chrome.runtime.ManifestV3; + +class ManifestParser { + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + static convertManifestToString(manifest: Manifest): string { + if (process.env.__FIREFOX__) { + manifest = this.convertToFirefoxCompatibleManifest(manifest); + } + return JSON.stringify(manifest, null, 2); + } + + static convertToFirefoxCompatibleManifest(manifest: Manifest) { + const manifestCopy = { + ...manifest, + } as { [key: string]: unknown }; + + manifestCopy.background = { + scripts: [manifest.background?.service_worker], + type: 'module', + }; + manifestCopy.options_ui = { + page: manifest.options_page, + browser_style: false, + }; + manifestCopy.content_security_policy = { + extension_pages: "script-src 'self'; object-src 'self'", + }; + delete manifestCopy.options_page; + return manifestCopy as Manifest; + } +} + +export default ManifestParser; diff --git a/utils/plugins/add-hmr.ts b/utils/plugins/add-hmr.ts new file mode 100644 index 0000000..4b9b813 --- /dev/null +++ b/utils/plugins/add-hmr.ts @@ -0,0 +1,47 @@ +import * as path from 'path'; +import { readFileSync } from 'fs'; +import type { PluginOption } from 'vite'; + +const isDev = process.env.__DEV__ === 'true'; + +const DUMMY_CODE = `export default function(){};`; + +function getInjectionCode(fileName: string): string { + return readFileSync(path.resolve(__dirname, '..', 'reload', 'injections', fileName), { encoding: 'utf8' }); +} + +type Config = { + background?: boolean; + view?: boolean; +}; + +export default function addHmr(config?: Config): PluginOption { + const { background = false, view = true } = config || {}; + const idInBackgroundScript = 'virtual:reload-on-update-in-background-script'; + const idInView = 'virtual:reload-on-update-in-view'; + + const scriptHmrCode = isDev ? getInjectionCode('script.js') : DUMMY_CODE; + const viewHmrCode = isDev ? getInjectionCode('view.js') : DUMMY_CODE; + + return { + name: 'add-hmr', + resolveId(id) { + if (id === idInBackgroundScript || id === idInView) { + return getResolvedId(id); + } + }, + load(id) { + if (id === getResolvedId(idInBackgroundScript)) { + return background ? scriptHmrCode : DUMMY_CODE; + } + + if (id === getResolvedId(idInView)) { + return view ? viewHmrCode : DUMMY_CODE; + } + }, + }; +} + +function getResolvedId(id: string) { + return '\0' + id; +} diff --git a/utils/plugins/custom-dynamic-import.ts b/utils/plugins/custom-dynamic-import.ts new file mode 100644 index 0000000..6717fd1 --- /dev/null +++ b/utils/plugins/custom-dynamic-import.ts @@ -0,0 +1,19 @@ +import type { PluginOption } from 'vite'; + +export default function customDynamicImport(): PluginOption { + return { + name: 'custom-dynamic-import', + renderDynamicImport({ moduleId }) { + if (!moduleId.includes('node_modules') && process.env.__FIREFOX__) { + return { + left: `import(browser.runtime.getURL('./') + `, + right: ".split('../').join(''));", + }; + } + return { + left: 'import(', + right: ')', + }; + }, + }; +} diff --git a/utils/plugins/make-manifest.ts b/utils/plugins/make-manifest.ts new file mode 100644 index 0000000..2cdb801 --- /dev/null +++ b/utils/plugins/make-manifest.ts @@ -0,0 +1,61 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import colorLog from '../log'; +import ManifestParser from '../manifest-parser'; +import type { PluginOption } from 'vite'; + +const { resolve } = path; + +const distDir = resolve(__dirname, '..', '..', 'dist'); +const publicDir = resolve(__dirname, '..', '..', 'public'); + +const isBetaVersion = process.env.IS_BETA === '1'; + +export default function makeManifest( + manifest: chrome.runtime.ManifestV3, + config: { isDev: boolean; contentScriptCssKey?: string }, +): PluginOption { + function makeManifest(to: string) { + if (!fs.existsSync(to)) { + fs.mkdirSync(to); + } + + const manifestPath = resolve(to, 'manifest.json'); + + // https://developer.chrome.com/docs/extensions/migrating/publish-mv3/ + if (isBetaVersion) { + manifest.name += ' BETA'; + manifest.version += process.env.GITHUB_RUN_NUMBER ? `.${process.env.GITHUB_RUN_NUMBER}` : ''; + manifest.description += '\nTHIS EXTENSION IS FOR BETA TESTING'; + + manifest.action.default_icon = 'icon-beta-34.png'; + manifest.icons['128'] = 'icon-beta-128.png'; + } + + // Naming change for cache invalidation + if (config.contentScriptCssKey && !!manifest.content_scripts) { + manifest.content_scripts.forEach((script) => { + script.css = script.css.map((css) => css.replace('', config.contentScriptCssKey)); + }); + } + + fs.writeFileSync(manifestPath, ManifestParser.convertManifestToString(manifest)); + + colorLog(`Manifest file copy complete: ${manifestPath}`, 'success'); + } + + return { + name: 'make-manifest', + buildStart() { + if (config.isDev) { + makeManifest(distDir); + } + }, + buildEnd() { + if (config.isDev) { + return; + } + makeManifest(publicDir); + }, + }; +} diff --git a/utils/plugins/watch-rebuild.ts b/utils/plugins/watch-rebuild.ts new file mode 100644 index 0000000..14a9605 --- /dev/null +++ b/utils/plugins/watch-rebuild.ts @@ -0,0 +1,16 @@ +import type { PluginOption } from 'vite'; +import { resolve } from 'path'; + +const rootDir = resolve(__dirname, '..', '..'); +const manifestFile = resolve(rootDir, 'manifest.ts'); +const viteConfigFile = resolve(rootDir, 'vite.config.ts'); + +export default function watchRebuild(): PluginOption { + return { + name: 'watch-rebuild', + async buildStart() { + this.addWatchFile(manifestFile); + this.addWatchFile(viteConfigFile); + }, + }; +} diff --git a/utils/reload/constant.ts b/utils/reload/constant.ts new file mode 100644 index 0000000..548669d --- /dev/null +++ b/utils/reload/constant.ts @@ -0,0 +1,5 @@ +export const LOCAL_RELOAD_SOCKET_PORT = 8081; +export const LOCAL_RELOAD_SOCKET_URL = `ws://localhost:${LOCAL_RELOAD_SOCKET_PORT}`; +export const UPDATE_PENDING_MESSAGE = 'wait_update'; +export const UPDATE_REQUEST_MESSAGE = 'do_update'; +export const UPDATE_COMPLETE_MESSAGE = 'done_update'; diff --git a/utils/reload/initReloadClient.ts b/utils/reload/initReloadClient.ts new file mode 100644 index 0000000..6562662 --- /dev/null +++ b/utils/reload/initReloadClient.ts @@ -0,0 +1,52 @@ +import { + LOCAL_RELOAD_SOCKET_URL, + UPDATE_COMPLETE_MESSAGE, + UPDATE_PENDING_MESSAGE, + UPDATE_REQUEST_MESSAGE, +} from './constant'; +import MessageInterpreter from './interpreter'; + +let needToUpdate = false; + +export default function initReloadClient({ + watchPath, + onUpdate, +}: { + watchPath: string; + onUpdate: () => void; +}): WebSocket { + const socket = new WebSocket(LOCAL_RELOAD_SOCKET_URL); + + function sendUpdateCompleteMessage() { + socket.send(MessageInterpreter.send({ type: UPDATE_COMPLETE_MESSAGE })); + } + + socket.addEventListener('message', event => { + const message = MessageInterpreter.receive(String(event.data)); + + switch (message.type) { + case UPDATE_REQUEST_MESSAGE: { + if (needToUpdate) { + sendUpdateCompleteMessage(); + needToUpdate = false; + onUpdate(); + } + return; + } + case UPDATE_PENDING_MESSAGE: { + if (!needToUpdate) { + needToUpdate = message.path.includes(watchPath); + } + return; + } + } + }); + + socket.onclose = () => { + console.warn( + `Reload server disconnected.\nPlease check if the WebSocket server is running properly on ${LOCAL_RELOAD_SOCKET_URL}. This feature detects changes in the code and helps the browser to reload the extension or refresh the current tab.`, + ); + }; + + return socket; +} diff --git a/utils/reload/initReloadServer.ts b/utils/reload/initReloadServer.ts new file mode 100644 index 0000000..472a961 --- /dev/null +++ b/utils/reload/initReloadServer.ts @@ -0,0 +1,65 @@ +import { WebSocket, WebSocketServer } from 'ws'; +import chokidar from 'chokidar'; +import { debounce } from './utils'; +import { + LOCAL_RELOAD_SOCKET_PORT, + LOCAL_RELOAD_SOCKET_URL, + UPDATE_COMPLETE_MESSAGE, + UPDATE_PENDING_MESSAGE, + UPDATE_REQUEST_MESSAGE, +} from './constant'; +import MessageInterpreter from './interpreter'; + +const clientsThatNeedToUpdate: Set = new Set(); + +function initReloadServer() { + const wss = new WebSocketServer({ port: LOCAL_RELOAD_SOCKET_PORT }); + + wss.on('listening', () => console.log(`[HRS] Server listening at ${LOCAL_RELOAD_SOCKET_URL}`)); + + wss.on('connection', ws => { + clientsThatNeedToUpdate.add(ws); + + ws.addEventListener('close', () => clientsThatNeedToUpdate.delete(ws)); + ws.addEventListener('message', event => { + const message = MessageInterpreter.receive(String(event.data)); + if (message.type === UPDATE_COMPLETE_MESSAGE) { + ws.close(); + } + }); + }); +} + +/** CHECK:: src file was updated **/ +const debounceSrc = debounce(function (path: string) { + // Normalize path on Windows + const pathConverted = path.replace(/\\/g, '/'); + clientsThatNeedToUpdate.forEach((ws: WebSocket) => + ws.send( + MessageInterpreter.send({ + type: UPDATE_PENDING_MESSAGE, + path: pathConverted, + }), + ), + ); + // Delay waiting for public assets to be copied +}, 400); +chokidar.watch('src').on('all', (event, path) => debounceSrc(path)); + +/** CHECK:: build was completed **/ +const debounceDist = debounce(() => { + clientsThatNeedToUpdate.forEach((ws: WebSocket) => { + ws.send(MessageInterpreter.send({ type: UPDATE_REQUEST_MESSAGE })); + }); +}, 100); +chokidar.watch('dist').on('all', event => { + // Ignore unlink, unlinkDir and change events + // that happen in beginning of build:watch and + // that will cause ws.send() if it takes more than 400ms + // to build (which it might). This fixes: + // https://github.com/Jonghakseo/chrome-extension-boilerplate-react-vite/issues/100 + if (event !== 'add' && event !== 'addDir') return; + debounceDist(); +}); + +initReloadServer(); diff --git a/utils/reload/injections/script.ts b/utils/reload/injections/script.ts new file mode 100644 index 0000000..d02ac7d --- /dev/null +++ b/utils/reload/injections/script.ts @@ -0,0 +1,12 @@ +import initReloadClient from '../initReloadClient'; + +export default function addHmrIntoScript(watchPath: string) { + initReloadClient({ + watchPath, + onUpdate: () => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + chrome.runtime.reload(); + }, + }); +} diff --git a/utils/reload/injections/view.ts b/utils/reload/injections/view.ts new file mode 100644 index 0000000..f673562 --- /dev/null +++ b/utils/reload/injections/view.ts @@ -0,0 +1,29 @@ +import initReloadClient from '../initReloadClient'; + +export default function addHmrIntoView(watchPath: string) { + let pendingReload = false; + + initReloadClient({ + watchPath, + onUpdate: () => { + // disable reload when tab is hidden + if (document.hidden) { + pendingReload = true; + return; + } + reload(); + }, + }); + + // reload + function reload(): void { + pendingReload = false; + window.location.reload(); + } + + // reload when tab is visible + function reloadWhenTabIsVisible(): void { + !document.hidden && pendingReload && reload(); + } + document.addEventListener('visibilitychange', reloadWhenTabIsVisible); +} diff --git a/utils/reload/interpreter/index.ts b/utils/reload/interpreter/index.ts new file mode 100644 index 0000000..2ef2318 --- /dev/null +++ b/utils/reload/interpreter/index.ts @@ -0,0 +1,13 @@ +import type { ReloadMessage, SerializedMessage } from './types'; + +export default class MessageInterpreter { + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + static send(message: ReloadMessage): SerializedMessage { + return JSON.stringify(message); + } + static receive(serializedMessage: SerializedMessage): ReloadMessage { + return JSON.parse(serializedMessage); + } +} diff --git a/utils/reload/interpreter/types.ts b/utils/reload/interpreter/types.ts new file mode 100644 index 0000000..831010a --- /dev/null +++ b/utils/reload/interpreter/types.ts @@ -0,0 +1,15 @@ +import { UPDATE_COMPLETE_MESSAGE, UPDATE_PENDING_MESSAGE, UPDATE_REQUEST_MESSAGE } from '../constant'; + +type UpdatePendingMessage = { + type: typeof UPDATE_PENDING_MESSAGE; + path: string; +}; + +type UpdateRequestMessage = { + type: typeof UPDATE_REQUEST_MESSAGE; +}; + +type UpdateCompleteMessage = { type: typeof UPDATE_COMPLETE_MESSAGE }; + +export type SerializedMessage = string; +export type ReloadMessage = UpdateCompleteMessage | UpdateRequestMessage | UpdatePendingMessage; diff --git a/utils/reload/rollup.config.ts b/utils/reload/rollup.config.ts new file mode 100644 index 0000000..99ec592 --- /dev/null +++ b/utils/reload/rollup.config.ts @@ -0,0 +1,28 @@ +import typescript from '@rollup/plugin-typescript'; + +const plugins = [typescript()]; + +export default [ + { + plugins, + input: 'utils/reload/initReloadServer.ts', + output: { + file: 'utils/reload/initReloadServer.js', + }, + external: ['ws', 'chokidar', 'timers'], + }, + { + plugins, + input: 'utils/reload/injections/script.ts', + output: { + file: 'utils/reload/injections/script.js', + }, + }, + { + plugins, + input: 'utils/reload/injections/view.ts', + output: { + file: 'utils/reload/injections/view.js', + }, + }, +]; diff --git a/utils/reload/utils.ts b/utils/reload/utils.ts new file mode 100644 index 0000000..3bcf12f --- /dev/null +++ b/utils/reload/utils.ts @@ -0,0 +1,9 @@ +import { clearTimeout } from 'timers'; + +export function debounce(callback: (...args: A) => void, delay: number) { + let timer: NodeJS.Timeout; + return function (...args: A) { + clearTimeout(timer); + timer = setTimeout(() => callback(...args), delay); + }; +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..723650a --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,91 @@ +import { sentryVitePlugin } from '@sentry/vite-plugin'; +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import path, { resolve } from 'path'; +import makeManifest from './utils/plugins/make-manifest'; +import customDynamicImport from './utils/plugins/custom-dynamic-import'; +import addHmr from './utils/plugins/add-hmr'; +import watchRebuild from './utils/plugins/watch-rebuild'; +import manifest from './manifest'; +import ConditionalCompile from 'vite-plugin-conditional-compiler'; + +const rootDir = resolve(__dirname); +const srcDir = resolve(rootDir, 'src'); +const pagesDir = resolve(srcDir, 'pages'); +const assetsDir = resolve(srcDir, 'assets'); +const outDir = resolve(rootDir, 'dist'); +const publicDir = resolve(rootDir, 'public'); + +const isDev = process.env.__DEV__ === 'true'; +const isProduction = !isDev; + +// ENABLE HMR IN BACKGROUND SCRIPT +const enableHmrInBackgroundScript = true; + +export default defineConfig({ + resolve: { + alias: { + '@root': rootDir, + '@src': srcDir, + '@assets': assetsDir, + '@pages': pagesDir, + }, + }, + plugins: [ + ConditionalCompile(), + react(), + makeManifest(manifest, { + isDev, + contentScriptCssKey: regenerateCacheInvalidationKey(), + }), + customDynamicImport(), + addHmr({ background: enableHmrInBackgroundScript, view: true }), + watchRebuild(), + isProduction && + process.env.SENTRY_DSN && + sentryVitePlugin({ + org: 'monarch', + project: 'mint-data-exporter', + telemetry: false, + }), + ], + publicDir, + build: { + outDir, + minify: isProduction, + modulePreload: false, + reportCompressedSize: isProduction, + rollupOptions: { + input: { + background: resolve(pagesDir, 'background', 'index.ts'), + popup: resolve(pagesDir, 'popup', 'index.html'), + }, + output: { + entryFileNames: 'src/pages/[name]/index.js', + chunkFileNames: isDev ? 'assets/js/[name].js' : 'assets/js/[name].[hash].js', + assetFileNames: (assetInfo) => { + const { dir, name: _name } = path.parse(assetInfo.name); + const assetFolder = dir.split('/').at(-1); + const name = assetFolder + firstUpperCase(_name); + return `assets/[ext]/${name}.chunk.[ext]`; + }, + }, + }, + sourcemap: isProduction, + }, +}); + +function firstUpperCase(str: string) { + const firstAlphabet = new RegExp(/( |^)[a-z]/, 'g'); + return str.toLowerCase().replace(firstAlphabet, (L) => L.toUpperCase()); +} + +let cacheInvalidationKey: string = generateKey(); +function regenerateCacheInvalidationKey() { + cacheInvalidationKey = generateKey(); + return cacheInvalidationKey; +} + +function generateKey(): string { + return `${(Date.now() / 100).toFixed()}`; +}